我已经在Visual Studio中创建了一个简单的Blob触发器,其 init .py如下所示
import logging
import azure.functions as func
def main(myblob: func.InputStream):
logging.info(f"Python blob trigger function processed blob \n"
f"Name: {myblob.name}\n"
f"Blob Size: {myblob.length} bytes")
和function.json如下
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "myblob",
"type": "blobTrigger",
"direction": "in",
"path": "mycontainer/{name}",
"connection": "AzureWebJobsStorage"
}
]
}
local.settings.json看起来如下
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "python",
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https; AccountName=****;AccountKey=*****;EndpointSuffix=core.windows.net"
}
}
此代码与本地计算机上的Visual Studio正常工作。但是当在azure门户上发布时,它无法从function.json读取blob路径,并给出
错误Invalid blob path specified : ''. Blob identifiers must be in the format 'container/blob'.
我已经发布了使用命令来推送包含local.settings.json的函数。
func azure functionapp publish FUNCTIONNAME --build-native-deps --publish-local-settings -i
。 任何人都可以指导我发布后所缺少的内容。
答案 0 :(得分:0)
您是否使用Azure门户中的运行按钮来测试功能?这种对Blob触发器的工作方式是,在右侧的“测试”选项卡中,您可以指定要为其手动发送触发事件的Blob的名称,以强制您的函数运行:
这个想法是,您应该编辑请求正文框的内容,并将其放入帐户中有效Blob的路径。这样,触发器将运行并找到blob并进行检索。因此,如果您不修改请求正文框,那么它将查找一个blob,但找不到它并抛出404错误。
还请查看以下用于配置容器名称的文档
还请确认您的设置是否已在门户中发布。
func azure functionapp publish "functionname" --publish-local-settings
希望有帮助。