使用控制台创建 Lambda 函数 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用控制台创建 Lambda 函数

在以下入门练习中,您可以使用控制台创建 Lambda 函数。

在第一个练习中,您将创建一个函数并使用 Lambda 创建的默认代码。Lambda 控制台为非编译语言提供了代码编辑器,使您可以快速修改和测试代码。

在下一个练习中,您将创建一个定义为容器映像的函数。首先,为函数代码创建容器映像,然后使用 Lambda 控制台从容器映像创建函数。

使用默认函数代码创建 Lambda 函数

在本入门练习中,您将使用 Lambda 控制台创建 Node.js Lambda 函数。Lambda 自动为函数创建默认代码。接下来,您将使用示例事件数据手动调用 Lambda 函数。 Lambda 将运行函数并返回结果。然后,您验证结果,包括您的 Lambda 函数已创建的日志和各种 Amazon CloudWatch 指标。

使用控制台创建 Lambda 函数

  1. 打开 Lambda 控制台的“函数”页面

  2. 选择创建函数

  3. Basic information (基本信息) 中,执行以下操作:

    1. 函数名称中,输入 my-function

    2. 对于运行时,请确认已选择 Node.js 14.x。请注意,Lambda 为 .NET (PowerShell,C#) Go、Java、Node.js、Python 和 Ruby 提供所需的运行时。

  4. 选择创建函数

Lambda创建 Node.js 函数和执行角色,该角色授予函数上传日志的权限。在您调用函数时,Lambda 函数担任执行角色,并使用该执行角色为 Amazon 开发工具包创建凭证和从事件源读取数据。

使用函数概述

函数概述显示函数的可视化,包括您为函数配置的任何触发器、目标和层。


          没有触发器、目标或层的 Lambda 函数。

调用 Lambda 函数

使用控制台中提供的示例事件数据调用 Lambda 函数。

调用函数

  1. 选择函数后,选择 Test (测试) 选项卡。

  2. Test event (测试事件) 部分中,选择 New event (新事件)。在 Template (模板) 中,保留默认的 hello-world 选项。输入此测试的 Name(名称)并记录以下示例事件模板:

    { "key1": "value1", "key2": "value2", "key3": "value3" }
  3. 选择 Save changes(保存更改),然后选择 Test(测试)。每个用户每个函数可以创建最多 10 个测试事件。这些测试事件不适用于其他用户。

    Lambda 代表您运行函数。函数处理程序接收并处理示例事件。

  4. 成功完成后,在控制台中查看结果。

    • Execution result (执行结果) 显示执行状态为 succeeded (已成功)。展开 Details (详细信息) 以查看函数执行结果。请注意,logs (日志) 链接将在 CloudWatch 控制台中打开 Log groups (日志组) 页面。

    • Summary 部分显示在 Log output 部分中报告的密钥信息(执行日志中的 REPORT 行)。

    • Log output (日志输出)部分显示 Lambda 针对每次调用生成的日志。该函数会将这些日志写入 CloudWatch。为方便起见,Lambda 控制台为您显示这些日志。选择 Click here (单击此处) 可将日志添加到 CloudWatch 日志组,然后在 CloudWatch 控制台中打开 Log groups (日志组) 页面。

  5. 再运行函数(选择 Test [测试])几次可收集可在下一步骤中查看的一些指标。

  6. 选择 Monitor(监视器)选项卡。此页面显示了 Lambda 发送到 CloudWatch 的指标的图表。

    有关这些图表的更多信息,请参阅 在 Amazon Lambda 控制台中监控函数

清除

如果您已完成使用此示例函数,请将其删除。您还可以删除存储函数日志的日志组以及控制台创建的执行角色。

删除 Lambda 函数

  1. 打开 Lambda 控制台的“函数”页面

  2. 选择函数。

  3. 依次选择 ActionsDelete

  4. Delete function(删除函数)对话框中,选择 Delete(删除)

删除日志组

  1. 打开 CloudWatch 控制台的 Log groups(日志组)页

  2. 选择函数的日志组 (/aws/lambda/my-function)。

  3. 依次选择 Actions(操作)Delete log group(s)(删除日志组)

  4. Delete log group(s)(删除日志组)对话框中,选择 Delete(删除)

删除执行角色

  1. 打开 Amazon Identity and Access Management (IAM) 控制台的 Roles(角色)页面

  2. 选择函数的角色 (my-function-role-31exxmpl)。

  3. 选择删除角色

  4. Delete role(删除角色)对话框中,选择 Yes, delete(是的,删除)

您可以使用 Amazon CloudFormation 和 Amazon Command Line Interface (Amazon CLI) 自动创建和清理函数、日志组和角色。有关功能齐全的示例应用程序,请参阅 Lambda 示例应用程序

创建定义为容器映像的函数

在本入门练习中,您可以使用 Docker CLI 创建容器映像,然后使用 Lambda 控制台从容器映像创建函数。

先决条件

要完成以下步骤,您需要命令行终端或 Shell 以运行命令。命令和预期输出在单独的数据块中列出:

aws --version

您应看到以下输出:

aws-cli/2.0.57 Python/3.7.4 Darwin/19.6.0 exe/x86_64

对于长命令,使用转义字符 (\) 将命令拆分到多行中。

在 Linux 和 macOS 中,可使用您首选的外壳程序和程序包管理器。在 Windows 10 中,您可以 安装 Windows Subsystem for Linux,获取 Ubuntu 和 Bash 与 Windows 集成的版本。

本练习使用 Docker CLI 命令创建容器映像。要安装 Docker CLI,请参阅 Docker Docs 网站上的获取 Docker

创建容器映像

Amazon 在 Amazon Elastic Container Registry (Amazon ECR) 中提供了一组基本映像。在本入门练习中,我们使用 Node.js 基本映像创建容器映像。有关基本映像的更多信息,请参阅 Lambda 的 Amazon 基本映像

在以下命令中,请将 123456789012 替换为您的 Amazon 账户 ID。

使用 Amazon Node.js 12 基本映像创建映像

  1. 在本地计算机上,为新函数创建项目目录。

  2. 在项目目录中创建一个名为 app.js 的文件。将以下代码添加到 app.js

    exports.handler = async (event) => { // TODO implement const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; };
  3. 使用文本编辑器在项目目录中创建一个名为 Dockerfile 的新文件。将以下内容添加到 Dockerfile

    FROM public.ecr.aws/lambda/nodejs:12 # Copy function code and package.json COPY app.js package.json /var/task/ # Install NPM dependencies for function RUN npm install # Set the CMD to your handler CMD [ "app.handler" ]
  4. 创建 package.json 文件。从项目目录中,运行 npm init 命令。接受所有默认值:

    npm init
  5. 生成 Docker 映像。从项目目录中,运行以下命令:

    docker build -t hello-world .
  6. (可选)Amazon 基本映像包括 Lambda 运行时接口模拟器,因此您可以在本地测试函数。

    1. 运行 Docker 映像。从项目目录中,运行 docker run 命令:

      docker run -p 9000:8080 hello-world:latest
    2. 测试 Lambda 函数。在新的终端窗口中,运行 curl 命令来调用函数:

      curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

将图片上传到 Amazon ECR 存储库

  1. 对您的 Amazon ECR 注册表进行 Docker CLI 身份验证。

    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
  2. 使用 create-repository 命令在 Amazon ECR 中创建存储库。

    aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
  3. 使用 docker tag 命令将映像标记为与存储库名称匹配。

    docker tag hello-world:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
  4. 使用 docker push 命令将映像部署到 Amazon ECR。

    docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

更新用户权限

确保创建函数的 IAM 用户或角色的权限包含 Amazon 托管策略 GetRepositoryPolicySetRepositoryPolicyInitiateLayerUpload。有关访问策略的信息,请参阅 IAM 用户指南 中的访问管理

例如,使用 IAM 控制台创建具有以下策略的角色:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": ["ecr:SetRepositoryPolicy","ecr:GetRepositoryPolicy", "ecr:InitiateLayerUpload], "Resource": "arn:aws-cn:ecr:<region>:<account>:repository/<repo name>/" } ] }

