教程:如何创建、上传和调用Amazon Lambda函数 - Amazon Toolkit for Eclipse
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

教程:如何创建、上传和调用Amazon Lambda函数

本教程将引导您完成典型的Amazon Lambda工作流,并为您提供将 Lambda 与 Eclipse 工具包一起使用的第一手经验。

重要

本教程假定:Amazon帐户,已已安装AmazonToolkit for Eclipse,并且您了解 Lambda 的基本概念和功能。如果您对 Lambda 不熟悉,请访问Lambda主页,并在AmazonLambda 开发人员指南.

创建 Amazon Lambda 项目

要开始 Lambda 项目,请先将代码作为处理程序类中的方法实施。Toolkit for Eclipse 供了一个新的项目向导来帮助您创建新的处理程序类。Lambda 项目是使用 POM.xml 文件管理程序包依赖关系的 Maven 项目。您可以使用 Maven 命令行工具构建、测试和部署您的应用程序。有关 Maven 的更多信息,请参阅 Maven 项目文档

创建 Amazon Lambda 项目

  1. 在 Eclipse 工具栏上,打开 Amazon Web Services 菜单(由Amazon主页图标),然后选择NewAmazonLambda Java 项目. 或者,在 Eclipse 菜单栏上,选择File (文件)NewAmazonLambda Java Project.

  2. 在关联的输入框中添加 Project name (项目名称)Group ID (组 ID)Artifact ID (构件 ID)class name (类名称)。组 ID 和项目 ID 是标识 Maven 构建项目的 ID。本教程将使用以下示例值:

    • Project name (项目名称)HelloLambda

    • Group ID (组 ID)com.example.lambda

    • Artifact ID (构件 ID)demo

    • 类名称Hello

    Package Name (程序包名称) 字段是 Amazon Lambda 处理程序类的程序包命名空间。此字段的默认值是后跟 Maven 项目约定的组 ID 和项目 ID 的串联。更新 Group ID (组 ID)Artifact ID (构件 ID) 字段时,此字段会自动更新。

  3. 对于 Input Type (输入类型),选择 Custom (自定义)。有关每种可用输入类型的信息,请参阅。NewAmazonLambda Java 项目对话框.

  4. 验证条目是否类似于以下屏幕截图(如果不是,请修改),然后选择 Finish (完成)

    键入时,Source preview (来源预览) 中的代码将发生变化,以体现您在对话框中所做的更改。

  5. 选择 Finish (完成) 后,Eclipse 工作区中将生成您项目的目录和源文件。新的 Web 浏览器窗口将打开,其中显示README.html(这是在您项目的根目录中为您创建的)。README.html提供了说明以指导您完成实施、测试、上传和调用新 Lambda 函数的后续步骤。通读此说明以熟悉此处描述的步骤。

接下来,您将在已在 Eclipse 中为您创建的 HelloLambda Java 项目中实施该函数。

实施处理程序方法

可使用 Create New Project (创建新项目) 对话框创建骨架项目。现在填入将在调用 Lambda 函数时运行的代码。(在此示例中,按照您在设置方法的输入参数时所指定,通过将字符串发送到您的函数的自定义事件。)

实施 Lambda 处理程序方法

  1. 在 Eclipse 中项目浏览器,打开Hello.java中的HelloLambda项目。它将包含与下类似的代码。

    package com.example.lambda.demo; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class Hello implements RequestHandler<Object, String> { @Override public String handleRequest(Object input, Context context) { context.getLogger().log("Input: " + input); // TODO: implement your handler return "Hello from Lambda"; } }
  2. handleRequest 函数的内容替换为以下代码。

    @Override public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); String output = "Hello, " + input + "!"; return output; }

允许 Lambda 代入 IAM 角色

要使 Lambda 能够访问 Lambda 函数,您必须创建一个 IAM 角色来向其提供对Amazon资源的费用。可以通过两种方式创建角色:通过Amazon Web Services Management Console或使用 TToolkit for Eclipse。此节描述如何在控制台中创建 IAM 角色。请参阅上传代码使用 TToolkit for Eclipse 创建一个。

为 Lambda 创建 IAM 角色

  1. 登录到Amazon管理控制台.

  2. Services (服务) 菜单中,打开 IAM 控制台

  3. 在导航窗格中,选择 Roles (角色),然后选择 Create role (创建角色)

  4. 适用于选择受信任实体的类型中,选择Amazon服务,然后选择Lambda对于将使用此角色的服务。接下来,选择 Next (下一步)Permissions (下一步:权限)

  5. 对于 Attach permissions policy (附加权限策略),选择 AWSLambdaBasicExecutionRole。这允许 Lambda 写入您的 CloudWatch Logs 资源。接下来,选择 Next (下一步)审核

  6. 为您的角色添加一个名称 (如 hello-lambda-role) 和角色描述。然后选择 。创建角色完成 IAM 角色的创建。

为 Lambda 代码创建 Amazon S3 存储桶

