使用 Terraform 设置 Elastic Beanstalk EC2 安全组时出现“安全组不存在”

问题描述 投票:0回答:2

正如标题所示,我有这个 Terraform 文件:

resource "aws_security_group" "database" {
  name = "my-database"
}

resource "aws_elastic_beanstalk_environment" "default" {
  # ...

  setting {
    namespace = "aws:autoscaling:launchconfiguration"
    name      = "SecurityGroups"
    value     = aws_security_group.database.id
  }
}

但是,当我运行

terraform apply
时,出现以下错误:

错误:更新 Elastic Beanstalk 环境 (e-7mdzvujjfx):ConfigurationValidationException:配置验证异常:选项值无效:“sg-0beb6502be9e607bf”(命名空间:“aws:autoscaling:launchconfiguration”,OptionName:“SecurityGroups”):安全组“ sg-0beb6502be9e607bf'不存在

…但是安全组确实存在并且具有完全相同的ID。

amazon-web-services terraform amazon-elastic-beanstalk aws-security-group
2个回答
0
投票

我通过 AWS 控制台手动更改了安全组,当 Terraform 状态刷新时,我在

terraform.tfstate
中注意到以下内容:

...
{
  "name": "SecurityGroups",
  "namespace": "aws:autoscaling:launchconfiguration",
  "resource": "",
  "value": "my-database"
},
...

该设置似乎需要安全组名称,而不是 ID。

如果我更改 Terraform 配置以使用该名称,一切都会正常:

setting {
  namespace = "aws:autoscaling:launchconfiguration"
  name      = "SecurityGroups"
  value     = aws_security_group.database.name
  # ----------------- `name`, not `id` ---^^^^
}

0
投票

如本 AWS 文档中所述:Elastic Beanstalk 设置 如果您按 ctrl+f 键选择“SecurityGroups”,您将看到这取决于您的 AEB 是否在 VPC 中运行: enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.