Terraform 映射键为空字符串时的条件动态块
我有一个动态语句,我想在其中选择性地创建一个iam策略语句Terraform 映射键为空字符串时的条件动态块,terraform,Terraform,我有一个动态语句,我想在其中选择性地创建一个iam策略语句 dynamic "statement" { for_each = var.deploy == "true" && contains(keys(var.env_vars), "enable") ? [var.env_vars.enable] : [] content { actions = [ "lambda:In
dynamic "statement" {
for_each = var.deploy == "true" && contains(keys(var.env_vars), "enable") ? [var.env_vars.enable] : []
content {
actions = [
"lambda:InvokeFunction",
"lambda:InvokeAsync"
]
resources = ["arn:aws:lambda:${var.region}:${data.aws_caller_identity.current.account_id}:function:${statement.value}"]
effect = "Allow"
}
}
但是,如果有人将“enable”设置为“”字符串,则会创建iam策略语句。这不是我想要的
我的直接想法是添加一个条件,确保env var“enable”不是空字符串
dynamic "statement" {
for_each = (var.deploy == "true" &&
contains(keys(var.env_vars), "enable") &&
var.env_vars.enable != "" ? <<--HERE
[var.env_vars.enable] :
[])
content {
actions = [
"lambda:InvokeFunction",
"lambda:InvokeAsync"
]
resources = ["arn:aws:lambda:${var.region}:${data.aws_caller_identity.current.account_id}:function:${statement.value}"]
effect = "Allow"
}
}
如何从var.env_vars映射中删除任何值为“”的项?好的,我知道了。这将从
env_vars
中删除所有值为“”字符串的项目。解决我的问题
locals {
env_vars = { for k, v in var.env_vars : k => v if v != ""}
}
好的,我知道了。这将从
env_vars
中删除所有值为“”字符串的项目。解决我的问题
locals {
env_vars = { for k, v in var.env_vars : k => v if v != ""}
}
下面是一个关于
var.env\u vars.enable!=“
,如果您仍感兴趣
基本上不是
var.env_vars.enable != ""
您可以使用执行以下操作:
下面是一个关于
var.env\u vars.enable!=“
,如果您仍感兴趣
基本上不是
var.env_vars.enable != ""
您可以使用执行以下操作: