首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform,创建可选地图列表

Terraform,创建可选地图列表
EN

Stack Overflow用户
提问于 2021-10-07 12:57:33
回答 1查看 47关注 0票数 0

我试图创建一个可选的iam策略,但我一直收到类型不匹配的错误,我尝试过将它包装在try中,但从来没有成功过,有人有什么想法吗?

代码语言:javascript
复制
  ssm_readonly_policies = can(coalescelist(local.ssm_parameters)) ? [
    {
      Sid    = "ReadOnlyParametersSSM"
      Effect = "Allow"
      Action = [
        "ssm:GetParameter*"
      ]
      Resource = flatten([for param in local.ssm_parameters : join(":", [
        "arn:aws:ssm", param["region"], param["account"], join("/", ["parameter", param["name"]])
      ])])
    },
    {
      Sid      = "ListOnlyParametersSSM"
      Effect   = "Allow"
      Action   = "ssm:DescribeParameters"
      Resource = "*"
    }
  ] : []

local.ssm_parameters的格式为

代码语言:javascript
复制
ssm_parameters = [
   {
     name = "blah"
     region = "blah"
     account = "blah"
   }
 ]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-20 11:14:35

好的,我避免了if语句,在try中添加了coaleselist,所以如果它是空的,它将失败为空列表

代码语言:javascript
复制
  ssm_readonly_policies = try([
    {
      Sid    = "ReadOnlyParametersSSM"
      Effect = "Allow"
      Action = [
        "ssm:GetParameter*"
      ]
      Resource = flatten([for param in coalescelist(local.ssm_parameters) : join(":", [
        "arn:aws:ssm", param["region"], param["account"], join("/", ["parameter", param["name"]])
      ])])
    },
    {
      Sid      = "ListOnlyParametersSSM"
      Effect   = "Allow"
      Action   = "ssm:DescribeParameters"
      Resource = "*"
    }
  ], [])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69481610

复制
相关文章

相似问题

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