Как получить имя ввода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. Я думаю, что это очень полезно для вас сейчас, и вы можете обратиться к этим образцам, чтобы написать свой собственный, чтобы удовлетворить ваши потребности.
Надеюсь, что это поможет.
Ответ 3
Получение имени inputBlob в настоящее время невозможно с помощью Python Azure-Functions. Есть открытые вопросы об этом в azure-webjobs-sdk и azure-webjobs-sdk- script GitHub:
https://github.com/Azure/azure-webjobs-sdk/issues/1090
https://github.com/Azure/azure-webjobs-sdk-script/issues/1339
Ответ 4
К сожалению, это все еще не возможно. В Python вы можете сделать:
import azure.functions as func
import os
def main(blobin: func.InputStream):
filename=os.path.basename(blobin.name)