AWS Lambda 简介



AWS Lambda 是一种服务,它负责在没有服务器的情况下计算您的代码。它被称为无服务器计算。代码根据 AWS 服务中的事件响应执行,例如在 S3 存储桶中添加/删除文件、更新 Amazon DynamoDB 表格、来自 Amazon API Gateway 的 HTTP 请求等。

AWS Lambda 代码可以用 Node.js、Java、C#、Python 和 Go 编写。本章将详细介绍如何在 AWS 管理控制台中创建 AWS Lambda 函数。

AWS 管理控制台

通过以下链接登录 AWS 管理控制台 https://aws.amazon.com/console。登录后,它会将您重定向到显示 AWS 服务的屏幕。

AWS Console

示例:创建函数

让我们通过一个示例来了解 AWS 管理控制台的功能。单击 Lambda(如上所示),它将重定向到创建函数,如下所示:

Create Function

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

Create Function Display

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

第二个选项蓝图具有以下详细信息。

Blue Print

它提供了已经为某些 AWS 服务编写的代码的详细信息,这些代码使用 AWS Lambda 提供的语言编写。如果您需要为任何服务编写 AWS Lambda 代码,可以在蓝图中检查并开始。

第三个选项无服务器应用程序存储库具有无服务器应用程序的设置,这将有助于部署 AWS Lambda 代码。

在接下来的讨论中,我们将使用从头开始创作选项来创建 AWS Lambda 函数。

在创建 Lambda 函数之前,我们需要一个角色,即与 AWS 服务和 AWS Lambda 协同工作的权限。稍后,该角色必须分配给 AWS Lambda 函数。

在 AWS 管理控制台中创建角色

要在 AWS 管理控制台中创建角色,请转到 AWS 管理控制台服务并单击 IAM,如下所示:

Role creation

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

Dashboard

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

Create Role Button

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

Create Role Services

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

Attach permission Policy

例如,如果您希望 AWS Lambda 具有与 S3 和 DynamoDB 协同工作的权限,则需要选择策略。在搜索框中,输入 AWS 服务并单击复选框。您可以选择多个策略,然后单击下一步:审查

也可以创建您自己的策略。例如,存在 DynamoDB 表,并且您只需要向该表授予权限,在这种情况下,您可以创建策略。

单击屏幕上显示的创建策略按钮。屏幕上显示以下详细信息。

Create policy

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

Request Conditions

现在,我们应该选择服务。让我们从搜索中选择AWS DynamoDB操作具有以下详细信息:

AWS Dynamodb

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

resources

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

Table ReSource

要获得表权限,您需要添加 ARN。ARN 是在 AWS DynamoDB 中创建的表的唯一详细信息。在 DynamoDB 中创建表时,您将获得这些详细信息。

如果您单击添加 ARN,它将显示以下详细信息:

Add ARN

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

Role Description

在这里,我们选择了两个策略AmazonS3FullAccessAmazonDynamoDBFullACcess。我们在该角色中授予了对 S3 和 DynamoDB 的完全访问权限。但是,建议您仅向必要的存储桶和表授予权限。

您可以按照前面讨论的步骤使用ARN创建策略。

步骤 1

单击创建角色按钮以创建角色。所有创建的角色都将显示如下:

Create Role Display

步骤 2

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

Author From Scratch

步骤 3

您可以在运行时下拉菜单中观察以下详细信息:

Runtime

步骤 4

您可以选择您选择的运行时并继续,如图所示。

Choice Proceed

角色下拉菜单具有以下选项:

  • 选择现有角色 - 这将显示在 IAM 角色中创建的所有角色。

  • 从模板创建新角色 - 这将允许您创建角色,并将显示为此角色选择的权限。观察屏幕截图以更好地理解。

  • 创建自定义角色 - 这允许用户创建策略,如我们前面讨论的那样。

步骤 5

选择运行时、角色并添加函数。单击创建函数按钮以创建 Lambda 函数。显示的下一个屏幕如下所示:

Create Function Button

AWS Lambda 函数的组成部分

AWS Lambda 函数有两个部分:配置监控。让我们详细讨论每个部分。

配置

配置中包含以下功能。

添加触发器

需要添加到 AWS Lambda 函数的触发器如下所示:

Add Triggers

请注意,当我们选择触发器时,我们需要为该触发器添加配置详细信息。例如,对于 S3 触发器,我们需要选择存储桶名称;对于 DynamoDB 触发器,我们需要选择表名称。

示例

让我们来看一个 S3 触发器配置详细信息的示例:

Configuration

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

Configuration Details

在这里,您需要选择要在其上触发 Lambda 的存储桶名称、事件类型、前缀和筛选模式(如有)以及添加触发器。

在 Lambda 中添加代码

现在,我们应该关注要编写的 Lambda 代码。要在 AWS Lambda 中添加代码,有三个选项:

  • 使用内联编辑器
  • 使用 .zip 文件
  • 从 Amazon S3 上传文件

这在下面给出的屏幕截图中显示:

Screenshot

让我们详细讨论每一个。

使用内联编辑器

您可以编写代码的内联代码编辑器如下所示:

inline_editor

您可以通过选择您选择的语言来编写代码。您可以在此处再次选择运行时。

观察以下屏幕截图以更好地理解:

Runtime Menu

代码必须写在index.js.Handler中。详细信息将根据运行时而有所不同。对于Node.js,它是文件名.导出函数,现在是index.lambda handler

上传 .ZIP 文件

您可以首先编写代码,将其压缩,然后通过选择上传 .ZIP 文件来上传 zip 文件。

从 Amazon S3 上传文件

您可以将文件上传到 S3 存储桶并选择从 Amazon S3 上传文件选项。

请注意,对于.ZIPS3,将无法更改运行时。

环境变量

它们接收键值对并将它们与 AWS Lambda 代码共享。我们可以在 AWS Lambda 中使用环境变量来存储数据库连接详细信息、存储输出的文件详细信息、日志文件详细信息等。

Environment variables

标签

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

Tags

执行角色

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

Execution Role

基本设置

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

Basic Settings

网络

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

Network

调试和错误处理

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

Debugging and Error Handling

并发

这允许您为该函数分配允许的并发执行的特定限制。

Concurrency

审计和合规性

这包含使用 AWS CloudTrail 管理的日志。

Auditing and Compliance

完成后,您需要使用此处显示的保存按钮保存更改:

Save Button.jpg

现在,如果您单击测试按钮,它将要求提供测试事件。您可以传递示例测试事件,如下所示:

创建的测试事件如下所示:

Configure Test Event

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

Execution Result

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 函数的执行详细信息。图表显示执行时间、发生的错误等的详细信息。

Monitoring

您也可以在 Cloudwatch 中查看日志。为此,请访问 AWS 服务并选择 Cloudwatch,如下所示:

Management Tool

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

Cloud Watch
广告