Terraform:未定义的远程状态处理
我有一个名为subnets的远程状态属性,它存储在:data.terraform\u remote\u state.alb.subnets中 根据部署的内容,此属性存在或不存在 当我尝试创建ECS群集时,它需要输入我要使用的子网组: data.terraform\u remote\u state.alb.子网 或 var.vpc_子网(vpc的子网) 不幸的是,由于插值的工作方式,需要将其拼凑在一起:Terraform:未定义的远程状态处理,terraform,Terraform,我有一个名为subnets的远程状态属性,它存储在:data.terraform\u remote\u state.alb.subnets中 根据部署的内容,此属性存在或不存在 当我尝试创建ECS群集时,它需要输入我要使用的子网组: data.terraform\u remote\u state.alb.子网 或 var.vpc_子网(vpc的子网) 不幸的是,由于插值的工作方式,需要将其拼凑在一起: "${split(",", length(var.vpc_subnets) == 0 ? jo
"${split(",", length(var.vpc_subnets) == 0 ? join(",",data.terraform_remote_state.alb.subnets) : join(",",var.vpc_subnets))}"
(参考:)
然而,由于Terraform似乎不会“懒散地”计算三元运算符,因此即使var.vpc_子网不为零,它也会引发以下错误:
Resource 'data.terraform_remote_state.alb' does not have attribute 'subnets' for variable 'data.terraform_remote_state.alb.subnets'
如何正确处理可能未定义的远程状态资源
编辑:输入:子网->子网它是
子网
还是子网
假设您有以下数据源:
data "terraform_remote_state" "alb" {
backend = "s3"
config {
name = "alb"
}
}
您需要检查“远程状态”属性是否有任何名称为子网的输出。或者密钥名称是子网
,您需要自己确认。设法找到它。
使用Terraform Remote State时,您可以设置默认值:
当我的数据“terraform\u remote\u state.alb.subnets
不返回值时,这在我的情况下有效。我可以将变量预设为“”,并使用局部变量对此变量进行检查。为什么不使用aws\u subnet\u ID
数据源来获取子网ID?抱歉,输入错误,它是子网(复数)。我已验证,如果此数据源确实存在,则它确实拉入了正确的值。您是否仍然存在此问题?