I want to create multiple aws_iam_policy_document
resources with for_each
, to be later assumed by several roles, as follows:
# Policy to allow services to assume the role
data "aws_iam_policy_document" "this" {
for_each = var.lambda_configuration
statement {
actions = ["sts:AssumeRole"]
principals {
type = "Service"
identifiers = [
"lambda.amazonaws.com",
"apigateway.amazonaws.com",
]
}
}
}
# IAM role for executing the Lambda function
resource "aws_iam_role" "this" {
for_each = var.lambda_configuration
name = "my_lambda_${each.key}_Executor_Role"
description = "Role for executing my_lambda-${each.key} function"
assume_role_policy = data.aws_iam_policy_document.assume_role_policy_[each.key].json
}
How should I interpolate this
assume_role_policy = data.aws_iam_policy_document.assume_role_policy_[each.key].json
to make the correct matching with the roles?
CodePudding user response:
The correct syntax:
data.aws_iam_policy_document.this[each.key].json
Note that this is not interpolation, as you mentioned in your question. It is just a value lookup. And I have no idea where you got assume_role_policy_
from, but that is not valid HCL syntax.