azure-functions - 在逻辑应用调用的天蓝色函数的 id 中使用参数时出错
问题描述
我在不同阶段有不同的 azure 函数,当我部署我的逻辑应用程序时,我想配置调用什么 azure 函数。
我添加了一个名为的新参数:
"unzip_gzip_path": {
"value": "/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/XXXTest/providers/Microsoft.Web/sites/FunctionApp201806XXXXXXXX/functions/Function1"
}
并像这样在手臂模板中使用他:
"$functions_paths": {
"value": {
"unzip_gzip": {
"path": "[parameters('unzip_gzip_path')]"
}
}
}
Azure 函数调用如下所示:
"Function1":{
"type": "Function",
"inputs": {
"body": "@items('For_each_attachment')?['ContentBytes']",
"method": "POST",
"function": {
"id": "@parameters('$functions_paths')['unzip_gzip']['path']"
}
},
"runAfter": {}
}
现在我收到错误
15:31:34 - 15:31:33 - Resource Microsoft.Logic/workflows 'DMARCReportingProcessingLogicApp' failed with message '{
15:31:34 - "error": {
15:31:34 - "code": "LinkedInvalidPropertyId",
15:31:34 - "message": "Property id '@parameters('$functions_paths')['unzip_gzip']['path']' at path 'properties.definition.actions.For_each_attachment.actions.Condition.actions.Function1.inputs.function.id' is invalid. Expect fully qualified resource Id that start with '/subscriptions/{subscriptionId}' or '/providers/{resourceProviderNamespace}/'."
15:31:34 - }
15:31:34 - }'
难道是我不能在函数位置使用参数?
解决方案
目前该函数的资源 ID 只能在部署时设置,不能在运行时设置。设置它的正确方法是作为 ARM 参数,而不是逻辑应用参数(如果有意义的话)。
这是一个为部署进行参数化的示例。
{
"Azure_Function": {
"type": "Function",
"inputs": {
"body": "@triggerBody()",
"function": {
"id": "[resourceId('Microsoft.Web/sites/functions', parameters('functionAppName'), variables('functionName'))]"
}
},
"runAfter": {}
}
推荐阅读
- c++ - 静态成员重载和覆盖如何在 C++ 结构中工作?
- recursion - XSLT/Saxon 中的尾调用优化?
- electron - “不允许加载本地资源”与电子应用程序中的文件图像 URL
- php - Codeigniter 单个数据提取错误与结果
- prometheus - PromQL:查找低于平均水平的向量元素
- django - Django Model Field - 无论如何定义一个存储对象的字段
- swift - 以编程方式从 UiView 推送新视图控制器的问题
- multiple-inheritance - 如何在多继承中合并属性
- jquery - 调试 jQuery 随机变量问题
- linux - DISPLAY 环境变量的语法是什么?