terraform - 如何在 Terraform 中创建尚不存在的 IAM 角色?
问题描述
你点击了这个问题,认为答案显然只是,“运行terraform apply
,duh”,不是吗?很简单,对吧?好吧,我的朋友,没有什么是简单的XD
当我运行list-roles
usingaws 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 角色?你能指出我如何走出这个炼狱的正确方向吗?
注意
- 我正在使用 Terraform v0.12.31。
- 我看到Terraform (0.12.29) 导入没有按预期工作;导入成功,但计划显示破坏和重新创建,但角色没有强制替换,terraform 想要创建新的。
- 资源代码如下。
主文件
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
}
解决方案
推荐阅读
- python - Python 9x9 和 3x3 数组验证不包括 0
- laravel - Gitpod托管的laravel应用程序自动显示laravel安装页面而不显示主页
- xml - 如何根据使用情况定义具有空 $value 的元素?
- json - 如何在数组元素具有多种类型的 Go 中解析 JSON?
- visual-studio-code - 有什么方法可以让某些片段在没有确认的情况下自动扩展?
- python - 使用 Python OpenCV 从视差/深度图计算尺度模糊因子
- javascript - Javascript选中复选框结果?
- here-api - 支付往返费用的巨大差异
- blob - 如何将 50GB 文件上传到 Azure blob 存储(使用 .net sdk)
- javascript - 单击按钮时如何从地图功能加载更多项目