- AWS Lambda 教程
- AWS Lambda - 主页
- AWS Lambda - 概述
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建 Lambda 函数
- NODEJS 中的函数
- Java 中的函数
- Python 中的函数
- Go 中的函数
- C# 中的函数
- 配置 Lambda 函数
- 使用 AWS 控制台创建和部署
- 使用 AWS CLI 创建和部署
- 使用无服务器框架创建和部署
- AWS 执行和调用 Lambda 函数
- 删除 Lambda 函数
- 使用 Amazon API Gateway
- 使用 Amazon S3 的 Lambda 函数
- 使用 Amazon DynamoDB 的 Lambda 函数
- 具有预定事件的 Lambda 函数
- 带有 Amazon SNS 的 Lambda 函数
- 带有 CloudTrail 的 Lambda 函数
- 使用 Amazon Kinesis 的 Lambda 函数
- 具有自定义用户应用程序的 Lambda 函数
- AWS Lambda@Edge 与 CloudFront
- 使用 Cloudwatch 进行监控和故障排除
- AWS Lambda - 其他示例
- AWS Lambda 有用资源
- AWS Lambda - 快速指南
- AWS Lambda - 有用的资源
- AWS Lambda - 讨论
构建 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 Lambda 函数提供了一个回调函数,用于通知 Lambda 函数发生了错误或成功。注意,这里我们使用了nodejs作为运行时。错误处理将根据所选语言而有所不同。
观察此处给出的示例以更好地理解 -
exports.lambdahandler = (event, context, callback) => { // TODO implement var error = new Error("There is error in code"); callback(error); };
输出
当您测试 Lambda 代码时,您可以找到如下所示的输出 -
日志详细信息如下 -