Terraform - 云从列表中运行多个环境变量

Ari*_*Ari 3 terraform google-cloud-run

我正在尝试在我创建的云运行模块上设置多个环境变量。我从 Terraform 中遵循的示例是静态的。是否可以动态创建这些?

\n
template {\n    spec {\n      containers {\n        image = "us-docker.pkg.dev/cloudrun/container/hello"\n        env {\n          name = "SOURCE"\n          value = "remote"\n        }\n        env {\n          name = "TARGET"\n          value = "home"\n        }\n      }\n    }\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_service#example-usage---cloud-run-service-multiple-environment-variables

\n

我试过了:

\n
dynamic "env" {\n   for_each = var.envs\n   content {\n     name  = each.key\n     value = each.value\n   }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

但我收到以下错误:

\n
\n

对“each.value”的引用已在其不可用的上下文中使用,例如当配置不再包含其“for_each”表达式中\n\xe2\x94\x82 中的值时。在配置中删除对 every.value 的引用以解决此错误。

\n
\n

编辑:完整代码示例

\n
resource "google_cloud_run_service" "default" {\n  name     = "cloudrun-srv"\n  location = "us-central1"\n\n  template {\n    spec {\n      containers {\n        image = "us-docker.pkg.dev/cloudrun/container/hello"\n        env {\n          name = "SOURCE"\n          value = "remote"\n        }\n        env {\n          name = "TARGET"\n          value = "home"\n        }\n      }\n    }\n  }\n\n  traffic {\n    percent         = 100\n    latest_revision = true\n  }\n  autogenerate_revision_name = true\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Mar*_*cin 5

当您使用动态块时,不能使用each. 它应该是:

dynamic "env" {
   for_each = var.envs
   content {
     name  = env.key
     value = env.value
   }
}
Run Code Online (Sandbox Code Playgroud)