如何使用Terraform为Elastic Beanstalk环境定义条件(每个环境)设置



所需结果

我想有条件地为基于另一个变量environmentaws_elastic_beanstalk_environmentTerraform资源定义一个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.

您可以使用动态块:

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
}
}
}

最新更新