Развертывание больших двоичных объектов функций Azure

#python #azure #azure-devops #azure-functions #azure-blob-storage

Вопрос:

Я отключаюсь от документации здесь: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-output?tabs=python

Вот код, который у меня сейчас есть:

функция.json

 
{
  "bindings": [
    {
      "queueName": "myqueue-items",
      "connection": "nameofstorageaccount_STORAGE",
      "name": "queuemsg",
      "type": "queueTrigger",
      "direction": "in"
    },
    {
      "name": "inputblob",
      "type": "blob",
      "dataType": "binary",
      "path": "samples-workitems/{queueTrigger}",
      "connection": "nameofstorageaccount_STORAGE",
      "direction": "in"
    },
    {
      "name": "outputblob",
      "type": "blob",
      "dataType": "binary",
      "path": "samples-workitems/{queueTrigger}-Copy",
      "connection": "nameofstorageaccount_STORAGE",
      "direction": "out"
    }
  ],
  "disabled": false,
  "scriptFile": "__init__.py"
}
 

init.py

 
import logging
import azure.functions as func


def main(queuemsg: func.QueueMessage, inputblob: bytes, outputblob: func.Out[bytes]):
    logging.info(f'Python Queue trigger function processed {len(inputblob)} bytes')
    outputblob.set(inputblob)
    
 

Если я правильно понимаю, эта функция должна запускаться при добавлении большого двоичного объекта в контейнер и для сохранения копии этого большого двоичного объекта внутри того же контейнера.

Функции выполняются, однако ничего не происходит, когда большой двоичный объект загружается в контейнер? Я хотел бы запустить некоторый код с загружаемым большим двоичным объектом, это единственный полный пример, который я нашел с Python и триггером большого двоичного объекта.

Ценю любую помощь, спасибо! 🙂

Ответ №1:

Нет. Если вы прочитали document , в нем говорится, что функция запускается при отправке сообщения в очередь:

В следующем примере показаны привязки ввода и вывода больших двоичных объектов в функции.файл json и код Python, который использует привязки. Функция создает копию большого двоичного объекта. Функция запускается сообщением очереди, содержащим имя большого двоичного объекта для копирования. Новый большой двоичный объект называется {originalblobname}-Копия.

Если вы хотите выполнить функцию при создании большого двоичного объекта, пожалуйста, смотрите Blob Trigger пример здесь: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=python.

Комментарии:

1. Спасибо! Я не знаю, как я пропустил это….. Мой последующий вопрос, если вы не возражаете: если это так, нужно ли мне перенастроить мой локальный файл.json так, как указано выше? и включите направление:внутрь и направление:наружу ? для того, чтобы функция запускалась большим двоичным объектом и сохраняла тот же большой двоичный объект обратно в хранилище после того, как какой-то код изменил его? или конфигурации, указанной в ссылке, будет достаточно для этого типа операций.

2. Я не уверен, хотите ли вы сделать это для сохранения копии в том же контейнере. Я верю, что вы будете в бесконечном цикле, потому что в тот момент, когда вы создадите копию большого двоичного объекта в том же контейнере, функция снова запустится, и она создаст копию копии большого двоичного объекта, и процесс продолжится.

3. Это имеет смысл — так что путь вперед будет заключаться в создании второго контейнера и сохранении измененного большого двоичного объекта там. На самом деле я хотел перенаправить выходные большие двоичные объекты либо на SQL, либо на OneDrive, либо на хостинг, который хорошо интегрируется с Tableau. Вы бы рекомендовали использовать триггер большого двоичного объекта и использовать внешний пакет SDK Python для перенаправления измененного большого двоичного объекта в OneDrive?

4. Для OneDrive я бы на самом деле рекомендовал использовать приложения логики вместо функций Azure. Я полагаю, что для OneDrive уже есть разъем, который автоматически загрузит файл туда.

5. Но можно ли было бы запустить мой скрипт python, чтобы заранее изменить файл ? Я получаю файл во вложении по электронной почте, я хочу преобразовать его, а затем только после повторного сохранения в OneDrive