terraform replace()-无效的“替换”值;str";参数:需要字符串

terraform replace()-无效的“替换”值;str";参数:需要字符串,terraform,terraform0.12+,Terraform,Terraform0.12+,尝试升级到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], ".", "-")}" |-----------

尝试升级到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记录。我根据这个_mybox.private _ip[0]给它命名。在地形0.11.14中,其工作良好;但是由于这个原因,我在升级上遇到了障碍


在aws_route53_记录名称中使用replace()还有其他方法吗?

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

引用hashicorp terraform aws模块/terraform-aws-ec2实例代码库,我看到变量.tf private_ip没有定义字符串。自0.12更新以来,他们在private_ip下添加了line type=string。现在我需要弄清楚如何修复远程状态文件以反映此更改。它将它视为元组?你知道怎么做吗?你正在引用模块的输出,你可以看到,
private\u ip
是一个列表。所以
module.this\u mybox.private\u ip[0][0]
你应该或者已经试过了吗?你好!我一开始一定是弄错了。module.this_mybox.private_ip[0][0]最终运行正常!谢谢你,尼科林!很乐意提供帮助:)参考hashicorp terraform aws模块/terraform-aws-ec2-instance代码库,我发现变量.tf private_ip没有定义字符串。自0.12更新以来,他们在private_ip下添加了line type=string。现在我需要弄清楚如何修复远程状态文件以反映此更改。它将它视为元组?你知道怎么做吗?你正在引用模块的输出,你可以看到,
private\u ip
是一个列表。所以
module.this\u mybox.private\u ip[0][0]
你应该或者已经试过了吗?你好!我一开始一定是弄错了。module.this_mybox.private_ip[0][0]最终运行正常!谢谢你,尼科林!乐意帮忙:)