正如标题所示,我有这个 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。
我通过 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` ---^^^^
}
如本 AWS 文档中所述:Elastic Beanstalk 设置 如果您按 ctrl+f 键选择“SecurityGroups”,您将看到这取决于您的 AEB 是否在 VPC 中运行: