构建 Lambda 函数



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

构建 Lambda 函数的步骤

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

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

创作 Lambda 代码

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

  • NodeJS
  • Java
  • Python
  • C#
  • Go。

我们可以使用 AWS 控制台、AWS CLI、Eclipse IDE、Visual Studio IDE、Serverless Framework 等编写 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 或 jar 文件

但是,请记住,必须为 zip 文件授予正确的权限。

测试 Lambda 代码

Lambda 代码可以在 AWS Lambda 控制台中针对事件进行测试。也可以从 AWS CLI 和 Serverless CLI 测试 Lambda 函数。AWS 控制台还具有事件数据,这些数据可用作测试 AWS Lambda 函数时的示例事件。

监控 Lambda 函数

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

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

处理程序

处理程序是 AWS Lambda 函数的名称,从这里开始执行。它在 AWS 控制台中显示如下 -

Handler

请注意,这里我们将默认处理程序更改为另一个名称,并在处理程序中更新了该名称 -

Default Handler

请注意,处理程序的调用方式因选定的运行时语言而异。

传递给处理程序的参数

如果您观察处理程序函数,传递的参数为event、context回调函数,如下所示 -

Params Passed

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

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

示例

让我们借助一个示例来了解从 AWS Lambda context 对象获得的详细信息 -

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 代码时,您可以找到如下所示的输出 -

Execution Result Failed

日志详细信息如下 -

Log Output
广告