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

使用Terraform创建AWS API Gateway多级路径触发path_part报错如何解决?

问题结论

你无法通过单个aws_api_gateway_resource资源直接创建带多级子目录的AWS API Gateway路径,这是AWS API Gateway的原生设计限制,并非Terraform的bug。

原因说明

AWS API Gateway的资源为树形结构,每一级路径段都对应一个独立的资源对象,path_part参数仅允许输入单级路径的内容,不能包含斜杠字符,因此直接传入/will/this/work这类多级路径会触发报错。

你在导入资源时观察到的现象也印证了这个逻辑:path是AWS根据资源层级自动拼接生成的只读全路径,path_part仅存储当前节点的单级路径内容,parent_id则关联上一级资源的ID。

解决方案

方案1:逐层定义路径段

手动为每一级路径声明对应的aws_api_gateway_resource资源,示例配置如下:

# 第一级路径 /will
resource "aws_api_gateway_resource" "will" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  parent_id   = aws_api_gateway_rest_api.MyDemoAPI.root_resource_id
  path_part   = "will"
}

# 第二级路径 /will/this
resource "aws_api_gateway_resource" "this" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  parent_id   = aws_api_gateway_resource.will.id
  path_part   = "this"
}

# 第三级路径 /will/this/work
resource "aws_api_gateway_resource" "work" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  parent_id   = aws_api_gateway_resource.this.id
  path_part   = "work"
}

方案2:批量动态生成路径

如果路径层级较多,可通过Terraform的循环能力拆分路径后批量创建,示例配置如下:

locals {
  # 替换为你需要的完整路径
  target_full_path = "/will/this/work"
  path_segments    = split("/", trimprefix(local.target_full_path, "/"))
}

resource "aws_api_gateway_resource" "auto_path" {
  count       = length(local.path_segments)
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  parent_id   = count.index == 0 ? aws_api_gateway_rest_api.MyDemoAPI.root_resource_id : aws_api_gateway_resource.auto_path[count.index - 1].id
  path_part   = local.path_segments[count.index]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:15:08