You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform中如何从VPC模块传递vpc_id至aws_vpc_endpoint资源

从Terraform AWS VPC模块获取VPC ID并传递给VPC Endpoint

问题场景

使用terraform-aws-modules/vpc/aws模块(版本5.0.0)创建VPC后,在创建aws_vpc_endpoint资源时,错误尝试通过module.vpc.azs.id获取VPC ID,触发如下报错:

│ Error: Unsupported attribute
│
│   on main.tf line 116, in resource "aws_vpc_endpoint" "s3":
│  116:   for_each = toset(module.vpc.azs.id)
│     ├────────────────
│     │ module.vpc.azs is list of string with 2 elements
│
│ This value does not have any attributes.

错误原因

  1. module.vpc.azs是存储可用区名称的字符串列表,本身没有id属性,直接访问azs.id属于无效操作。
  2. 对VPC端点的逻辑理解有误:VPC端点是绑定整个VPC的资源,不需要按可用区循环创建,一个VPC对应一个S3端点即可。

正确解决方案

terraform-aws-modules/vpc/aws模块默认会输出创建的VPC的ID,直接引用module.vpc.vpc_id即可,无需使用for_each或count:

resource "aws_vpc_endpoint" "s3" {
  vpc_id       = module.vpc.vpc_id
  service_name = "com.amazonaws.us-east-1.s3"
}

补充说明

如果需要为该VPC配置多个不同类型的端点(如S3、DynamoDB等),只需单独创建对应的aws_vpc_endpoint资源,每个资源都直接引用module.vpc.vpc_id即可。

内容的提问来源于stack exchange,提问作者scene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:43:15