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

如何通过AWS CDK创建无根路径方法的LambdaRestApi?

如何用CDK创建无根路径方法的LambdaRestApi?

别用LambdaRestApi,手动构建RestApi即可

LambdaRestApi是CDK封装的快捷构造类,默认逻辑就是给根路径(/)自动添加方法——哪怕你设置proxy:false也没用,这是它为了快速生成Lambda关联API而内置的行为。要避免根路径生成方法,直接用RestApi类手动配置:

import { RestApi, LambdaIntegration } from 'aws-cdk-lib/aws-apigateway';
import { Function } from 'aws-cdk-lib/aws-lambda';

// 假设你已定义好目标Lambda函数:myLambdaFunction
const api = new RestApi(this, 'MyRestApi', {
  restApiName: '自定义无根基API',
  description: '根路径无默认方法的API网关',
});

// 手动添加需要的子资源与对应方法,比如创建/products路径
const productsResource = api.root.addResource('products');
productsResource.addMethod('GET', new LambdaIntegration(myLambdaFunction));

按这个方式配置后,根路径(/)不会存在任何自动生成的方法,只有你手动添加的子资源带有对应请求方法。

为什么代理模式下根路径会被添加方法?

开启代理模式(proxy: true)时,CDK会自动创建/{proxy+}通配符资源,这个路径能匹配所有带子路径的请求(比如/user/123、/orders),但根路径(/)并不匹配该通配符——因为proxy部分不能为空。LambdaRestApi为了保证根路径的请求也能被Lambda处理,就会额外给根路径添加方法。

如果不需要根路径的代理能力,别用LambdaRestApi,自己手动添加/{proxy+}资源即可:

const api = new RestApi(this, 'MyProxyApi');
const proxyResource = api.root.addResource('{proxy+}');
proxyResource.addMethod('ANY', new LambdaIntegration(myLambdaFunction));

这样配置后,只有/{proxy+}路径带有代理集成,根路径不会生成任何方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 05:22:39