构建 Lambda 函数

AWS Lambda 函数在被调用时会执行代码。本章详细讨论了 AWS Lambda 函数生命周期中涉及的所有步骤。

构建 Lambda 函数的步骤

Lambda 函数的生命周期包括四个必要步骤 −

  • 创作
  • 部署
  • 监控
  • 故障排除

创作 Lambda 代码

AWS Lambda 函数代码可以用以下语言编写 −

  • NodeJS
  • Java,
  • Python
  • C#
  • Go.

我们可以使用 AWS 控制台、AWS CLI、Eclipse IDE、Visual Studio IDE、无服务器框架为 AWS Lambda 编写代码等。

下表列出了可用于编写 Lambda 函数的语言和不同工具及 IDE 的列表 −

语言 用于编写 Lambda 代码的 IDE
NodeJS

AWS Lambda 控制台

Visual Studio IDE

Java Eclipse IDE
Python AWS Lambda 控制台
C#

Visual Studio IDE

.NET core

Go AWS Lambda 控制台

部署 Lambda 代码

一旦您决定要编写 Lambda 函数的语言,就有两种方法可以部署代码 −

  • 直接在 AWS 控制台中编写代码
  • 将文件与所有文件和依赖项一起压缩或打包

但是,请记住,必须授予 zip 文件适当的权限。

测试 Lambda 代码

可以在 AWS Lambda 控制台内测试 Lambda 代码的事件。还可以从 AWS cli 和无服务器 cli 测试 Lambda 函数。AWS 控制台还具有事件数据,可在测试 AWS Lambda 函数时用作示例事件。

监控 Lambda 函数

可以使用 AWS CloudWatch 监控 Lambda 函数。我们可以用我们选择的语言添加必要的日志消息,并在 AWS CloudWatch 中看到相同的消息。

要开始编写 Lambda 函数,需要遵循一些模式。以下是编写 Lambda 函数时要遵循的主要核心概念 −

Handler

Handler 是执行开始的 AWS lambda 函数的名称。它出现在 AWS 控制台中,如下所示 −

Handler

请注意,我们在此处将默认处理程序更改为其他名称,并在处理程序中更新了相同的名称 −

Default Handler

请注意,调用处理程序的方式与选择为运行时的语言不同。

传递给处理程序的参数

如果您观察处理程序函数,传递的参数是 event、contextcall back function,如下所示 −

Params Passed

Event参数包含所用触发器的所有详细信息。

Context 参数主要负责 Lambda 函数执行的运行时详细信息。我们可以使用 context 参数与 Lambda 函数交互。它包含详细信息,例如 AWS Lambda 终止函数之前剩余的时间,即创建 Lambda 函数时指定的超时时间、Lambda 函数的名称、cloudwatch 组名称、arn 详细信息等。

示例

让我们借助示例了解从 AWS Lambda 上下文对象获取的详细信息 −

exports.lambdahandler = (event, context, callback) => {
   // TODO implement
   console.log("context object details");
   console.log(JSON.stringify(context));
   callback(null, 'Lambda test');
};

执行上面显示的 Lambda 函数时,您可以看到以下输出 −

输出

Summary

context 详细信息如下 −

{
   "callbackWaitsForEmptyEventLoop":true,"logGroupName":"/aws/lambda/myfirstlambdafunction",
   "logStreamName":"2018/05/20/[$LATEST]04f17ee4ff7048d5bb1fedffaa807c71","functionName":
   "myfirstlambdafunction","memoryLimitInMB":"128","functionVersion":"$LATEST","invokeid":
   "c931e21c-5bf3-11e8-acfe-47fdbb39eee9","awsRequestId":"c931e21c-5bf3-11e8-acfe-47fdbb39eee9",
   "invokedFunctionArn":"arn:aws:lambda:us-east-1:625297745038:function:myfirstlambdafunction"
}

请注意,它具有诸如 functionName、memorylimit、requestId 等详细信息。

日志记录

当 AWS 函数执行时,在 Lambda 函数中添加的日志将显示在 AWS CloudWatch 中。日志语法将因所选语言而异。例如,在 nodejs 中,它是 console.log。

这是您可以在 AWSCloudWatch − 中看到的输出

AWSCloudWatch

错误处理

AWS Lambda 函数提供了一个回调函数,用于通知 Lambda 函数发生了错误或成功。请注意,这里我们使用了 nodejs 作为运行时。错误处理将根据所选语言而有所不同。

观察此处给出的示例以获得更好的理解−

exports.lambdahandler = (event, context, callback) => {
   // TODO implement
   var error = new Error("There is error in code");
   callback(error);
};

输出

测试 Lambda 代码时,您可以找到如下所示的输出 −

执行结果失败

日志详细信息如下 −

日志输出