Amazon web services 如何在terraform中使用AWS提供程序创建可组合的IAM策略

Amazon web services 如何在terraform中使用AWS提供程序创建可组合的IAM策略,amazon-web-services,terraform,amazon-iam,terraform-provider-aws,Amazon Web Services,Terraform,Amazon Iam,Terraform Provider Aws,我开始从一些内部脚本转移到terraform。在我当前的设置中,我有一组IAM策略语句,我将它们组合在一起以创建单个IAM角色。其中一些是模板。我不知道如何在terraform中实现类似的重复数据消除 数据源几乎就是我想要的,但它只允许一个source\u json 我能想到的最好办法是为所有组件提供数据源,然后执行以下操作: dynamic "statement" { for_each = concat(set1, set2, set3, set4, ...) content {

我开始从一些内部脚本转移到terraform。在我当前的设置中,我有一组IAM策略语句,我将它们组合在一起以创建单个IAM角色。其中一些是模板。我不知道如何在terraform中实现类似的重复数据消除

数据源几乎就是我想要的,但它只允许一个
source\u json

我能想到的最好办法是为所有组件提供数据源,然后执行以下操作:

dynamic "statement" {
  for_each = concat(set1, set2, set3, set4, ...)
  content {
      sid = statement.sid
      actions = statement.actions
      resources = statement.resources
      ...
  }
}

但这有点混乱,我需要为每个iam角色重复这个定义,而且我实际上不确定如果其中一个字段未定义(例如,如果它没有Sid),引用将如何工作。

是否有理由不创建多个资源并将它们附加到同一个角色?哦,我想这在大多数情况下都有效。例外情况是如果有超过10个,因为我会达到附加到角色的策略的限制。这是您不创建多个资源并将它们附加到同一个角色的原因吗?哦,我想这在大多数情况下都有效。例外情况是如果超过10个,因为我会达到角色附加策略的限制