首页 文章

如何使用Terraform将多个IAM策略附加到IAM角色?

提问于
浏览
6

我想将多个IAM策略ARN附加到单个IAM角色 .

一种方法是创建具有所有策略(多个策略)特权的新策略 .

但在AWS中,我们有一些预定义的IAM策略,如AmazonEC2FullAccess,AmazomS3FullAccess等,我想将这些组合用于我的角色 .

我无法在Terraform文档中找到相同的方法 .

根据我们可以使用的文档

“aws_iam_role_policy_attachment”

将策略附加到角色但不将多个策略附加到角色,因为这可通过AWS控制台获得 .

https://www.terraform.io/docs/providers/aws/r/iam_role_policy_attachment.html

如果有相同的方法或者它仍然是要添加的功能,请告诉我 .

我正在使用的Terraform版本是 "Terraform v0.9.5"

2 回答

  • 5

    你尝试过这样的事情:

    resource "aws_iam_role" "iam_role_name" {
      name               = "iam_role_name_aws"
    }
    
    resource "aws_iam_role_policy_attachment" "mgd_pol_1" {
      role       = "${aws_iam_role.iam_role_name.name}"
      policy_arn = "${aws_iam_policy.mgd_pol_1.arn}"
    }
    
    resource "aws_iam_role_policy_attachment" "mgd_pol_2" {
      role       = "${aws_iam_role.iam_role_name.name}"
      policy_arn = "${aws_iam_policy.mgd_pol_2.arn}"
    }
    
  • 12

    谢谢Krishna Kumar R的提示 .

    我从你的回答中得到了更好的回答 .

    # Define policy ARNs as list
    variable "iam_policy_arn" {
      description = "IAM Policy to be attached to role"
      type = "list"
    }
    
    # Then parse through the list using count
    resource "aws_iam_role_policy_attachment" "role-policy-attachment" {
      role       = "${var.iam_role_name}"
      count      = "${length(var.iam_policy_arn)}"
      policy_arn = "${var.iam_policy_arn[count.index]}"
    }
    

相关问题