【问题标题】:Error creating Security Group: InvalidGroup.Duplicate when defining AWS security group in Terraform创建安全组时出错:在 Terraform 中定义 AWS 安全组时 InvalidGroup.Duplicate
【发布时间】:2020-05-30 09:33:26
【问题描述】:

我是 Terraform 的新手,当我运行 Terraform 应用时,我会报这个错误:

Error: Error creating Security Group: InvalidGroup.Duplicate: The security group 'xxxxxxx' already exists for VPC 'vpc-xxxxxx'
        status code: 400

这部分的脚本如下所示:

resource "aws_security_group" "xxxxx_security_group" {
  name   = "xxxxx-security-group-xxxx"
  vpc_id = xxxxxxxxxxxxx

  egress {
    from_port   = x
    protocol    = x
    to_port     = x
    cidr_blocks = ["x.x.x.x/x"]
  }
}

谁能给我一些提示?现在花了差不多一个小时,仍然没有任何线索......

【问题讨论】:

    标签: amazon-web-services error-handling duplicates terraform aws-security-group


    【解决方案1】:

    看起来您已经在控制台中(或使用 CLI)创建了安全组,因此尝试在 terraform 中再次创建安全组会导致错误,因为名称已经存在。

    要解决此问题,请进入 AWS 控制台并使用您尝试创建的名称查找安全组。找到它的 ID 值,看起来像 sg-xxxxxxxxxxxx

    然后在您的终端中,通过运行将该资源导入您的 terraform 状态:

    terraform import aws_security_group.xxxxx_security_group sg-xxxxxxxxxxx

    在此之后,您可以运行 terraform planterraform apply 并且一切都应该正常工作,因为 terraform 的状态知道现有资源。

    【讨论】:

    • 我认为值得注意的是,在terraform import 命令成功之后,Terraform 会认为它是唯一管理该对象的东西,因此例如如果您随后运行terraform destroy,则 Terraform 将计划销毁它。应该在导入之前确定你真的想用 Terraform 管理一个对象。
    • 您好,谢谢,但我还有两个问题: 1. 我现有的安全组显示它已经由 Terraform 管理,这种方法仍然有效吗? 2.你提到的命令aws_security_group.xxxxx_security_group,是xxxxx我的安全组全名吗?
    • 这应该是 terraform 中的错误,除非您使用 lifecycle { create_before_destroy = true } 作为资源。 TF 应该简单地销毁现有资源并按照您的要求创建一个新资源。您还可以使用 name_prefix 而不是 name 作为您的资源以避免名称冲突。
    • 当人们在 CICD 管道中运行 apply 而不首先运行 plan 阶段时,我也看到了这种行为。
    猜你喜欢
    • 2016-01-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 2019-08-20
    • 2021-06-17
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多