AWS Lambda nodejs 函数中的事件对象为空

Mal*_*n M 7 api amazon-web-services node.js aws-lambda aws-api-gateway

我正在使用 Lambda 函数来查询 RDS MySQL 数据库。为了获取一行,我将主键作为 URL 中的参数传递(使用 AWS API Gateway)。示例网址是:

https://aaaaaaa.execute-api.aaaaaaa.amazonaws.com/default/getresult?pk=1245

在 Lambda 函数中,

exports.handler =  (event, context, callback) => {
  //prevent timeout from waiting event loop
  callback(null, event);

};
Run Code Online (Sandbox Code Playgroud)

我正在获取{}url 的输出。

注意:Lambda 代理集成已启用。

hep*_*ump 11

应在 API Gateway 上启用 Lambda 代理集成,以便 API Gateway 将事件详细信息(包括参数)传递给 Lambda。

请在此处查看此图像以了解如何在控制台中执行此操作:

在此处输入图片说明

转到您的 API,然后是您的资源,然后是您的方法执行,然后选择“集成请求”。从那里勾选“使用 Lambda 代理集成”框。

启用此功能允许 API Gateway 使用事件中可用的请求详细信息(包括参数)将请求代理到 Lambda。

  • 我已经检查过这一点,但在 lambda 函数中仍然得到空事件对象。会是什么呢? (3认同)
  • @Fatmajk 转到 Actions ==> Deploy API 并部署您的 api (2认同)

hoa*_*gdv 5

确保选中使用 Lambda 代理集成复选框,这将在 API Gateway\xe2\x80\x99s 方法和关联的 Lambda 函数之间建立 Lambda 代理类型的集成。

\n\n

通过 Lambda 代理集成,Lambda 需要返回以下格式的输出 ( doc ):

\n\n
{\n  "isBase64Encoded" : "boolean",\n  "statusCode": "number",\n  "headers": { ... },\n  "body": "JSON string"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这意味着如果您想将event对象发送回客户端,您必须将其放入callback具有上述格式的对象。

\n\n
 exports.handler = (event, context, callback) => {\n  //prevent timeout from waiting event loop\n  const response = {\n    statusCode: 200,\n    headers: {\n      "x-custom-header": "my custom header value"\n    },\n    body: JSON.stringify({\n      message: \'Your function executed successfully!\',\n      input: event,\n    }),\n  };\n\n  // success response\n  callback(null, response);\n\n};\n
Run Code Online (Sandbox Code Playgroud)\n