【问题标题】:Loop iam resources terraform循环 iam 资源 terraform
【发布时间】:2021-12-08 01:28:55
【问题描述】:

我试图在 aws_iam_policy_document 语句的 resources 块内创建一个循环。

我确实有一个本地变量 accounts_to_protect,它是 AWS 账户 ID 的列表

locals {
  accounts_to_protect = tolist(setsubtract(var.all_accounts, var.blocked_accounts))
}

目前,我只使用列表的第一个索引

    resources = [
"arn:aws:ec2::${local.accounts_to_protect.0}:*"
]

我不知道如何在资源块中迭代它。我试图添加一个 for 但它似乎不起作用。我想为每个帐户 ID 分配一个资源。

【问题讨论】:

  • 使用此答案中的技术:stackoverflow.com/questions/51821961/… 来管理整个resources 列表。
  • 什么是var.all_accounts、var.blocked_accounts的例子?
  • var.all_accounts 是 AWS 账户 ID 的列表,例如 111111111、2222222,var.blocked_accounts 是另一个账户列表。如果 var.blocked_accounts 出现在 var.all_accounts 中,local.accounts_to_protect 将删除它们,并将所有内容放入新的帐户列表中。

标签: amazon-web-services loops terraform amazon-iam


【解决方案1】:

cmets 中已有一种可能的解决方案。第二个是:

    resources = [for account in local.accounts_to_protect: "arn:aws:ec2::${account}:*"]

【讨论】:

  • 它工作得很好,谢谢。是否可以用两个变量制作一个 for?像这样的资源 = [for account, services in local.accounts_to_protect, var.all_services: "arn:aws:${services}::${account}:*"] 其中 var.all_services 是一个字符串列表
  • @Michael003 是的,可以这样做,但细节取决于var.all_services 的确切性质。我建议使用相关示例和示例代码为此提出新问题。
猜你喜欢
  • 1970-01-01
  • 2020-01-21
  • 2017-09-17
  • 2021-12-27
  • 1970-01-01
  • 2021-11-25
  • 2021-10-04
  • 2021-08-28
  • 2021-10-05
相关资源
最近更新 更多