AWS Lambda – 简介
AWS Lambda 是一种无需任何服务器即可计算代码的服务。它被称为无服务器计算。代码是根据 AWS 服务中事件的响应执行的,例如在 S3 存储桶中添加/删除文件、更新 Amazon DynamoDBtables、来自 Amazon Api 网关的 HTTP 请求等。
AWS Lambda 代码可以用 NodeJS、Java、C#、Python 和 Go 编写。本章将详细介绍如何在 AWS 控制台中创建 AWS Lambda 函数。
AWS 控制台
通过链接 https://aws.amazon.com/console 登录 AWS 控制台。登录后,它会将您重定向到显示 AWS 服务的屏幕。

示例:创建函数
让我们借助示例了解 AWS 控制台的功能。单击 Lambda(上面标记),它将重定向到创建函数,如下所示 −

单击 创建函数 按钮,屏幕显示以下详细信息 −

请注意,默认情况下,选项为 从头开始创作。此选项允许您从头开始编写 Lambda 代码。它将只具有一个带有 hello world 消息的简单函数。
第二个选项 Blue prints 具有以下详细信息。

它提供了已使用 AWS Lambda 可用的语言为某些 aws 服务编写的代码的详细信息。如果您需要为任何服务编写 AWS Lambda 代码,您可以查看蓝图并开始使用。
第三个选项无服务器应用程序存储库具有无服务器应用程序的设置,这将有助于部署 AWS Lambda 代码。
在进一步的讨论中,我们将研究第一个选项,即使用从头开始的作者创建 AWS lambda 函数。
在创建 Lambda 函数之前,需要一个角色,即使用 AWS 服务和 aws lambda 的权限。稍后,必须将角色分配给 aws lambda 函数。
在 AWS 控制台中创建角色
要在 AWS 控制台中创建角色,请转到 AWS 控制台服务并单击 IAM,如下所示 −

现在,如果您单击 IAM,您将看到如下所示的屏幕 −

如果您选择 角色,您可以在屏幕上看到以下按钮 −

现在,单击创建角色。它将要求您选择需要使用所创建角色的服务。

由于我们需要将此角色与 AWS Lambda 一起使用,因此选择 Lambda 并单击 下一步:权限 按钮,如上所示。下一个屏幕显示根据 AWS 服务可用的策略名称。您可以从此处选择策略 −

例如,如果您希望 AWS Lambda 获得与 S3 和 DynamoDB 一起使用的权限,则需要选择该策略。在搜索框中,输入 AWS 服务并单击复选框。您可以选择多个策略,然后单击下一步:审核。
您也可以创建自己的策略。例如,有 dynamodb 表,您只需要授予该表的权限,在这种情况下,您可以创建策略。
单击创建策略按钮,如上图所示。以下是屏幕上显示的详细信息。

选择您要为其创建策略的服务。稍后它将显示操作、资源和请求条件的数据。

现在,我们应该选择服务。让我们从搜索中选择 AWS Dynamodb。Actions 具有以下详细信息 −

现在,输入您想要授予 DynamoDB 的 访问级别。然后,资源 将显示以下详细信息 −

现在,选择表资源类型。您可以看到以下输出 −

对于表的权限,您需要添加 ARN。ARN 是 AWS DynamoDB 中创建的表所独有的详细信息。在 dynamodb 中创建表时,您将获得详细信息。
如果您单击添加 ARN,它将显示以下详细信息 −

现在,如果您输入ARN,区域、账户和表名称将被填充。您应该单击添加按钮来添加策略。同样,您可以为其他服务创建策略。

在这里,我们选择了两个策略AmazonS3FullAccess和AmazonDynamoDBFullACcess。我们已授予该角色对 S3 和 DynamoDB 的完全访问权限。但是,建议您仅授予必要的存储桶和表的权限。
您可以按照前面讨论的步骤使用 ARN 创建策略。
步骤 1
单击 创建角色 按钮以创建角色。所有创建的角色都显示为 −

步骤 2
请注意,如果您需要对创建的角色进行任何修改,您可以选择所需的角色。如果我们选择从头开始创作选项,则必须输入名称、运行时和角色。

步骤 3
您可以在运行时下拉菜单中看到以下详细信息 −

步骤 4
您可以选择所需的运行时并按所示继续操作。

