使用 Terraform 构建 AWS Codebuild 中的多个环境变量

Dee*_*gal 1 amazon-web-services terraform aws-codebuild terraform-provider-aws

我正在使用 Terraform 配置 AWS CodeBuild。在环境部分,我配置了以下内容:

  environment {
    compute_type                = "BUILD_GENERAL1_SMALL"
    image                       = "aws/codebuild/standard:3.0"
    type                        = "LINUX_CONTAINER"
    image_pull_credentials_type = "CODEBUILD"

    environment_variable {
      name  = "SOME_KEY1"
      value = "SOME_VALUE1"
    }

    environment_variable {
      name  = "SOME_KEY2"
      value = "SOME_VALUE2"
    }

  }
Run Code Online (Sandbox Code Playgroud)

我的 Codebuild 项目中有 20 多个环境变量需要配置。

是否可以创建一个列表并定义一个 environment_variable 参数来配置所有环境变量?

yda*_*coR 6

您可以通过使用dynamicblocks来实现这一点。

variable "env_vars" {
  default = {
    SOME_KEY1 = "SOME_VALUE1"
    SOME_KEY2 = "SOME_VALUE2"
  }
} 

resource "aws_codebuild_project" "test" {
  # ...

  environment {
    compute_type                = "BUILD_GENERAL1_SMALL"
    image                       = "aws/codebuild/standard:3.0"
    type                        = "LINUX_CONTAINER"
    image_pull_credentials_type = "CODEBUILD"

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

这将遍历env_vars本地设置的映射(但可以作为变量传递)并environment_variable为每个创建一个块,将名称设置为映射的键,将值设置为映射的值。