Amazon web services 在分离IGW之前解除EIP的关联

Amazon web services 在分离IGW之前解除EIP的关联,amazon-web-services,amazon-ec2,terraform,Amazon Web Services,Amazon Ec2,Terraform,当我修改VPC的子网时,将提供一个全新的VPC。IGW从旧VPC移动到新VPC。如果不阻止它移动,那就好了,因为弹性IP仍然连接到实例 我尝试了许多与依赖的组合 如果我手动解除EIP的关联,terraform IGW修改将永远停止等待 ######################## # ELASTIC IP # ######################## resource "aws_eip" "ip" {} # EIP association isolated fo

当我修改VPC的子网时,将提供一个全新的VPC。IGW从旧VPC移动到新VPC。如果不阻止它移动,那就好了,因为弹性IP仍然连接到实例

我尝试了许多与
依赖的组合

如果我手动解除EIP的关联,terraform IGW修改将永远停止等待

########################
#      ELASTIC IP      #
########################
resource "aws_eip" "ip" {}

# EIP association isolated for testing "depends on"
resource "aws_eip_association" "eip_assoc" {
  instance_id   = "${aws_instance.vpn_server.id}"
  allocation_id = "${aws_eip.ip.id}"
  depends_on = ["aws_internet_gateway.gw","aws_vpc.vpc"]
}

########################
#    VPC CREATION      #
########################
resource "aws_vpc" "vpc" {
  cidr_block       = "${var.cidr}"
  enable_dns_support = true
  enable_dns_hostnames = true
  assign_generated_ipv6_cidr_block = "${var.ipv6}"
}

########################
#    IGW CREATION      #
########################
resource "aws_internet_gateway" "gw" {
  vpc_id = "${aws_vpc.vpc.id}"
}

########################
#      Instance        #
########################
resource "aws_instance" "vpn_server" {
  ami           = "${data.aws_ami.ami_amzn2.id}"
  instance_type = "t2.micro"
  key_name = "${aws_key_pair.key.key_name}"
  subnet_id = "${aws_subnet.a.id}"
  associate_public_ip_address = true
  ipv6_address_count = 1
  vpc_security_group_ids = ["${aws_default_security_group.sg.id}"]
  lifecycle { create_before_destroy = true }
  depends_on = ["aws_internet_gateway.gw"]
  user_data = "${data.template_file.user_data.rendered}"
}

########################
#   Subnets Creation   #
########################
data "aws_availability_zones" "available" {}

resource "aws_subnet" "a" {
    availability_zone = "${data.aws_availability_zones.available.names[0]}"
    vpc_id = "${aws_vpc.vpc.id}"
    cidr_block = "${cidrsubnet(aws_vpc.vpc.cidr_block, 2, 0)}"
    map_public_ip_on_launch = true

    # Bug Issue 688: https://github.com/terraform-providers/terraform-provider-aws/issues/688
    # Soon set even if no IPv6 for VPC
    # https://github.com/terraform-providers/terraform-provider-aws/pull/2103
    ipv6_cidr_block = "${var.ipv6 ? cidrsubnet(aws_vpc.vpc.ipv6_cidr_block, 8, 10) : ""}"
    assign_ipv6_address_on_creation = true
}

知道在IGW尝试移动到新的VPC之前,解除EIP关联的正确方法是什么吗?

Internet网关不需要任何费用,因此很难找到将IGW从一个VPC移动到另一个VPC的理由。@chriscatfr当您修改子网时,您是否正在更改“${aws_subnet.a.id}”?如果是这样的话,你能展示一下代码吗?@Michael sqlbot,Terraform是想将其从旧VPC中移除的人。我只是想更改VPC ip范围,并为我的服务器保留相同的弹性ip。@kenlukas,我编辑了这个问题以添加子网。我唯一更改的是VPC cidr_块,它也被子网使用。这个问题只是关于当我试图只改变这个苹果酒时会发生什么。有些依赖项是错误的:在我解除EIP关联之前,IGW无法从旧VPC中分离。