问题描述: 在使用 AWS CDK (Cloud Development Kit) 构建应用程序时,通过 AWS API 网关调用的 Lambda 函数返回了一个空响应。请提供解决方法,包含示例代码。
解决方法:
callback 或 async/await 返回正确的响应。
示例代码:exports.handler = async (event) => {
// 处理事件逻辑
// 返回响应
return {
statusCode: 200,
body: "Hello, world!"
};
};
addMethod 方法的 integrationResponses 属性来配置响应映射模板。
示例代码:import * as apigateway from 'aws-cdk-lib/aws-apigateway';
// 创建 API 网关
const api = new apigateway.RestApi(stack, 'MyApiGateway', {
// 配置其他属性
});
// 创建 Lambda 集成
const integration = new apigateway.LambdaIntegration(myLambdaFunction);
// 添加 API 资源和方法
const resource = api.root.addResource('my-resource');
resource.addMethod('GET', integration, {
// 配置其他属性
// 配置响应映射模板
integrationResponses: [{
statusCode: '200',
responseTemplates: {
'application/json': "#set($inputRoot = $input.path('$'))\n$inputRoot"
}
}]
});
addResponseModel 方法来配置响应模型。
示例代码:// 创建 API 网关
const api = new apigateway.RestApi(stack, 'MyApiGateway', {
// 配置其他属性
});
// 创建响应模型
const emptyResponseModel = api.addResponseModel('EmptyResponse', {
// 配置其他属性
responseType: apigateway.ResponseType.EMPTY
});
// 添加 API 资源和方法
const resource = api.root.addResource('my-resource');
resource.addMethod('GET', integration, {
// 配置其他属性
// 配置响应模型
methodResponses: [{
statusCode: '200',
responseModels: {
'application/json': emptyResponseModel
}
}]
});
以上是解决 AWS API 网关返回空响应的一般方法和示例代码。根据具体情况,可能还需要检查其他方面的配置,如权限设置、网络连接等。
上一篇:AWS API 网关访问私有子网
下一篇:AWS API 网关服务编排