我使用Arm模板部署了Azure功能。我需要功能键&主机在Powershell中部署Azure功能的密钥。 目前我正在尝试从ARM模板的输出部分获取密钥
"outputs": {
"FunctionAppName": {
"type": "string",
"value": "[variables('functionAppName')]"
},
"Key": {
"type": "string",
"value": "[listKeys(resourceId('Microsoft.Web/sites', '[variables('functionAppName')]'),'2015-08-01').keys]"
}
}
我尝试了不同的组合但它失败了。 有没有办法在Powershell中检索密钥?
答案 0 :(得分:11)
我通过以下方式使用它:
"outputs": {
"FunctionAppName": {
"type": "string",
"value": "[parameters('functionName')]"
},
"Key": {
"type": "string",
"value": "[listsecrets(resourceId('Microsoft.Web/sites/functions', parameters('existingFunctionAppName'), parameters('functionName')),'2015-08-01').key]"
},
"Url": {
"type": "string",
"value": "[listsecrets(resourceId('Microsoft.Web/sites/functions', parameters('existingFunctionAppName'), parameters('functionName')),'2015-08-01').trigger_url]"
}
}
我也找不到任何例子。
但是,通过使用上面的KestrelServerOptionsSetup
上的快速入门示例和GitHub的文档以及一些反复试验,我得到了它。
请注意变量/参数和名称已更改。
答案 1 :(得分:3)
我无法获得可接受的答案来检索默认的主机密钥。 @ 4c74356b41的答案非常接近。您可以使用以下代码获取密钥。默认的主机密钥将位于Outputs.functionKeys.Value.functionKeys.default.Value
中。
"outputs": {
"functionKeys": {
"type": "object",
"value": "[listkeys(concat(resourceId('Microsoft.Web/sites', variables('functionAppName')), '/host/default'), '2018-11-01')]"
}
}
答案 2 :(得分:1)
问题似乎没有得到回答,因为它是在请求从Powershell而不是从ARM模板获取功能键。 我正在使用以下脚本从Azure DevOps中的Powershell获取功能键。
$accountInfo = az account show
$accountInfoObject = $accountInfo | ConvertFrom-Json
$subscriptionId = $accountInfoObject.id
$resourceGroup = "your-resource-group"
$functionName = "your-function-name"
$functionkeylist = az rest --method post --uri "https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$functionName/host/default/listKeys?api-version=2018-11-01"
$keylistobject = $functionkeylist | ConvertFrom-Json
$functionKey = $keylistobject.functionKeys.default
希望这会有所帮助。
答案 3 :(得分:0)
首先,您的语法有错误:
"value": "[listKeys(resourceId('Microsoft.Web/sites', variables('functionAppName')),'2015-08-01').keys]"
但是这不会有帮助,我不认为它是针对Azure功能实现的,我对此并不是100%肯定,但我努力检索密钥是徒劳的
答案 4 :(得分:0)
因此,为了使其适用于应用程序 MyHttpFunction
中 MyFunctionApp
的功能特定键,我必须在 ARM 模板的 Outputs
部分使用以下内容:
"MyHttpFunctionKey": {
"type": "string",
"value": "[listkeys(resourceId('Microsoft.Web/sites/functions', 'MyFunctionApp', 'MyHttpFunction'), '2019-08-01').default]"
}
如果使用 New-AzResourceGroupDeployment
和参数 -OutVariable arm
从 Powershell 调用,则以下 Powershell 命令将打印密钥:$arm.Outputs.myHttpFunctionKey.Value