使用Terraform Azapi创建Azure Function密钥失败求助
解决Azure Function密钥创建的400错误及存入Key Vault方案
错误原因及修正代码
你遇到的400错误是因为Azure REST API要求请求体必须包含properties对象,而原代码直接将value放在了根层级。修正后的azapi_resource代码如下:
resource "azapi_resource" "function_key" { type = "Microsoft.Web/sites/functions/keys@2022-09-01" name = "Random" parent_id = "/subscriptions/xxxxxxxxxxxxxxxxxxxxx/resourceGroups/xxxxxxx/providers/Microsoft.Web/sites/fa-test-fucntions/functions/testcreatkey" body = jsonencode({ properties = { value = "hhundredslkkjjsiiskkk" } }) }
将密钥存入Azure Key Vault
针对你把密钥存入Key Vault的核心需求,可添加azurerm_key_vault_secret资源,将创建好的Function密钥存储进去:
resource "azurerm_key_vault_secret" "function_key_secret" { name = "function-testcreatkey-random" value = azapi_resource.function_key.output.properties.value key_vault_id = "/subscriptions/xxxxxxxxxxxxxxxxxxxxx/resourceGroups/xxxxxxx/providers/Microsoft.KeyVault/vaults/your-keyvault-name" }
补充说明
- 确保Terraform使用的服务主体拥有Key Vault的
SetSecret权限,以及Function App的Microsoft.Web/sites/functions/keys/write权限。 - 若无需手动指定密钥值,可移除
properties.value字段,Azure会自动生成随机密钥,之后通过azapi_resource.function_key.output.properties.value获取生成的值存入Key Vault。
内容的提问来源于stack exchange,提问作者chandra shekhar
相关产品推荐
相关产品推荐

