【发布时间】:2021-04-28 11:59:29
【问题描述】:
当我尝试使用这样的插值语法时:
vpc_id = "${aws_vpc.prod-vpc.id}"
我在 IntelliJ 中得到“插值可以被 HCL2 表达式替换”的建议,所以如果我将这一行改为:
vpc_id = "aws_vpc.prod-vpc.id"
并发出 terraform apply,我得到:
C:\tf_ptojects\aws\subnet>terraform apply -auto-approve
aws_subnet.prod-subnet: Creating...
aws_vpc.prod-vpc: Creating...
aws_vpc.prod-vpc: Creation complete after 2s [id=vpc-0cfb27255522bdf15]
Error: error creating subnet: InvalidVpcID.NotFound: The vpc ID 'aws_vpc.prod-vpc.id' does not exist
status code: 400, request id: dab3fb03-424d-4bf2-ace6-bef93a94ee9c
如果我重新应用插值语法并再次运行 terraform apply,则会部署资源,但我在 Terraform 中收到警告,说不推荐使用仅插值表达式:
Warning: Interpolation-only expressions are deprecated
on main.tf line 16, in resource "aws_subnet" "prod-subnet":
16: vpc_id = "${aws_vpc.prod-vpc.id}"
所以 TF 不鼓励使用插值语法,但如果不使用它会发出错误。是某种错误还是什么?
C:\tf_ptojects\aws\subnet>terraform -version
Terraform v0.14.4
+ provider registry.terraform.io/hashicorp/aws v3.25.0
整个 TF 代码供参考:
provider "aws" {
region = "eu-central-1"
}
resource "aws_vpc" "prod-vpc" {
cidr_block = "10.100.0.0/16"
tags = {
name = "production vpc"
}
}
resource "aws_subnet" "prod-subnet" {
cidr_block = "10.100.1.0/24"
vpc_id = "aws_vpc.prod-vpc.id"
tags = {
name = "prod-subnet"
}
}
【问题讨论】:
标签: terraform terraform-provider-aws