Как получить имя вводаBlob, который запускал мою функцию Azure с помощью Python

У меня есть функция azure, которая запускается файлом, который помещается в хранилище blob, и мне было интересно, как (если возможно) получить имя blob (файла), которое вызвало эту функцию, я пробовал делать:

fileObject=os.environ['inputBlob']
message = "Python script processed input blob'{0}'".format(fileObject.fileName)

и

fileObject=os.environ['inputBlob']
message = "Python script processed input blob'{0}'".format(fileObject.name)

но ни одна из них не работала, оба они приводили к ошибкам. Могу ли я получить некоторую помощь в этом или некоторых предложениях?

Спасибо

Ответ 1

Название blob может быть записано через Function.json и предоставлено в качестве данных привязки. См. Токен {filename} ниже. Function.json является агностиком языка и работает на всех языках.

Подробнее см. документацию https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings.

{
  "bindings": [
    {
      "name": "image",
      "type": "blobTrigger",
      "path": "sample-images/{filename}",
      "direction": "in",
      "connection": "MyStorageConnection"
    },
    {
      "name": "imageSmall",
      "type": "blob",
      "path": "sample-images-sm/{filename}",
      "direction": "out",
      "connection": "MyStorageConnection"
    }
  ],
}

Ответ 2

Нет никакой информации о том, какой триггер вы использовали в своем описании. Но, к счастью, есть пример проекта yokawasa/azure-functions-python-samples в GitHub для функции Azure с использованием Python, который включает в себя множество образцов с использованием различных триггеров типа запуск очереди или blob trigger. Я думаю, что это очень полезно для вас сейчас, и вы можете обратиться к этим образцам, чтобы написать свой собственный, чтобы удовлетворить ваши потребности.

Надеюсь, что это поможет.

Ответ 4

К сожалению, это все еще не возможно. В Python вы можете сделать:

import azure.functions as func
import os
def main(blobin: func.InputStream):
    filename=os.path.basename(blobin.name)