是否可以在 ARM 模板中获取 Azure 函数系统密钥?



我知道我可以使用 listKeys/listSecrets 方法在 ARM 模板中获取 Azure 函数的主机密钥和trigger_url。 但我需要系统密钥,我正在部署事件网格订阅,它需要包含系统密钥的 Azure 函数终结点 URL:

"resources": [
{
"type": "Microsoft.Storage/StorageAccounts/providers/eventSubscriptions",
"name": "[concat(concat(parameters('publisherName'), '/Microsoft.EventGrid/'), parameters('name'))]",
"apiVersion": "2018-01-01",
"properties": {
"destination": {
"endpointType": "[parameters('endpointType')]",
"properties": {
"endpointUrl": "[parameters('endpointUrl')]"
}
},
"filter": {
"subjectBeginsWith": "[parameters('subjectBeginsWith')]",
"subjectEndsWith": "[parameters('subjectEndsWith')]",
"subjectIsCaseSensitive": "[parameters('subjectIsCaseSensitive')]",
"includedEventTypes": "[parameters('includedEventTypes')]"
},
"labels": "[parameters('labels')]"
}
}
]

其中 endpointUrl 的形式为:

https://<function-app-name>.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName=<function-name>&code=XZvGU0ROPxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaieD89gPQ==

名为"code"的参数是系统密钥,可以通过执行 GET on 来检索

http://<function-app-name>.azurewebsites.net/admin/host/systemkeys/eventgridextensionconfig_extension?code=<master_key>

有没有办法在 ARM 模板中检索此系统密钥(或整个终结点 URL(,而无需求助于注入它或其他外部系统的 bash 脚本?

该文档确实说:"但是,不能使用需要请求正文中的值的列表操作。所以我认为我无法进行"列表"操作。

是的,现在可以:

"destination": {
"endpointType": "WebHook",
"properties": {
"endpointUrl": "[concat(variables('functionUrl'), listKeys(resourceId(variables('functionResourceGroupName'), 'Microsoft.Web/sites/host/', variables('functionAppName'), 'default'),'2016-08-01').systemkeys.eventgrid_extension)]"
}
},

functionUrl&code=结尾的地方.在运行时 ~2 上进行了测试。

这现在是不可能的。只能使用 ARM 模板返回功能键。 与此处描述相同: https://blog.mexia.com.au/list-of-access-keys-from-output-values-after-arm-template-deployment#functions

最新更新