【问题标题】:Terraform: Interpolation could be replaced by HCL2 expressionTerraform:插值可以替换为 HCL2 表达式
【发布时间】: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


    【解决方案1】:

    您只需要在不使用双引号 vpc_id = aws_vpc.prod-vpc.id 的情况下获取 id,因为您正在从资源中获取 vpc id。 如果你使用双引号,它会被认为是一个字符串,不会进行评估,terraform 会将"aws_vpc.prod-vpc.id" 视为 id。

    这是更正后的代码:

    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"
      }
    }
    

    我已经测试了上面的代码 sn-p 并且它工作得非常好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      • 2016-03-17
      • 2016-10-14
      • 2017-02-05
      • 2018-01-19
      • 1970-01-01
      相关资源
      最近更新 更多