如何通过Bicep获取Azure Functions密钥?是否需部署函数?
Azure Function App主机密钥获取问题及解决办法
问题场景
我使用以下Bicep代码创建了Azure Function App:
resource webSite 'Microsoft.Web/sites@2022-03-01' = { name: 'xxxxxx' location: resourceGroup().location kind: 'functionapp' properties: { serverFarmId: 'zzzzzz' siteConfig: { appSettings: [ // some values ] } } }
之后尝试两种方式获取master或default主机密钥,均收到Azure返回的错误:Encountered an error (BadGateway) from host runtime.
方式一
resource functionApp 'Microsoft.Web/sites/functions@2022-03-01' existing = { name: 'xxxxxx' } output key string = functionApp.listkeys().properties.masterKey
方式二
output key string = listKeys(resourceId('Microsoft.Web/sites/host', 'xxxxxx', 'default'), '2022-03-01').masterKey
疑问:
- 是否有简便的密钥获取方法?
- 获取这类密钥是否必须在Function App内部署函数?
解决方案
1. 正确的Bicep获取方式
BadGateway错误通常是因为Function App未完成初始化,或者API调用的资源路径不正确。正确的主机密钥获取应针对Microsoft.Web/sites/host/keys资源,调整Bicep代码如下:
// 引用已创建的Function App resource functionApp 'Microsoft.Web/sites@2022-03-01' existing = { name: 'xxxxxx' } // 获取master主机密钥 output masterKey string = listKeys('${functionApp.id}/host/keys/master', '2022-03-01').value // 获取default主机密钥 output defaultKey string = listKeys('${functionApp.id}/host/keys/default', '2022-03-01').value
2. 是否需要部署函数?
不需要部署具体函数就能获取主机密钥。主机密钥属于Function App的全局配置,只要Function App成功创建并完成初始化,即可正常获取。之前的错误大概率是Function App仍在启动初始化阶段,或是API调用的资源路径有误。
其他简便获取方法
除Bicep外,还可通过以下方式快速获取:
- Azure CLI:
# 获取master密钥 az functionapp keys list --name <function-app-name> --resource-group <resource-group-name> --query "masterKey" # 获取default密钥 az functionapp keys list --name <function-app-name> --resource-group <resource-group-name> --query "functionKeys.default" - Azure Portal:进入目标Function App → 左侧菜单选择「函数」→「函数密钥」,即可查看主机密钥和函数密钥。
内容的提问来源于stack exchange,提问作者Sergio
相关产品推荐
相关产品推荐

