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

17

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

错误:引用未声明的资源

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

代码:

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

5
这个配置文件确实没有 aws_vpc 资源。你可以分享包含该资源的其他配置吗? - Matt Schuchard
2
或者你想使用的是数据源吗?如果是这种情况,你可以使用data.aws_vpc.terraform_elb。如果不是,那么Matt是正确的,需要其余的配置才能理解问题。 - nulse
vpc_id = "${aws_vpc.terrafom-elb.id}" 中缺少了 "r"。 - Sunil
在执行计划命令之前,请确保保存所有修改过的文件更改。 - undefined
2个回答

11

你在分配vpc_id时有一个错别字:

vpc_id   = "${aws_vpc.terrafom-elb.id}"

应该是:

vpc_id   = "${aws_vpc.terraform-elb.id}"

注意单词“terraform”中缺少字母“r”


10
您可以在顶部添加一个 data 结构,并将VPC ID作为变量传递:
data "aws_vpc" "selected" {
  id = var.vpc_id
}

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接