【问题标题】:Terraform - Unable to get default route table IDTerraform - 无法获取默认路由表 ID
【发布时间】:2021-03-16 19:39:18
【问题描述】:

我无法获取与私有子网关联的默认路由表 ID。

我收到以下错误。这似乎是在github 上报告的。我不确定如何获取私有子网的路由表 ID。

Your query returned no results. Please change your search criteria and try again.

我尝试的一种解决方法是使用 aws_subnet_ids 数据源,然后通过 使用带有 count 和 subnet_id 的 aws_route_table 数据源作为 每次迭代的参数,但这并不总是有效,因为 如果有一个或多个子网(非明确)关联 使用 Main 路由表,TF 会报错如下:

data.tf:

data "aws_route_table" "private_subnet_RT" {
  depends_on = [
    aws_subnet.private_subnet
  ]

  count     = length(var.availability_zones)
#  subnet_id = "${element(aws_subnet.private_subnet.*.id, count.index)}"
  subnet_id    = "subnet-01bae78f452ca0000"
}

子网.tf

# Create Private Subnets
resource "aws_subnet" "private_subnet" {
  count                   = length(var.availability_zones)

  vpc_id                  = var.vpc_id
  cidr_block              = var.private_subnet_cidr[count.index]
  availability_zone       = "${element(var.availability_zones, count.index)}"

  tags = merge({
    Name = "Private_subnet_${count.index} - ${var.environment}"
  }, var.private_subnet_tags)
}

虽然路由表没有显示它与子网关联..

【问题讨论】:

    标签: amazon-web-services terraform amazon-vpc


    【解决方案1】:

    我觉得过滤器应该适合你:

    data "aws_route_table" "selected" {
      vpc_id = var.vpc_id
      filter {
        name = "association.main"
        values = ["true"]
      }
    }
    

    如果您有兴趣查看更多过滤器,请导航至官方 aws 资源 -> https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeRouteTables.html

    【讨论】:

      【解决方案2】:

      如果这可以帮助任何人。

       data "aws_route_table" "selected" {
        subnet_id = var.subnet_id
      }
      

      这只会返回与路由表有明确关联的子网的路由表 ID。这意味着如果子网未与任何路由表关联并最终成为主路由表的一部分,则不会由此返回,直到您通过将该子网与主路由表显式关联来明确关联

      【讨论】:

        猜你喜欢
        • 2019-01-21
        • 1970-01-01
        • 2020-06-22
        • 2020-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-16
        • 1970-01-01
        相关资源
        最近更新 更多