首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform:将复杂对象的集合映射到特定属性的列表中

Terraform:将复杂对象的集合映射到特定属性的列表中
EN

Stack Overflow用户
提问于 2021-05-05 08:31:48
回答 1查看 235关注 0票数 1

我有一组复杂的对象,例如通过数据接收的DynamoDB表

代码语言:javascript
复制
data "aws_dynamodb_table" "table" {
  for_each = toset([
    "table-1",
    "table-2",
    "table-3",
  ])
  name     = each.value
}

我想在不同的地方使用一些表属性,例如创建指向lambda函数的事件源映射,这非常容易:

代码语言:javascript
复制
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策略中直接使用它作为资源了?

代码语言:javascript
复制
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"
}

我确信地形文档给了我一个答案,但我找不到它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-05 08:38:31

由于使用了data.aws_dynamodb_table.table,所以您的映射必须使用values来获取arn的所有值:

代码语言:javascript
复制
 resources = values(data.aws_dynamodb_table.table)[*].arn
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67397753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档