web-dev-qa-db-ja.com

Terraformを使用して複数のIAMポリシーをIAMロールにアタッチする方法

複数のIAMポリシーARNを単一のIAMロールにアタッチしたい。

1つの方法は、すべてのポリシー(複数のポリシー)の特権を持つ新しいポリシーを作成することです。

ただし、AWSには、AmazonEC2FullAccessAmazomS3FullAccessなど。これらの組み合わせを自分の役割に使用したい。

Terraformのドキュメントでその方法を見つけることができませんでした。

ドキュメントごとに aws_iam_role_policy_attachment はポリシーをロールにアタッチしますが、AWSコンソールを介して利用できるため、複数のポリシーをロールにアタッチしません。

同じことを行う方法があるか、それともまだ追加する機能があるかどうかを教えてください。

私が使用するTerraformバージョンはv0.9.5

9
Pranshu Verma

ヒントをくれたクリシュナ・クマール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]}"
}
16
Pranshu Verma

次のようなものを試しましたか:

resource "aws_iam_role" "iam_role_name" {
  name = "iam_role_name"
}

resource "aws_iam_role_policy_attachment" "mgd_pol_1" {
  name       = "mgd_pol_attach_name"
  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" {
  name       = "mgd_pol_attach_name"
  role       = "${aws_iam_role.iam_role_name.name}"
  policy_arn = "${aws_iam_policy.mgd_pol_2.arn}"
}
7
krishna_mee2004