Если вы присоединяете политику, которая уже существует в учетной записи, я бы использовал источник данных для ее запроса.Вы должны знать ARN, чтобы использовать источник данных политики IAM, чтобы он не сильно отличался от указания ARN непосредственно в ресурсе aws_iam_role_policy_attachment
, за исключением того, что он позволяет команде terraform plan
проверить, что политика существует до запуска apply
, этодополнительная гарантия для вас.Источник данных также дает вам дополнительную информацию о ресурсе, если он вам нужен.
data "aws_iam_policy" "security_audit" {
arn = "arn:aws:iam::${var.target_account_id}:policy/SecurityAudit"
}
# BEGIN 'foo'
resource "aws_iam_role" "foo" {
name = "${terraform.workspace}_Foo"
path = "/"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"automation.amazonaws.com",
"events.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::${var.other_aws_account_id}:role/your_role_name_and_path_here"
]
},
"Action": "sts:AssumeRole"
}
]
}
EOF
}
resource "aws_iam_role_policy_attachment" "foo" {
policy_arn = "${data.aws_iam_policy.security_audit.arn}"
role = "${aws_iam_role.foo.name}"
}