我使用队列触发器传递一些关于我想用Azure Functions运行的作业的数据(我使用python)。部分数据是我想从blob存储中提取的文件的名称。因此,在输入绑定中声明文件路径/名称似乎不是正确的方向,因为函数在获得队列触发器之前不会拥有文件名。
我尝试过的一种方法是使用azure-storage sdk,但我不确定如何在Azure Function中处理身份验证。
还有另一种方法可以解决这个问题吗?
答案 0 :(得分:1)
在Function.json中,blob输入绑定可以引用队列有效负载中的属性。队列有效负载需要是JSON对象 由于这是function.json,因此适用于所有语言。
请参阅https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings
上的官方文档例如,在你的function.json中,
$scope.searchPo = function (id) {
var match = $filter('filter')($scope.array, {po: id});
return match;
});
$scope.array =
[[{"po":1},{"po":2},{"po":3}],
[{"po":11},{"po":12},{"po":13}],
[{"po":21},{"po":22},{"po":23}]]
如果您的队列消息有效负载是:
{
"name": "imageSmall",
"type": "blob",
"path": "container/{filename}",
}
然后blob路径表达式中的{filename}标记将被替换。
答案 1 :(得分:0)
通常,您在功能应用程序的应用程序设置中存储连接字符串/帐户密钥,然后通过访问环境变量来读取它们。我没有在Azure中使用python,但我相信它看起来像
#
我找到了one example的python函数,它可以满足您的要求:队列触发器+ blob操作。
答案 2 :(得分:0)
可以(也)使用应用程序设置来存储机密。
在Azure中,转到Azure功能应用服务,然后单击“应用程序设置”。然后,向下滚动到“应用程序设置”列表。此列表由键值对组成。添加密钥,例如MY_CON_STR
,并将实际连接字符串作为值。
此时不要忘记点击保存
现在,在您的应用程序(此示例的函数)中,您可以使用其键加载存储的值。例如,在python中,您可以使用:
os.environ['MY_CON_STR']
请注意,由于设置未在本地保存,因此您必须从Azure中执行该设置。遗憾的是,Azure Functions应用程序不包含web.config
文件。