Terraform 错误 EntityAlreadyExists:名称为 iam_for_lambda 的角色已存在
Posted
技术标签:
【中文标题】Terraform 错误 EntityAlreadyExists:名称为 iam_for_lambda 的角色已存在【英文标题】:Terraform error EntityAlreadyExists: Role with name iam_for_lambda already exists 【发布时间】:2019-11-14 15:57:48 【问题描述】:运行terraform apply
命令时出现以下错误,因为角色已经存在。
Error: Error creating IAM Role iam_for_lambda: EntityAlreadyExists: Role with name iam_for_lambda already exists.
status code: 409, request id: 204c6c00-0b1d-4fb9-bf9c-fca48c67d669
on main.tf line 1, in resource "aws_iam_role" "iam_for_lambda":
1: resource "aws_iam_role" "iam_for_lambda"
我可以使用条件/技巧来检查角色是否已经存在?
【问题讨论】:
理想情况下,您将在此模板中创建所需的 IAM 角色,使其生命周期与底层堆栈相同。或者,如果您需要支持现有角色,那么它将是模板的输入参数,并且它将具有独立于堆栈的生命周期。 您是否尝试管理已存在的 IAM 角色? @MattSchuchard 是的,如果不存在,我应该创建 IAM 角色,否则通过 terraform 资源创建它们 @LorenzoD'Isidoro 您可以将资源导入到 Terraform 状态,然后应用它们。更多信息official doc 【参考方案1】:我猜你自己解决了这个问题,因为这个问题已经存在一年了,但是如果资源出于正当理由存在,你可以通过导入它来让你的代码获得所有权:
terraform import aws_iam_role.iam_for_lambda iam_for_lambda
现在,当你运行 Terraform 时,它会认为它已经创建了资源,如果你更新你的代码,rolle 也会得到更新。
话虽如此,您可能不应该尝试创建一个已经存在的角色。即使您使用terraform import
获取资源的所有权,如果您的代码正在修改也属于另一个模块的角色,您可能会得到奇怪的结果。
【讨论】:
以上是关于Terraform 错误 EntityAlreadyExists:名称为 iam_for_lambda 的角色已存在的主要内容,如果未能解决你的问题,请参考以下文章
如何解决错误:Terraform 中的“不得引用参数名称”?
Terraform 错误:错误锁定状态:获取状态锁时出错:发生 2 个错误:
使用 terraform 创建 lambda 函数时出错获取验证错误