可以在 ARM 模板中获取 Azure Function 系统密钥吗?

Nic*_*rts 3 azure azure-rm-template azure-functions azure-eventgrid

我知道我可以使用 listKeys/listSecrets 方法获取 ARM 模板中 Azure 函数的主机密钥和 trigger_url。但我需要系统密钥,我正在部署事件网格订阅,它需要包含系统密钥的 Azure Function 端点 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')]"
            }
        }
    ]
Run Code Online (Sandbox Code Playgroud)

其中endpointUrl 的形式为:

https://<function-app-name>.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName=<function-name>&code=XZvGU0ROPxxxxxxxxxxxxxxxxxxxxxxxxxxxxaaieD89gPQ==
Run Code Online (Sandbox Code Playgroud)

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

http://<function-app-name>.azurewebsites.net/admin/host/systemkeys/eventgridextensionconfig_extension?code=<master_key>
Run Code Online (Sandbox Code Playgroud)

有没有办法在 ARM 模板中检索此系统密钥(或整个端点网址),而无需借助注入它或其他外部系统的 bash 脚本?

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

Mon*_*nor 5

是的,现在可以:

"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)]"
    }
},
Run Code Online (Sandbox Code Playgroud)

哪里functionUrl以 结尾&code=。在运行时~2 上进行了测试。