terraform - Terraform,创建可选的地图列表
问题描述
我正在尝试创建一个可选的 iam 策略,但我不断收到类型不匹配的错误,我尝试将其包装在 try 等中,但它从未成功,有人有什么想法吗?
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 的格式是
ssm_parameters = [
{
name = "blah"
region = "blah"
account = "blah"
}
]
解决方案
好的,我通过在 try 中添加 coaleselist 来避免 if 语句来解决它,所以如果它是空的,它将失败到一个空列表
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 = "*"
}
], [])
推荐阅读
- git - 带有 Git 流的 Github
- azure - Azure 在 DNS 区域中自动进行 CNAME 检查?
- r - 如何创建一系列显示变量随时间变化的图?
- android - Android WebRTC 随机崩溃,致命信号 6 (SIGABRT)、tid 1191 (TimeCheckThread) 中的代码 -6 (SI_TKILL)、pid 656 (audioserver)
- php - WordPress:无法声明类 WP_Privacy_Policy_Content
- java - Selenium 未从站点获取定义的 cookie
- azure-devops - 链接到另一个 Markdown 文件中的部分
- django - 字段 'id' 需要一个数字,但得到了
错误 - java - 如何在控制器的 @ModelAttribute 中获取 List 对象?
- android - TMapView 上的 Delphi 对象