求助:使用CDK实现API Gateway仅将/uploads路由至Lambda函数
问题解决:仅将/uploads路径路由到指定Lambda函数
你的问题出在使用了 LambdaRestApi 构造函数,它默认会把传入的Lambda设置为API的全局处理程序,即使关闭代理模式也会影响路由配置。正确的做法是创建普通的 RestApi,然后只为 /uploads 路径添加Lambda集成。
修正后的代码如下:
const s3UploaderUrlLambda = new lambda.Function( // 你的Lambda函数定义 ); // 创建普通RestApi,而非LambdaRestApi const api = new apigateway.RestApi(this, 's3uploader', { restApiName: 'S3 Uploader API', description: '仅处理/uploads路径的API' }); // 添加/uploads资源 const uploadsResource = api.root.addResource('uploads'); // 为GET方法添加Lambda集成 const lambdaIntegration = new apigateway.LambdaIntegration(s3UploaderUrlLambda); uploadsResource.addMethod('GET', lambdaIntegration);
关键改动说明:
- 替换
LambdaRestApi为RestApi:避免默认全局绑定Lambda函数 - 手动创建
LambdaIntegration:明确指定该集成仅用于/uploads路径的GET方法 - 移除原
handler参数:普通RestApi不需要全局处理程序
这样配置后,只有访问 /uploads 的GET请求才会触发你的Lambda函数,其他路径会返回404错误,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Newbie12920
相关产品推荐
相关产品推荐

