【问题标题】:How can I retrieve the subnets in a given VPC with Terraform?如何使用 Terraform 检索给定 VPC 中的子网?
【发布时间】:2022-11-14 04:55:37
【问题描述】:

我试图检索给定 VPC 中的子网,在我的例子中是默认 VPC,但是我不断收到错误消息:

data "aws_vpc" "default_vpc" {
  default = true
}

data "aws_subnet" "subnets" {
  vpc_id = data.aws_vpc.default_vpc.id
}

output "subnets_out" {
  value = data.aws_subnet.subnets
}

错误:多个 EC2 子网匹配;使用额外的约束来减少对单个 EC2 子网的匹配

第一个数据调用有效,我得到了我的默认 VPC id,但是第二个失败了。

最初我在我的默认 VPC 中有 1 个子网,那时,第二个数据调用也有效但令我惊讶的是它返回子网作为映射而不是集合中的映射。所以我很好奇,如果我的 VPC 中有多个子网,但随后数据调用失败,会发生什么情况。

我发现真正令人困惑的是Terraform documentation 说:

此资源可用于取回子网 IDs.

如果它应该返回一组子网 ID,那么为什么匹配多个子网会成为问题?

【问题讨论】:

  • 之后您是否尝试在某处使用subnets_out

标签: types terraform subnet vpc


【解决方案1】:

aws_subnet 是特定子网的资源。它不适用于子网的集合。因此,当您传递 VPC_ID 时,aws 会在该 VPC 中找到多个子网。不能在aws_subnet 中存储多个子网

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/subnet

aws_subnet 提供有关特定 VPC 子网的详细信息。

听起来你应该使用aws_subnetshttps://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/subnets

此资源可用于取回一组子网 ID。

这将返回一个子网 ID 列表,然后您可以在 aws_subnet 的 foreach 中使用它来获取每个子网的具体详细信息

【讨论】:

    猜你喜欢
    • 2021-03-14
    • 2020-02-12
    • 2021-03-31
    • 1970-01-01
    • 2021-07-25
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多