我的所有路由表定义在规划/应用阶段都会抛出弃用警告。我不知道应该如何定义我的路由才能不再收到这些警告。
以下是我的一个路由表资源的示例:
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"
}
}
第一次使用时,这并不奏效,因为我错误地设置了=
后续路线。