如何通过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
相关产品推荐
相关产品推荐

