问题描述
我的架构:
- AWS HTTP API 与反向代理集成
- 普通 Lambda 函数
- 邮递员或浏览器
我正在尝试根据他们推荐的 this 回答检查处理操作的请求方法
'use strict';
const AWS = require('aws-sdk');
const dynamo = new AWS.DynamoDB.DocumentClient();
exports.handler = async (event) => {
switch (event.httpMethod) {
case 'GET':
break;
default:
throw new Error(`@@@@ Unsupported method "${event.httpMethod}"`);
}
return {
statusCode: 200,body: JSON.stringify({message: 'Success'})
};
};
我在我的 lambda 中粘贴了该代码,但它不起作用,我在日志中收到此错误:
"errorMessage": "@@@@ Unsupported method \"undefined\"",
那个 lambda 是由我的 HTTP API 触发的,并且路由有 GET 方法。
如果我返回事件,我可以看到方法是 GET 或 POST,或者其他什么,看看:
有人知道发生了什么吗?
解决方法
HTTP api (v2) 的输入对象架构与 REST api(来自您的 link)不同。
对于Http api,可以从event.requestContext.http.method
获取方法
所以,它看起来像这样。
exports.handler = async (event) => {
console.log('event',event);
switch (event.requestContext.http.method) {
case 'GET':
console.log('This is a GET Method');
break;
default:
throw new Error(`@@@@ Unsupported method "${event.httpMethod}"`);
}
const response = {
statusCode: 200,body: JSON.stringify('Hello from Lambda!'),};
return response;
};