Как загрузить ZIP-файл в Azure Blob, а затем распаковать его там

У меня есть много zip-файлов, в которых будет несколько папок и более 50 файлов. Как я могу загрузить эти ZIP-файлы в Azure BLOB, а затем распаковать его там.

Разархивирование файла на сервере и загрузка файлов в него один за другим в лазурный блоб будет трудоемким процессом.

Есть ли у Azure простой способ добиться этого или есть обходной путь?

Я реализую это в PHP.

4

Решение

Простой ответ — хранилище BLOB-объектов Azure не разархивирует вас. Это то, что вам нужно сделать самостоятельно. Как вы это делаете, зависит от вас.

Одна возможность (как вы упомянули), что вы загружаете zip-файлы на свой сервер, распаковываете их туда, а затем загружаете отдельные файлы.

Другая возможность — это выполнить разархивирование в фоновом режиме, если вас беспокоит обработка, происходящая на веб-сервере. При таком подходе вы просто загрузите zip-файлы в хранилище BLOB-объектов. Затем с помощью некоторого фонового процесса (например, веб-задания, функции, рабочие роли или виртуальные машины) вы можете загрузить эти zip-файлы, разархивировать их, а затем повторно загрузить эти отдельные файлы.

Чтобы запустить фоновый процесс по требованию, после загрузки zip-файла вы можете просто написать сообщение в очереди, сообщающее фоновому процессу о загрузке zip-файла и начать процесс разархивирования.

3

Другие решения

Как вы проб. уже найдены по всему Интернету, невозможно запускать рабочие нагрузки ВНУТРИ серверов хранения … но:
Вы можете написать функция Azure для FileWatch вашей учетной записи хранения, и распаковать файлы для вас, а затем загрузить их

2

Как упоминает @Gaurav, распаковка не поддерживается наивно. Был элемент обратной связи включить это как функцию, но она была отклонена. Я могу придумать две альтернативы, которые могут представлять интерес.

1) Создайте фабрику данных Azure таможенная деятельность это делает расстегивание молнии. Когда файлы загружаются во временную папку, вы можете затем распаковать их в конвейер и записать их в контейнер приложения. Для этого потребуется экземпляр пакетного обслуживания, но Data Factory позаботится обо всей оркестровке и предоставит вам средство управления для оповещения о сбоях и т. Д.

2) Переместите свои большие двоичные объекты из хранилища BLOB-объектов Azure в хранилище озера данных Azure, используя adlcopy.exe. Оказавшись в хранилище озера данных, вы можете создать свой собственный пользовательский экстрактор и запросите файлы zip / gzip. После очередного просмотра документации кажется, что USQL может сделать это изначально. Ищите раздел Извлечение из сжатых данных в ЭКСТРАКТНОЕ выражение.

3) Используйте PolyBase с хранилищем данных SQL, которое может читать файлы zip / gzip в исходном формате. Это самый простой, но, наверное, самый дорогой вариант. Увидеть СОЗДАТЬ ВНЕШНЮЮ ТАБЛИЦУ а также СОЗДАТЬ ФОРМАТ ВНЕШНЕГО ФАЙЛА.

4) И, как только что упомянул @EvertonMc, вы можете сделать это с помощью функции Azure на триггере, что также является хорошим вариантом.

Удачи и дайте нам знать, как вы поживаете.

2