【问题标题】:what is the best way to solve EntityAlreadyExists error in terraform?解决 terraform 中 EntityAlreadyExists 错误的最佳方法是什么?
【发布时间】:2019-09-12 09:11:43
【问题描述】:

我正在使用terraform v0.12.6,但遇到了许多错误,例如:

Error: Error creating Security Group: InvalidGroup.Duplicate: The security group 'security-search-populate' already exists for VPC 'vpc-003e06e33a87c22f5'
    status code: 400, request id: 82acdc81-c324-4672-b9fe-531eb8283ed3

Error: Error creating IAM Role PopulateTaskRole: EntityAlreadyExists: Role with name PopulateTaskRole already exists.
    status code: 409, request id: 49aac94c-d52b-11e9-a535-c19e5ed20660

我知道我可以通过从 aws 中删除这些资源来解决它们。但是我想知道是否有更好的方法来解决它们。

【问题讨论】:

    标签: terraform


    【解决方案1】:

    是的。所有重复项都应导入到 terraform 中,并且每个资源的导入可能不同。

    使用您的dev 配置文件将security group sg-903004f8 导入到terraform 资源aws_security_group.elb_sg。您需要找到security-search-populate 安全组的安全组ID。

    AWS_PROFILE=dev terraform import aws_security_group.elb_sg sg-903004f8
    

    使用您的dev 配置文件将IAM role PopulateTaskRole 导入到terraform 资源aws_iam_role.developer

    AWS_PROFILE=dev terraform import aws_iam_role.developer PopulateTaskRole
    

    导入这些后,您可以制定有针对性的 terraform 计划,以查看源代码控制的 terraform 中的内容与 AWS 中的上游内容之间的差异

    AWS_PROFILE=dev terraform plan \
      -target aws_security_group.elb_sg \
      -target aws_iam_role.developer
    

    【讨论】:

    • 感谢您的回复。我想知道在哪里可以找到要导入的内容。喜欢aws_security_group.elb_sg
    • 如果您执行terraform plan,您可以看到尝试创建哪些资源。找到名称为 security-search-populate 的安全组,这就是应该导入的内容。如果您在 gist 中发布您的计划,则可以确定确切的导入命令。
    • 您确定设置AWS_PROFILE=devterraform import 有效吗?我认为它可以工作,但结果我不得不在单独的命令中更改我的个人资料。
    【解决方案2】:

    将属性“name”更改为“name_prefix”解决了我的问题,并且不会重复任何角色和/或策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 2016-02-15
      相关资源
      最近更新 更多