如何消除 aws_route_table 定义上的弃用警告?

如何消除 aws_route_table 定义上的弃用警告?

我的所有路由表定义在规划/应用阶段都会抛出弃用警告。我不知道应该如何定义我的路由才能不再收到这些警告。

以下是我的一个路由表资源的示例:

resource "aws_route_table" "rtb_public" {
  vpc_id = aws_vpc.app_vpc.id
  route = [
    {
      cidr_block                 = "0.0.0.0/0"
      gateway_id                 = aws_internet_gateway.app_igw.id
      egress_only_gateway_id     = ""
      instance_id                = ""
      ipv6_cidr_block            = null
      nat_gateway_id             = ""
      network_interface_id       = ""
      transit_gateway_id         = ""
      vpc_peering_connection_id  = ""
      carrier_gateway_id         = ""
      core_network_arn           = ""
      destination_prefix_list_id = ""
      local_gateway_id           = ""
      vpc_endpoint_id            = ""
    }
  ]
  tags = {
    Name = "${var.vpc_name}-rtb-public"
  }
}

这会导致 Terraform 输出以下结果:

Warning: Argument is deprecated
...
Use network_interface_id instead

文档提到instance_id已弃用。但是,如果我尝试将其从我的路线中删除,我会收到一条错误消息,提示我需要 instance_id。

以防万一,以下是我的状态文件中的版本:

"version": 4,
"terraform_version": "1.3.9",
"serial": 83,

答案1

事实证明,只有当 aws_route_table.route 参数为数组时,所有这些属性才需要在路由对象上。将路由参数更改为单个对象允许我删除所有未使用的对象属性,如下所示:

resource "aws_route_table" "rtb_public" {
  vpc_id = aws_vpc.app_vpc.id
  route {
    cidr_block      = "0.0.0.0/0"
    gateway_id      = aws_internet_gateway.app_igw.id
    ipv6_cidr_block = null
  }
  tags = {
    Name = "${var.vpc_name}-rtb-public"
  }
}

第一次使用时,这并不奏效,因为我错误地设置了=后续路线。

相关内容