【问题标题】:Terraform: Attaching an unmanaged IAM roleTerraform:附加非托管 IAM 角色
【发布时间】: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 中定义它?或者是否有一些非破坏性的声明方式不会改变与非托管角色有关的任何内容?

【问题讨论】:

    标签: amazon-web-services terraform terraform-provider-aws


    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 2020-09-01
      • 1970-01-01
      • 2018-11-10
      • 2021-03-01
      • 2021-04-29
      • 2017-12-13
      • 2017-10-22
      • 1970-01-01
      相关资源
      最近更新 更多