首页 > 解决方案 > 未找到 ID 为 vpc 的 vpc 的匹配子网

问题描述

我正在使用数据资源(Terraform .12)在 vpc 中查找 subnet_id 并最终创建 ec2 实例。VPC 已成功创建,但出现以下错误:

错误:未找到 ID 为 vpc-03a71967237294efe 的 vpc 的匹配子网

但是,如果再次执行,它会起作用。

module.my_vpc.aws_vpc.primary_vpc:正在创建...

module.my_vpc.aws_vpc.primary_vpc:3秒后创建完成[id=vpc-03a71967237294efe]

错误:未找到 ID 为 vpc-03a71967237294efe 的 vpc 的匹配子网

Main.tf
   vpc.tf
   public_subnet.tf
   ec2.tf

这是可重现的代码:

主文件

provider "aws" {
  region = "us-east-1"
  profile = "work"
  shared_credentials_file=">>>>>>>>>>"
}

module "my_vpc" {
  source = "../mod/vpc"
  vpc_cidr = "10.0.0.0/16"
}

module "pub_sub" {
  source = "../mod/pub_sub"  
  vpc_id  = "${module.my_vpc.id}"
} 

module "ec2" { 
  source = "../mod/instances"  
  vpc_id  = "${module.my_vpc.id}" 
} 

public_subnet.tf

  variable "sub_cdr" {
  type="list"
  default=["10.0.0.0/28", "10.0.0.16/28"]
}
variable "azs" {
type="list"
default=["us-east-1a","us-east-1b"]
}


data "aws_availability_zones" azs {}

variable "vpc_id" { }

resource aws_subnet "public_subnet"{
count=2
vpc_id=var.vpc_id
cidr_block=var.sub_cdr[count.index]
availability_zone=data.aws_availability_zones.azs.names[count.index]
tags= {Name = "pub-sub-${count.index + 1}"} 
}

output "pub_sub_id" {
  value = aws_subnet.public_subnet.*.id
}

ec2.tf

variable "vpc_id" { }

variable "instance_count" {
  default=1
}

data "aws_subnet_ids" "public" {
  vpc_id = var.vpc_id
  tags = {
    Name = "*pub-sub*"
  }

}

resource "aws_security_group" "pub_sg" {
  vpc_id = "${var.vpc_id}"
  name = "public-sg"
  ingress {
    from_port = 22
    protocol = "tcp"
    to_port = 22
    cidr_blocks = ["0.0.0.0/0"]
  }

  egress {
    from_port = 0
    protocol = "-1"
    to_port = 0
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_instance" "web-srvs" {
count=1
ami = "ami-035b3c7efe6d061d5"
instance_type = "t2.nano"
key_name="dell-dev"
subnet_id = element(tolist(data.aws_subnet_ids.public.ids), count.index)
vpc_security_group_ids = ["${aws_security_group.pub_sg.id}"]
associate_public_ip_address=true
tags = { 
     CountIndex = "${var.instance_count == "0" ? "" : format("%02d", count.index + 1)}"  
   }
}

非常感谢任何帮助。

标签: amazon-web-servicesresourcesterraformsubnetvpc

解决方案


我遇到了同样的问题,发现在 aws aws_subnet_ids 数据组件中添加depends_on 子句为我解决了这个问题。


推荐阅读