【问题标题】:How can one define a conditional (per-environment) setting for Elastic Beanstalk environment with Terraform?如何使用 Terraform 为 Elastic Beanstalk 环境定义条件(每个环境)设置?
【发布时间】:2022-01-07 01:14:31
【问题描述】:

期望的结果

我想基于另一个变量 environment 有条件地为 aws_elastic_beanstalk_environment Terraform 资源定义 setting 块。

当前尝试

对于这种情况,我通常会使用count

resource "aws_elastic_beanstalk_environment" "backend_prod" {
  name                   = "backend-${var.env}"
  application            = aws_elastic_beanstalk_application.backend.name
  solution_stack_name    = "64bit Amazon Linux 2 v3.4.9 running Docker"
  wait_for_ready_timeout = "10m"

  # other settings omitted

  setting {
    count     = var.environment == "prod" ? 1 : 0
    namespace = "aws:elasticbeanstalk:application:environment"
    name      = "API_KEY"
    value     = var.api_key
  }
}

目前的结果

不幸的是,每当我运行 terraform plan 时,都会导致:

An argument named "count" is not expected here.

【问题讨论】:

    标签: amazon-web-services terraform amazon-elastic-beanstalk terraform-provider-aws


    【解决方案1】:

    您可以使用dynamic block

    resource "aws_elastic_beanstalk_environment" "backend_prod" {
      name                   = "backend-${var.env}"
      application            = aws_elastic_beanstalk_application.backend.name
      solution_stack_name    = "64bit Amazon Linux 2 v3.4.9 running Docker"
      wait_for_ready_timeout = "10m"
    
      # other settings omitted
    
      dynamic "setting" {
    
        for_each     = var.environment == "prod" ? [1] : []
      
        content {
            namespace = "aws:elasticbeanstalk:application:environment"
            name      = "API_KEY"
            value     = var.api_key
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-01
      • 2019-07-23
      • 2021-01-27
      • 2020-12-08
      • 2020-02-05
      • 2014-04-27
      • 2019-09-01
      • 2017-07-24
      • 2018-08-11
      相关资源
      最近更新 更多