2017-08-03 179 views
4

我想将多个IAM策略ARN附加到单个IAM角色。如何使用Terraform将多个IAM策略附加到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”

回答

4

感谢克里希纳·库马尔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]}" 
} 
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}" 
} 
+0

感谢解决了我的目的,但是能否有更简洁的方式将ARN作为列表传递。 其实我以类似的方式创建了一个模块,创建一个角色附加多个策略,但执行两次是覆盖以前的附件。 –