微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Terraform:附加不受管理的IAM角色

如何解决Terraform:附加不受管理的IAM角色

terraform版本: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
}

试运行可以正常工作,但是在应用TF时说:

– ValidationError:roleName的指定值无效。它只能包含字母数字字符和/或以下内容:+ =,。@ _-

有没有办法我可以引用非托管角色而不在TF中定义它?还是有某种非破坏性的方式声明它与非托管角色没有任何关系?

解决方法

在您的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
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。