2017-08-03 123 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作爲列表傳遞。 其實我以類似的方式創建了一個模塊,創建一個角色附加多個策略,但執行兩次是覆蓋以前的附件。 –