Terraform 错误:创建路由时出错:InvalidEgressOnlyInternetGatewayId.Malformed

Nah*_*hum 5 amazon-web-services amazon-vpc terraform terraform-provider-aws

我开启了人生的新篇章,这个 IaC(基础设施即代码)的世界真是太神奇了……

我在 YouTube 上看到了一个免费课程,介绍如何开始在 AWS 中使用 Terraform,但一路上有些东西无法正常工作,尽管代码看起来与视频和我的一样。

这是代码和结果。我将非常感谢您帮助我了解问题所在。

地形详细信息:

地形 v0.14.10

  • 提供商registry.terraform.io/hashicorp/aws v3.36.0

    代码:

    3. 创建自定义路由表

    resource "aws_route_table" "prod-route-table" {
      vpc_id = aws_vpc.prod-vpc.id
    
      route {
        cidr_block = "0.0.0.0/0"
        gateway_id = aws_internet_gateway.gw.id
      }
    
      route {
        ipv6_cidr_block        = "::/0"
        egress_only_gateway_id = aws_internet_gateway.gw.id
      }
    
      tags = {
        Name = "example"
      }
    }
    
Run Code Online (Sandbox Code Playgroud)

4. 创建子网

    resource "aws_subnet" "subnet_1" {
      vpc_id            = aws_vpc.prod-vpc.id
      cidr_block        = "10.0.1.0/24"
      availability_zone = "us-east-1e"
    
      tags = {
        "name" = "Prod-subnet"
      }
    }
Run Code Online (Sandbox Code Playgroud)

5. 将子实体与路由表关联

    resource "aws_route_table_association" "a" {
    
      subnet_id      = aws_subnet.subnet_1.id
      route_table_id = aws_route_table.prod-route-table.id
    
    }
Run Code Online (Sandbox Code Playgroud)

错误:

    Error: error creating route: InvalidEgressOnlyInternetGatewayId.Malformed: Invalid id: "igw-07f6dac9f8bd89fd5" (expecting "eigw-...")
            status code: 400, request id: 7f7e2445-f537-4113-a52e-ac6b32dee888
    
      on main.tf line 26, in resource "aws_route_table" "prod-route-table":
      26: resource "aws_route_table" "prod-route-table" {

Run Code Online (Sandbox Code Playgroud)

我只添加了错误也指向我的代码部分。

JD *_*D D 5

您没有显示如何创建aws_internet_gateway.gw资源的代码,但问题是该资源是普通的 Internet 网关,但您将值传递到egress_only_gateway_id需要仅出口 Internet 网关的 ID 的字段。

解决方案是将aws_internet_gateway资源更新为资源aws_egress_only_internet_gateway,或者将属性更新routegateway_id需要正常 Internet 网关 ID 而不是仅出口网关的属性。

如果您刚刚开始使用这些东西,我现在会避免仅出口互联网网关。