AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Node.js 中的 AWS Lambda 函数处理程序

AWS Lambda 通过 handler 对象调用您的 Lambda 函数。handler 表示您的 Lambda 函数的名称,同时作为 AWS Lambda 用来执行您的函数代码的入口点。例如:

exports.myHandler = function(event, context, callback) { ... function code callback(null, "some success message"); // or // callback("some error type"); }
  • myHandler – 这是 AWS Lambda 调用的函数的名称。假设您将此代码保存为 helloworld.js。然后,myHandler 就是包含您的 Lambda 函数代码的函数,而 helloworld 则是表示部署程序包的文件的名称。有关更多信息,请参阅Node.js 中的 AWS Lambda 部署程序包

  • context – AWS Lambda 使用此参数提供有关您的 Lambda 函数执行情况的详细信息。有关更多信息,请参阅Node.js 中的 AWS Lambda 上下文对象

  • callback(可选)– 请参阅 使用回调参数

使用回调参数

Node.js 运行时支持可选的 callback 参数。您可以使用它显式将信息返回到调用方。

callback(Error error, Object result);

两个参数都是可选的。error 是可选参数,可用于提供失败的 Lambda 函数执行的结果。Lambda 函数成功时,您可以传递 null 作为第一个参数。

result 是可选参数,可用于提供成功的函数执行的结果。提供的 result 必须兼容 JSON.stringify。如果提供了错误,则忽略此参数。

如果您在代码中不使用 callback,AWS Lambda 将隐式调用它,返回值是 null。在调用回调时,AWS Lambda 继续执行 Lambda 函数调用,直至事件循环为空。

以下为示例回调:

callback(); // Indicates success but no information returned to the caller. callback(null); // Indicates success but no information returned to the caller. callback(null, "success"); // Indicates success with information returned to the caller. callback(error); // Indicates error with error information returned to the caller.

AWS Lambda 将任何非 null 的 error 参数值视为已处理的异常。

回调方法会自动将 error 的非 null 值的字符串表示记录到与 Amazon CloudWatch Logs 函数关联的 Lambda 流。

如果同步调用了 Lambda 函数,则回调返回响应正文。如果 error 为 null,则将响应正文设置为 result 的字符串表示形式。如果 error 不为 null,则 error 值将填充到响应正文中。

在调用 callback(error, null)(和 callback(error))时,Lambda 将记录错误对象的前 256 KB。对于较大的错误对象,AWS Lambda 截断日志并在错误对象旁边显示文本 Truncated by Lambda

如果您使用的是运行时 8.10 版本,则可以包括 async 关键字:

exports.myHandler = async function(event, context) { ... // return information to the caller. }

示例

请考虑以下示例代码。

exports.myHandler = function(event, context, callback) { console.log("value1 = " + event.key1); console.log("value2 = " + event.key2); callback(null, "some success message"); // or // callback("some error type"); }

此示例有一个 myHandler 函数。

在该函数中,console.log() 语句会将一些传入的事件数据记录到 CloudWatch Logs。当调用 callback 参数时,Lambda 仅在传递的事件循环为空的情况下退出。

如果您希望使用 v8.10 运行时提供的 async 功能,请考虑以下代码示例:

exports.myHandler = async function(event, context) { console.log("value1 = " + event.key1); console.log("value2 = " + event.key2); return "some success message"; // or // throw new Error("some error type"); }

本页内容: