要为ARM模板部署的函数应用添加主机密钥,可以使用以下代码示例:
在ARM模板中添加以下资源:
{
"type": "Microsoft.Web/sites/host/functionKeys",
"apiVersion": "2018-11-01",
"name": "[concat('default/', parameters('functionAppName'), '/default')]",
"properties": {
"name": "default",
"value": "[guid(variables('functionKey'))]",
"type": "systemkey"
},
"dependsOn": [
"[resourceId('Microsoft.Web/sites', parameters('functionAppName'))]"
]
}
确保在ARM模板中的函数应用资源之后添加此资源。
这将为函数应用创建一个名为"default"的系统密钥。
在ARM模板中的函数应用资源中,添加以下代码以获取密钥值:
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2018-11-01",
"name": "[parameters('functionAppName')]",
"location": "[parameters('location')]",
"properties": {
"serverFarmId": "[parameters('appServicePlanId')]"
},
"resources": [
{
"type": "functions",
"apiVersion": "2018-11-01",
"name": "[concat(parameters('functionAppName'), '/', variables('functionName'))]",
"location": "[parameters('location')]",
"properties": {
"scriptFile": "[variables('scriptFile')]",
"bindings": [
{
"name": "req",
"type": "httpTrigger",
"direction": "in",
"authLevel": "anonymous"
},
{
"type": "http",
"name": "res",
"direction": "out"
}
],
"secrets": [
{
"name": "default",
"vaultName": "[parameters('keyVaultName')]",
"secretName": "[parameters('keyVaultSecretName')]"
}
]
}
}
]
}
]
将"keyVaultName"
和"keyVaultSecretName"
参数替换为你的密钥和密钥保险库的名称。
这将告诉函数应用在部署期间从密钥保险库中获取密钥值。
确保在部署ARM模板之前在密钥保险库中创建了密钥,并将其值存储在名为"default"的密钥中。
这样,ARM模板部署的函数应用将具有主机密钥,并且不会抛出错误。