解决terraform中的EntityAlreadyExists错误的最佳方法是什么?

时间:2019-09-12 09:11:43

标签: terraform

我正在使用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删除这些资源来解决它们。但是我想知道是否有更好的方法来解决它们。

3 个答案:

答案 0 :(得分:0)

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

使用您的sg-903004f8个人资料将security group aws_security_group.elb_sg导入地形资源dev。您需要找到security-search-populate安全组的安全组ID。

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

使用您的PopulateTaskRole个人资料将IAM role aws_iam_role.developer导入地形资源dev

AWS_PROFILE=dev terraform import aws_iam_role.developer PopulateTaskRole

将其导入后,您可以制定目标的地形计划,以查看源代码控制地形中的内容与AWS上游中的内容之间的区别

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

答案 1 :(得分:0)

将属性“名称”更改为“名称前缀”解决了我的问题,并且没有重复任何角色和/或策略。

答案 2 :(得分:-1)

我认为 FvSoares 的回答似乎不是一个好的做法。在您的 AWS 账户中无故保留重复资源不是一个好的解决方案。违背了自动化基础架构和控制资源的全部目的。

人们应该按照 SomeGuyOnAComputer 的 above 上的回答导入资源。

注意:我无权对@FvSoares 的回答发表评论,否则,将此回答作为评论发布。