Terraform:附加非托管 IAM 角色
Posted
技术标签:
【中文标题】Terraform:附加非托管 IAM 角色【英文标题】:Terraform: Attaching an unmanaged IAM role 【发布时间】:2020-09-15 00:21:06 【问题描述】:地形版本:12
我们有一个不受 Terraform IAM 管理的遗留角色,我想从 aws_iam_policy_attachment
块中引用它,我尝试了以下操作:
resource "aws_iam_policy_attachment" "example-attach"
name = "example-attach"
roles = [
aws_iam_role.managed-role.name,
"arn:aws:iam::1234567890:role/unmanaged-role"
]
policy_arn = aws_iam_policy.example-policy.arn
Dry-run 工作正常,但应用 TF 时说:
– ValidationError: roleName 的指定值无效。它必须只包含字母数字字符和/或以下字符:+=,.@_-
有没有一种方法可以只引用非托管角色而不在 TF 中定义它?或者是否有一些非破坏性的声明方式不会改变与非托管角色有关的任何内容?
【问题讨论】:
【参考方案1】:在您的 roles
中,您提供的是角色 ARN,而不是角色名称。
因此,您应该使用其名称而不是 ARN:
resource "aws_iam_policy_attachment" "example-attach"
name = "example-attach"
roles = [
aws_iam_role.managed-role.name,
"unmanaged-role"
]
policy_arn = aws_iam_policy.example-policy.arn
你也可以使用data_source
data "aws_iam_role" "example"
name = "unmanaged-role"
并在您的资源中引用它:
resource "aws_iam_policy_attachment" "example-attach"
name = "example-attach"
roles = [
aws_iam_role.managed-role.name,
data.aws_iam_role.example.name
]
policy_arn = aws_iam_policy.example-policy.arn
【讨论】:
以上是关于Terraform:附加非托管 IAM 角色的主要内容,如果未能解决你的问题,请参考以下文章
Terraform:将 AWS 托管策略附加到角色的正确方法?
创建附加到用户的 IAM 策略,限制用户使用某些操作创建自定义托管策略