#azure #asp.net-core-webapi #azure-blob-storage #file-watcher #azure-appservice
#azure #asp.net-core-webapi #azure-blob-хранилище #наблюдатель за файлами #azure-appservice
Вопрос:
У меня есть сетевое местоположение, куда каждый час сбрасывается файл csv. Мне нужно скопировать этот файл в большой двоичный объект Azure. Как мне узнать, что файл был загружен на этот сетевой диск. Есть ли в Azure что-то вроде средства просмотра файлов, которое отслеживает это сетевое местоположение? Кроме того, возможно ли скопировать файл из сетевого расположения в большой двоичный объект Azure с помощью кода?
Я использую API .net core, развернутые в службе приложений Azure.
Пожалуйста, предложите возможное решение.
Комментарии:
1. Не могли бы вы, пожалуйста, сказать мне, является ли сетевой диск службой Azure, подобной Azure file, или нет? Если это служба Azure, мы могли бы использовать веб-задание Azure App Services или службу функций Azure для мониторинга сетевого местоположения.
2. Нет. Это локальное расположение общего диска. Это похоже на «\ network sharedfolders csvfiles»
3. Насколько я знаю, если ваше приложение развернуто в веб-приложении Azure, это означает, что вы могли бы получить доступ к местоположению общего диска с помощью приложения, размещенного в Azure. Кроме того, нет службы Azure, которая могла бы отслеживать сетевой ресурс.
Ответ №1:
Вы можете использовать Azure Event Grid, но на сегодняшний день Event Grid не поддерживает общий файловый ресурс Azure.
Поскольку ваш файловый ресурс находится в режиме on-prem, единственный способ, который я вижу, заключается в том, что вы можете написать пользовательский издатель, который может запускаться в режиме on-prem и использует Azure Event Grid для отправки события в Azure Event Grid, а подписчик, которым может быть функция Azure, выполняет работу, которую вы хотите, чтобы она выполняла.
https://learn.microsoft.com/en-us/azure/event-grid/custom-event-quickstart-portal
Но это будет только событие, а не сам файл, который был добавлен изменен, и для этого вам также придется загрузить сам файл в Azure для обработки. Поскольку описанный выше способ требует от вас выполнения двух вещей, я бы рекомендовал запустить пользовательский код на-prem, который запускает CRON job like и ищет новый или отредактированный файл, а затем загружает в хранилище больших двоичных объектов Azure, а затем выполняет функцию Azure для выполнения вашей задачи обработки.
Ответ №2:
Поскольку файлы находятся в готовом состоянии, вы можете использовать powershell для мониторинга папки на предмет новых файлов. Затем запустите событие для загрузки файла в большой двоичный объект Azure.
Здесь есть видео, показывающее, как это сделать: https://www.youtube.com/watch?v=Usih7UywZYA
Изменения, которые вам необходимо внести, следующие:
- замените действие загрузкой в azure https://argonsys.com/microsoft-cloud/library/how-to-upload-files-to-azure-blob-storage-using-powershell-and-azcopy/
- Запустите powershell в контексте пользователя, который может загружать файлы