Amazon Lambda在上传 Java 项目时,需要 Amazon S3 存储桶来存储此项目。您可以使用已存在于Amazon您将运行代码的区域,也可以创建专供 Lambda 使用的新区域 (推荐)。

您可以通过两种方式创建 Amazon S3 存储桶:通过Amazon Web Services Management Console或使用 TToolkit for Eclipse。此节描述如何在控制台中创建 Amazon S3 存储桶。请参阅上传代码使用 TToolkit for Eclipse 创建一个。

创建与 Lambda 配合使用的 Amazon S3 存储桶

  1. 登录到Amazon管理控制台.

  2. Services (服务) 菜单中,打开 S3 控制台

  3. 选择 Create bucket(创建存储桶)。

  4. 输入存储桶名称,然后为存储桶选择区域。此区域应为您打算运行 Lambda 函数的区域。有关 Lambda 支持的区域的列表,请参阅区域和终端节点中的Amazon一般参考.

  5. 选择 Create (创建) 完成存储桶的创建。

上传代码

接下来,将代码上传到 Amazon Lambda,以准备使用 Amazon Web Services Management Console进行调用。

将函数上传到 Lambda

  1. 右键单击 Eclipse 代码窗口,选择AmazonLambda,然后选择将函数上传到AmazonLambda.

  2. 在存储库的Select Target Lambda Function (选择目标 Lambda 函数)页面上,选择Amazon要使用的区域。此区域应当是您为 Amazon S3 存储桶选择的同一区域。

  3. 选择 Create a new Lambda function (新建 Lambda 函数),然后为函数键入名称(例如,HelloFunction)。

  4. 选择 Next (下一步)

  5. 在存储库的函数配置页面上,输入目标 Lambda 函数的描述,然后选择您的函数将使用的 IAM 角色和 Amazon S3 存储桶。

    有关可用选项的更多信息,请参阅。将函数上传到AmazonLambda 对话框.

  6. 在存储库的函数配置页面上,选择CreateFunction Role如果您想要为 Lambda 函数创建一个新的 IAM 角色。在 Create Role (创建角色) 对话框中,输入角色名称。

  7. 在存储库的函数配置页面上,选择发布新版本如果您希望上传创建 Lambda 函数的新版本。要了解有关 Lambda 中的版本控制和别名的更多信息,请参阅。AmazonLambda 函数版本控制和别名中的Amazon Lambda开发人员指南.

  8. 如果选择发布新版本,将启用 Provide an alias to this new version (为此新版本提供一个别名) 选项。如果您要将别名与此版本的 Lambda 函数关联,请选择此选项。

  9. 在存储库的函数配置页面上,选择Create中的用于函数代码的 S3 存储桶部分,如果您想要为 Lambda 函数创建一个新的 Amazon S3 存储桶。在 Create Bucket (创建存储桶) 对话框中,输入存储桶名称。

  10. S3 Bucket for Function Code (用于函数代码的 S3 存储桶) 部分中,您还可选择加密上传的代码。对于本示例,保留选中的 None (无)。要了解有关 Amazon S3 加密的更多信息,请参阅使用服务器端加密保护数据中的Amazon Simple Storage Service 开发人员指南.

  11. 保留 Advanced Settings (高级设置) 选项不变。Eclipse Toolkit for Eclipse 将为您选择默认值。选择Finish将 Lambda 函数上传到Amazon.

如果上 Lambda 成功,您将在项目浏览器视图。

如果您未看到此情况,请打开 Eclipse错误日志记录视图。Lambda 会将有关函数上传或运行失败的信息写入此错误日志,以便您可调试它们。

调用 Lambda 函数

现在,您可以在 Amazon Lambda 上调用该函数。

调用 Lambda 函数

  1. 在 Eclipse 代码窗口中右键单击,选择AmazonLambda,然后选择运行函数AmazonLambda.

  2. 选择您要调用的处理程序类。

  3. 在输入框中,键入有效的 JSON 字符串,例如”AmazonLambda”。

    注意

    您可以将新的 JSON 输入文件添加到您的项目,如果文件名以 .json 结束,文件就将显示在此对话框中。您可以使用此功能为 Lambda 函数提供标准输入文件。

  4. 默认情况下,Show Live Log (显示实时日志) 框为选中状态。这将在 Eclipse 中显示 Lambda 函数输出的日志控制台.

  5. 选择Invoke将输入数据发送到 Lambda 函数。如果已正确设置所有项,则应在 Eclipse Console (控制台) 视图(如果该视图尚未显示,将自动显示)中看到函数已输出的返回值。

恭喜,您已从 Eclipse IDE 直接运行第一个 Lambda 函数!

后续步骤

现在,您已上传和部署您的函数,可以尝试更改代码并重新运行函数。Lambda 将为您自动重新上传和调用函数,并将输出发送到 Eclipse控制台.

更多信息

有关本教程中涵盖的每个页面的更多信息以及每个选项的完整说明,请参阅AmazonLambda 接口参考.

有关 Lambda 和编写 Lambda 的 Java 代码的更多信息,请参阅。在 Java 中创作 Lambda 函数中的Amazon Lambda开发人员指南.