我有一组复杂的对象,例如通过数据接收的DynamoDB表
data "aws_dynamodb_table" "table" {
for_each = toset([
"table-1",
"table-2",
"table-3",
])
name = each.value
}我想在不同的地方使用一些表属性,例如创建指向lambda函数的事件源映射,这非常容易:
resource "aws_lambda_event_source_mapping" "mapping" {
for_each = data.aws_dynamodb_table.table
batch_size = 100
event_source_arn = each.value.stream_arn
function_name = // some function ARN
starting_position = "LATEST"
}现在我陷入困境了,:它是如何得到一些特定字段的列表,比如表ARN,这样我就可以在IAM策略中直接使用它作为资源了?
statement {
actions = [
"dynamodb:PutItem",
"dynamodb:UpdateItem",
"dynamodb:Query",
"dynamodb:Scan"
]
# that's not how it works
resources = tolist(data.aws_dynamodb_table.table.*.arn)
effect = "Allow"
}我确信地形文档给了我一个答案,但我找不到它。
发布于 2021-05-05 08:38:31
由于使用了data.aws_dynamodb_table.table,所以您的映射必须使用values来获取arn的所有值:
resources = values(data.aws_dynamodb_table.table)[*].arnhttps://stackoverflow.com/questions/67397753
复制相似问题