角色下拉菜单有以下选项 −
选择现有角色 − 这将显示在 IAM 角色中创建的所有角色。
从模板创建新角色 − 这将允许您创建角色并显示要为该角色选择的权限。观察屏幕截图以更好地理解。
创建自定义角色 − 这允许用户创建我们之前讨论过的策略。
步骤 5
选择运行时、角色并添加函数。单击创建函数按钮以创建 lambda 函数。显示的下一个屏幕如下 −

AWS Lambda 函数的组成部分
AWS Lambda 函数有两个部分:配置和监控。让我们详细讨论一下。
配置
配置中包含以下功能。
添加触发器
需要添加到 AWS Lambda 函数的触发器显示如下 −

请注意,当我们选择一个触发器时,我们需要添加该触发器的配置详细信息。例如,对于 S3 触发器,我们需要选择存储桶名称;对于 Dynamodb 触发器,我们需要选择表名称。
示例
让我们看一个 S3 触发器配置详细信息的示例 −

现在,添加已添加的 S3 触发器的配置详细信息 −

在这里,您需要选择要触发 Lambda 的 存储桶名称、事件类型、前缀和过滤模式(如果有)并添加触发器。
在 Lambda 中添加代码
现在,我们应该专注于要编写的 Lambda 代码。要在 aws lambda 中添加代码,有三个选项 −
- 使用内联编辑器
- 使用 .zip 文件
- 从 Amazon S3 上传文件
它显示在下面的屏幕截图中 −

让我们详细讨论它们中的每一个。
使用内联编辑器
您可以在其中编写代码的内联代码编辑器如下 −

您可以通过选择所需的语言来编写代码。您可以在此处再次选择运行时。
请观察以下屏幕截图以更好地理解 −

代码必须写在 index.js.Handler 中。具体细节将根据运行时而有所不同。对于 nodejs,它是 filename.export 函数,现在是 index.lambda 处理程序。
上传 .ZIP 文件
您可以先编写代码,将其压缩,然后选择 上传 .ZIP 文件 上传 zip 文件。
从 Amazon S3 上传文件
您可以在 S3 存储桶中上传文件,然后选择选项 从 Amazon S3 上传文件。
请注意,对于 .ZIP 和 S3,无法更改运行时。
环境变量
它们采用键值对并与 AWS Lambda 代码共享它们。我们可以在 AWS Lambda 中使用环境变量来存储数据库连接详细信息、用于存储输出的文件详细信息、日志文件详细信息等。

标签
它们是添加到 AWS Lambda 的键值对,以便在跨不同区域使用时更好地组织函数。对于简单的用例,它不是必需的。当创建大量 Lambda 函数时,标记有助于过滤和管理 Lambda 函数。

执行角色
如果在创建 Lambda 函数时没有正确完成,您可以在此处再次更改角色。您可以在此处更新或创建新角色。它提供与创建 Lambda 函数时显示的选项相同的选项。

基本设置
在这里,您需要输入 Lambda 函数正在执行的操作的简短描述。选择 Lambda 函数所需的内存和超时。

网络
这允许您选择 VPC,这将允许您从 VPC 访问 Lambda 函数。默认情况下,不选择任何 VPC。

调试和错误处理
对于调试和错误处理,您可以选择 AWS 服务来发送详细信息。可用的选项包括 无、SNS 和 SQS。

并发
这允许您为此功能分配允许的并发执行的特定限制。

审计和合规性
这包含在 AWS CloudTrail 的帮助下管理的日志。

完成后,您需要使用"保存"按钮保存更改,如下所示−

现在,如果您单击测试按钮,它将要求输入一个测试事件。您可以按如下方式传递示例测试事件−
创建的测试事件如下所示−

现在,保存测试事件并单击测试按钮以查看 AWS Lambda 函数的执行情况−

index.js 的代码如下 −
exports.lambdahandler = (event, context, callback) => { // TODO implement console.log(event.key1); console.log(event.key2); console.log(event.key3); callback(null, 'Lambda test'); };
请注意,当出现错误或成功时,都会调用回调函数。如果成功,您可以看到将显示 Lambda 测试。
监控
选择监控选项卡以查看 Lambda 函数的执行详细信息。图表显示执行时间、发生的错误等详细信息。

您还可以在 Cloudwatch 中查看日志。为此,请转到 AWS 服务并选择 cloudwatch,如下所示 −

现在,从左侧选择日志并在过滤器中输入您的函数名称 −
