构建 Lambda 函数


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

构建 Lambda 函数的步骤

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

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

编写 Lambda 代码

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

  • NodeJS
  • 爪哇,
  • Python
  • C#
  • 去。

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

下表显示了可用于编写 Lambda 函数的语言以及不同工具和 IDE 的列表 -

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

AWS Lambda 控制台

视觉工作室集成开发环境

爪哇 Eclipse集成开发环境
Python AWS Lambda 控制台
C#

视觉工作室集成开发环境

.NET核心

AWS Lambda 控制台

部署 Lambda 代码

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

  • 直接在AWS控制台编写代码
  • 压缩或 jar 包含所有文件和依赖项的文件

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

测试 Lambda 代码

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

监控 Lambda 函数

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

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

处理程序

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

处理程序

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

默认处理程序

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

参数传递给处理程序

如果观察处理函数,传递的参数是事件、上下文回调函数,如下所示 -

参数已通过

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

上下文参数基本上负责 Lambda 函数执行的运行时详细信息。我们可以使用上下文参数与 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 函数时,您可以看到以下输出 -

输出

概括

上下文详细信息如下 -

{
   "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 中看到的输出 -

AWS云观察

错误处理

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

观察此处给出的示例以更好地理解 -

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

输出

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

执行结果失败

日志详细信息如下 -

日志输出