terraform replace() - "str" 参数的无效值:需要字符串
terraform replace() - Invalid value for "str" parameter: string required
尝试升级到 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] 命名它。在 Terraform 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 地址
尝试升级到 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] 命名它。在 Terraform 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]
.