terraform replace() - "str"参数的值无效:需要字符串



尝试升级到Terraform 0.12时,出现以下错误:

Error: Invalid function argument
on ../../../../../modules/aws/mybox/main.tf line 85, in resource "aws_route53_record" "this":
85:   name = "ip-${replace(module.this_mybox.private_ip[0], ".", "-")}"
|----------------
| module.this_mybox.private_ip[0] is tuple with 1 element
Invalid value for "str" parameter: string required.

查看下面的自定义模块,我似乎无法使用字符串中的 replace(( 函数......

resource "aws_route53_record" "this" {
name = "ip-${replace(module.this_mybox.private_ip[0], ".", "-")}"
type = "A"
zone_id = "${var.dns_zone_id}"
records = "${module.this_mybox.private_ip[0]}"
ttl = "600"
}

该模块的目标是根据自定义参数启动 EC2。除此之外,还有一些活动部分,包括添加私有 dns 记录。我根据this_mybox.private_ip[0]命名它。在地形 0.11.14 中,它工作正常;但因此,我在升级时受到阻碍。

有没有另一种方法可以在aws_route53_record名称中使用 replace((?

错误消息说module.this_mybox.private_ip[0]是一个元组,这就是replace失败的原因。此值也用于此处records = "${module.this_mybox.private_ip[0]}",这需要一个列表。在您的问题中,我们看不到module.this_mybox.private_ip[0]的值,但根据错误消息,我建议使用module.this_mybox.private_ip[0][0]访问元组中的 IP 地址。

最新更新