【发布时间】:2019-06-08 21:50:03
【问题描述】:
使用 Terraform,我正在尝试向应用程序(也在 Terraform 中创建)添加密钥库访问策略,这需要该应用程序的 object_it(即 GUID)。在 ARM 模板中是这样的:
"objectId": "[reference(variables('myAppResourceId'), '2015-08-31-PREVIEW').principalId]"
所以 Terraform 需要将 principal id 分配给 object_id。如果我像这样使用 "object_id = ${azurerm_app_service.myApp.id}" 值:
resource "azurerm_key_vault_access_policy" "pol1" {
vault_name = "${azurerm_key_vault.kv1.name}"
resource_group_name = "${azurerm_key_vault.kv1.resource_group_name}"
tenant_id = "${data.azurerm_subscription.current.subscription_id}"
object_id = "${azurerm_app_service.myApp.id}"
key_permissions = "${var.app_keys_permissions}"
secret_permissions = "${var.app_secrets_permissions}"
}
然后当我运行应用命令时,我收到以下错误:
azurerm_key_vault_access_policy.pol1: "object_id" is an invalid UUUID: encoding/hex: invalid byte: U+002F '/'
这可能是看起来像带有斜线的 url 的 id,所以这不起作用,因为我只需要 GUID。
我还尝试了来自 Terraform grant azure function app with msi access to azure keyvault 的建议,将 object_id = "${lookup(azurerm_app_service.app1.identity[0],"principal_id")}" 用于应用服务而不是该函数,我得到一个错误:
azurerm_key_vault_access_policy.appPolicy1: At column 43, line 1: list "azurerm_app_service.app1.identity" does not have any elements so cannot determine type. in:
${lookup(azurerm_app_service.app1.identity[0],"principal_id")}
有人可以帮我解决这个 object_id 吗?
谢谢
【问题讨论】:
标签: azure terraform azure-keyvault