创建定义为容器映像的 Lambda 函数

使用 Lambda 控制台创建定义为容器映像的函数。

使用控制台创建函数

  1. 打开 Lambda 控制台的“函数”页面

  2. 选择创建函数

  3. 选择 Container image(容器映像)选项。

  4. Basic information (基本信息) 中,执行以下操作:

    1. 函数名称中,输入 my-function

    2. 对于容器映像 URI,输入您之前创建的 Amazon ECR 映像的 URI。

  5. 选择创建函数

Lambda 创建您的函数和授予该函数上传日志的权限的执行角色。在您调用函数时,Lambda 担任执行角色,并使用该执行角色为 Amazon 开发工具包创建凭证和从事件源读取数据。

调用 Lambda 函数

使用控制台中提供的示例事件数据调用 Lambda 函数。

调用函数

  1. 选择函数后,选择 Test (测试) 选项卡。

  2. Test event (测试事件) 部分中,选择 New event (新事件)。在 Template (模板) 中,保留默认的 hello-world 选项。输入此测试的 Name(名称)并记录以下示例事件模板:

    { "key1": "value1", "key2": "value2", "key3": "value3" }
  3. 选择 Save changes(保存更改),然后选择 Test(测试)。每个用户每个函数可以创建最多 10 个测试事件。这些测试事件不适用于其他用户。

    Lambda 代表您运行函数。函数处理程序接收并处理示例事件。

  4. 成功完成后,在控制台中查看结果。

    • Execution result (执行结果) 显示执行状态为 succeeded (已成功)。展开 Details (详细信息) 以查看函数执行结果。请注意,logs (日志) 链接将在 CloudWatch 控制台中打开 Log groups (日志组) 页面。

    • Summary 部分显示在 Log output 部分中报告的密钥信息(执行日志中的 REPORT 行)。

    • Log output (日志输出)部分显示 Lambda 针对每次调用生成的日志。该函数会将这些日志写入 CloudWatch。为方便起见,Lambda 控制台为您显示这些日志。选择 Click here (单击此处) 可将日志添加到 CloudWatch 日志组,然后在 CloudWatch 控制台中打开 Log groups (日志组) 页面。

  5. 再运行函数(选择 Test [测试])几次可收集可在下一步骤中查看的一些指标。

  6. 选择 Monitor(监视器)选项卡。此页面显示了 Lambda 发送到 CloudWatch 的指标的图表。

    有关这些图表的更多信息,请参阅 在 Amazon Lambda 控制台中监控函数

清除

如果您已完成使用容器映像,请参阅 Amazon Elastic Container Registry 用户指南 中的 Deleting an image(删除映像)

如果您已完成使用您的函数,请将其删除。您还可以删除存储函数日志的日志组以及控制台创建的执行角色。

删除 Lambda 函数

  1. 打开 Lambda 控制台的“函数”页面

  2. 选择函数。

  3. 依次选择 ActionsDelete

  4. Delete function(删除函数)对话框中,选择 Delete(删除)

删除日志组

  1. 打开 CloudWatch 控制台的 Log groups(日志组)页

  2. 选择函数的日志组 (/aws/lambda/my-function)。

  3. 依次选择 Actions(操作)Delete log group(s)(删除日志组)

  4. Delete log group(s)(删除日志组)对话框中,选择 Delete(删除)

删除执行角色

  1. 打开 IAM 控制台的Roles(角色)页面

  2. 选择函数的角色 (my-function-role-31exxmpl)。

  3. 选择删除角色

  4. Delete role(删除角色)对话框中,选择 Yes, delete(是的,删除)

您可以使用 Amazon CloudFormation 和 Amazon CLI 自动创建和清理函数、日志组和角色。有关功能齐全的示例应用程序,请参阅 Lambda 示例应用程序