首页 > 解决方案 > 如何在 Terraform 中创建尚不存在的 IAM 角色?

问题描述

你点击了这个问题,认为答案显然只是,“运行terraform apply,duh”,不是吗?很简单,对吧?好吧,我的朋友,没有什么是简单的XD

当我运行list-rolesusingaws iam list-roles --query "Roles[].RoleName"时,输出确认RoleName问题不存在。

当我运行aws iam get-role --role-name [RoleName]输出是。

An error occurred (NoSuchEntity) when calling the GetRole operation: The role with name [RoleName] cannot be found.

当我查看 AWS 控制台时,我看不到相关RoleName问题。

当我运行terraform apply输出时,

Error: Error creating IAM Role [RoleName]: EntityAlreadyExists: Role with name [RoleName] already exists.
status code: 409, request id: ***

我还尝试使用将角色导入状态文件terraform import aws_iam_role.RoleName RoleName并成功导入。我还可以查看所述状态文件并确认RoleName确实已创建。然后当我运行terraform plan它时,它无论如何都想创建相同的角色!

什么可能导致 terraform 兼顾薛定谔的 IAM 角色?你能指出我如何走出这个炼狱的正确方向吗?

注意

主文件

resource "aws_iam_role" "[RoleName]" {
  name               = "[RoleName]-${var.aws_region}"
  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Effect": "Allow",
      "Sid": ""
    }
  ]
}
EOF
}

标签: terraformterraform0.12+

解决方案


推荐阅读