处理Terraform AMI返回空列表
有没有比下面更好的方法来处理返回空列表的地形数据资源aws\u ami\u ID 始终希望模块返回最新的AMI ID(如果找到) 如果列表为空,我将获得一个“列表”数据。aws\u ami\u ids.full\u unencrypted\u ami.ids“没有任何元素,因此无法确定类型。”错误,因此这是解决方法处理Terraform AMI返回空列表,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,有没有比下面更好的方法来处理返回空列表的地形数据资源aws\u ami\u ID 始终希望模块返回最新的AMI ID(如果找到) 如果列表为空,我将获得一个“列表”数据。aws\u ami\u ids.full\u unencrypted\u ami.ids“没有任何元素,因此无法确定类型。”错误,因此这是解决方法 data "aws_ami_ids" "full_unencrypted_ami" { name_regex = "${var.ami_unenc
data "aws_ami_ids" "full_unencrypted_ami" {
name_regex = "${var.ami_unencrypted_regex}"
owners = ["123456789","self"]
}
locals {
notfound = "${list("AMI Not Found")}"
unencrypted_ami = "${concat(data.aws_ami_ids.full_unencrypted_ami.ids,local.notfound)}"
}
output "full_ami_unencrypted_id" {
description = "Full Unencrypted AMI ID"
value = "${local.full_unencrypted_ami[0]}"
}
1) 使用aws\u-ami\u id
而不是aws\u-ami\u id
,以便terraform apply
在ami消失时失败,迫使您更新terraform解决方案
或
2) 创建两个aws\u ami\u id
数据源(第二个是备用数据源),收集结果并获取第一项。但是,正如所暗示的,为什么您希望这种隐式(可能未被检测到的)回退?1)使用aws\u ami\u id
而不是aws\u ami\u id
,以便terraform apply
在ami消失时失败,迫使您更新terraform解决方案
或
2) 创建两个
aws\u ami\u id
数据源(第二个是备用数据源),收集结果并获取第一项。但是,正如所暗示的,为什么您希望这种隐式(可能未被检测到)回退?如果没有找到AMI,您会怎么做?您是否需要以某种方式处理该问题,或者您可以让Terraform出错?@ydaetskcoR最初使用的是aws_ami_id资源,但如果出现空结果错误,aws_ami_id将返回一个空列表,但调用代码需要一个ami id,因此需要重构来处理列表,以及列表是否为空。我希望terraform稍后会失败,因为“AMI Not Found”Id将用于ASG等。调用模块如何处理空列表?它是否默认为一些随机AMI?如果它不能合理地处理它,那么为什么你要尝试这样做而不是仅仅使用aws\u ami\u id
数据源呢?如果没有找到ami,你会怎么做?您是否需要以某种方式处理该问题,或者您可以让Terraform出错?@ydaetskcoR最初使用的是aws_ami_id资源,但如果出现空结果错误,aws_ami_id将返回一个空列表,但调用代码需要一个ami id,因此需要重构来处理列表,以及列表是否为空。我希望terraform稍后会失败,因为“AMI Not Found”Id将用于ASG等。调用模块如何处理空列表?它是否默认为一些随机AMI?如果它不能合理地处理它,那么为什么您要尝试这样做,而不是仅仅使用aws\u ami\u id
数据源?