Terraform - 未在根模块中声明托管资源

Tam*_*van 5 terraform terraform-provider-aws

我正在尝试使用 terraform 创建 ec2 实例并设置负载均衡器,但我正面临以下错误。如何在单个 main.tf 文件中创建实例和配置负载均衡器?

错误:引用未声明的资源

"aws_lb_target_group" "front-end":27: vpc_id = "${aws_vpc.terrafom-elb.id}" 托管资源 "aws_vpc" "terrafom-elb" 尚未在根模块中声明。source`

代码:

  region = "us-east-1"
  access_key = "*********************"
  secret_key = "**********************"
}

resource "aws_instance" "terraform" {
  ami           = "ami-07ebfd5b3428b6f4d"
  instance_type = "t2.micro"
  security_groups    = ["nodejs","default"]
  tags = {
    Name = "terrafom-elb"
  }
}

resource "aws_lb" "front-end"{
  name = "front-end-lb"
  internal = false
  security_groups    = ["nodejs"]

}

resource "aws_lb_target_group" "front-end" {
  name     = "front-end"
  port     = 8989
  protocol = "HTTP"
  vpc_id   = "${aws_vpc.terrafom-elb.id}"
  depends_on = [aws_instance.terraform]
}
Run Code Online (Sandbox Code Playgroud)

小智 12

您分配 vpc_id 时存在拼写错误:

vpc_id   = "${aws_vpc.terrafom-elb.id}"
Run Code Online (Sandbox Code Playgroud)

应该:

vpc_id   = "${aws_vpc.terraform-elb.id}"
Run Code Online (Sandbox Code Playgroud)

注意“terraform”一词中缺少的“r”


小智 5

您可以data在顶部添加一个结构并将 VPC ID 作为变量传递:

data "aws_vpc" "selected" {
  id = var.vpc_id
}
Run Code Online (Sandbox Code Playgroud)

并将其引用为 vpc_id = data.aws_vpc.selected.id