Есть ли способ узнать, был ли файл загружен на сетевой диск в Azure

#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

Изменения, которые вам необходимо внести, следующие: