Как создать повторно используемый блок выписки для aws_iam_policy_document?
У меня есть несколько aws_iam_policy_document
как это
Policy1
data "aws_iam_policy_document" "policy1" {
statement {
actions = [
"rds:DescribeDBSnapshots"
]
resources = [
"arn:aws:rds:${var.region}:${local.account_id}:db:*
]
}
statement {
actions = [
"rds:RestoreDBInstanceFromDBSnapshot"
]
resources = [
"arn:aws:rds:${var.region}:${local.account_id}:db:*s",
"arn:aws:rds:${var.region}:${local.account_id}:snapshot:*"
]
}
}
policy2
data "aws_iam_policy_document" "policy2" {
statement {
actions = [
"rds:DescribeDBInstances",
"rds:ModifyDBInstance"
]
resources = [
"arn:aws:rds:${var.region}:${local.account_id}:db:*",
"arn:aws:rds:${var.region}:${local.account_id}:db:*"
]
}
}
И у меня есть еще несколько политик, которые имеют некоторые вариации.
Теперь я хочу иметь возможность вставить идентичный блок statement
ко всем этим политикам.
Это еще не проверено, но утверждение будет выглядеть так:
statement {
action = [
"ssm:GetParameter"
]
resources = [
"arn:aws:ssm:${var.region}:${local.account_id}:parameter/lambda/*"
]
}
Какой самый эффективный способ сделать это? Я хочу избежать копирования и вставки одного и того же блока заявления во все политики.
1 ответ
Я могу использовать source_json
ключевое слово.
Вот пример:
Прежде всего, определите общую политику в новом документе политики
data "aws_iam_policy_document" "common" {
statement {
action = [
"ssm:GetParameter"
]
resources = [
"arn:aws:ssm:${var.region}:${local.account_id}:parameter/lambda/*"
]
}
}
Затем в существующем документе политики используйте source_json
data "aws_iam_policy_document" "policy1" {
source_json = "${data.aws_iam_policy_document.common.json}"
statement {
....
}
}