首页 > 解决方案 > Terraform - 未在根模块中声明托管资源

问题描述

我正在尝试使用 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]
}

标签: terraformterraform-provider-aws

解决方案


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

data "aws_vpc" "selected" {
  id = var.vpc_id
}

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


推荐阅读