我使用 Azure 函数作为 Webhook Consumer 来接收 JSON 形式的 http 事件并将其存储在 Azure 存储上。 我想根据日期对输出 blob 路径进行动态命名,如下所示。我尝试了很多选项,但无法获得所需的输出。 我被关注了这个post但运气不佳。
异常(exception)的写入路径:
source/
ctry/
yyyy/
mm/
date/
hrs/
event_{systemtime}.json
function.json:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "blob",
"name": "outputblob",
"path": "source/ctry/{datetime:yyyy}/{datetime:MM}/{datetime:dd}/{datetime:hh}/event_{systemtime}.json",
"direction": "out",
"connection": "MyStorageConnectionAppSetting"
}
]
}
init.py
import logging
import azure.functions as func
def main(req: func.HttpRequest,outputblob: func.Out[str]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = 'some_name'
if not name:
try:
req_body = 'req_body_test'#req.get_json()
except ValueError:
pass
else:
name = 'name'#req_body.get('name')
print(str(req.get_json()))
outputblob.set(str(req.get_json()))
最佳答案
动态 blob 名称需要您以 json 格式发布请求。
例如,如果想将blob输出到test/{testdirectory}/test.txt
,那么,您需要发布如下请求:
{
"testdirectory":"nameofdirectory"
}
之后绑定(bind)azure函数就可以获取目录名了。
顺便说一句,我不建议对复杂的 blob 操作进行绑定(bind)。我建议使用 SDK 而不是绑定(bind)。
关于python - Azure 函数 (python) 将输出写入输出 blob 路径的动态命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66455070/