У меня есть 2 роли IAM для разных лямбда-выражений, и я хочу, чтобы у них обеих были одинаковые разрешения IAM.
Как я могу сделать это, не дублируя описания политик IAM, что весьма подвержено ошибкам.
В приведенном ниже коде у меня есть 2 ресурса роли IAM и 2 ресурса политики. Я знаю, что у меня не будет единственной политики, которую они могут использовать, но, может быть, я мог бы хотя бы поместить JSON тело политики в какую-нибудь повторно используемую переменную?
resource "aws_iam_role" "lambda1" {
name = "L1-LambdaRole"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
resource "aws_iam_role" "lambda2" {
name = "L2-LambdaRole"
assume_role_policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
EOF
}
resource "aws_iam_role_policy" "l1_dynamodb_policy" {
name = "Allow_DynamoDb"
role = "${aws_iam_role.lambda1.id}"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:DescribeTable",
"dynamodb:BatchWriteItem"
],
"Resource": [
"${aws_dynamodb_table.audtiTable.arn}"
]
}
]
}
EOF
}
resource "aws_iam_role_policy" "l2_dynamodb_policy" {
name = "Allow_DynamoDb"
role = "${aws_iam_role.lambda2.id}"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:DescribeTable",
"dynamodb:BatchWriteItem"
],
"Resource": [
"${aws_dynamodb_table.audtiTable.arn}"
]
}
]
}
EOF
}