AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

步骤 2.3:创建 Lambda 函数并手动对其进行测试

请在此部分中执行以下操作:

  • 通过上传部署程序包来创建 Lambda 函数。

  • 通过手动调用 Lambda 函数并将示例 Amazon S3 事件数据作为参数传递来对其进行测试。

步骤 2.3.1:创建 Lambda 函数(上传部署程序包)

在本步骤中,您将使用 AWS CLI 上传部署程序包。

  1. 在命令提示符处,使用 adminuser 作为 --profile 来运行以下 Lambda AWS CLI create-function 命令。您需要提供 .zip 文件路径和执行角色 ARN 来更新该命令。对于运行时参数,根据您创建部署程序包时的代码示例,在 nodejs6.10nodejs4.3python3.6python2.7java8 之间选择。

    Copy
    $ aws lambda create-function \ --region us-west-2 \ --function-name CreateThumbnail \ --zip-file fileb://file-path/CreateThumbnail.zip \ --role role-arn \ --handler CreateThumbnail.handler \ --runtime runtime \ --profile adminuser \ --timeout 10 \ --memory-size 1024

    或者,您也可以将 .zip 文件上传到同一 AWS 区域中的 Amazon S3 存储桶,然后在之前的命令中指定该存储桶和对象名称。您需要将 --zip-file 参数替换为 --code 参数,如下所示:

    Copy
    --code S3Bucket=bucket-name,S3Key=zip-file-object-key
  2. 记下函数 ARN。在下一章节向 Amazon S3 存储桶添加通知配置时,您会用到它。

  3. (可选)之前的命令指定 10 秒超时值作为函数配置。根据上传的对象的大小,可能需要使用下面的 AWS CLI 命令增大超时值。

    Copy
    $ aws lambda update-function-configuration \ --function-name CreateThumbnail \ --region us-west-2 \ --timeout timeout-in-seconds \ --profile adminuser

注意

您可以使用 AWS Lambda 控制台创建 Lambda 函数,在这种情况下,应记下 create-function AWS CLI 命令参数的值。您应在控制台 UI 中提供相同的值。

步骤 2.3.2:测试 Lambda 函数(手动调用)

在本步骤中,您将使用示例 Amazon S3 事件数据手动调用 Lambda 函数。您可以使用 AWS 管理控制台或 AWS CLI 测试该函数。

测试 Lambda 函数(控制台)

  1. 步骤 2.2:手动调用 Lambda 函数并验证结果、日志和指标中按照“入门”中的步骤创建并调用 Lambda 函数。对于用于测试的示例事件,请在 Sample event template 中选择 S3 Put

  2. 验证是否已在目标存储桶中创建缩略图并在 AWS Lambda 控制台中监控 Lambda 函数的活动,如下所示:

    • AWS Lambda 控制台在函数的 Cloudwatch Metrics at a glance 部分中显示某些 CloudWatch 指标的图表化表示。

    • 对于每个图表,您还可以单击 logs 链接来直接查看 CloudWatch Logs。

测试 Lambda 函数 (AWS CLI)

  1. 将下面的 Amazon S3 示例事件数据保存到某个文件中并将该文件另存为 input.txt。您需要提供 sourcebucket 名称和 .jpg 对象键来更新该 JSON。

    Copy
    { "Records":[ { "eventVersion":"2.0", "eventSource":"aws:s3", "awsRegion":"us-west-2", "eventTime":"1970-01-01T00:00:00.000Z", "eventName":"ObjectCreated:Put", "userIdentity":{ "principalId":"AIDAJDPLRKLG7UEXAMPLE" }, "requestParameters":{ "sourceIPAddress":"127.0.0.1" }, "responseElements":{ "x-amz-request-id":"C3D13FE58DE4C810", "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD" }, "s3":{ "s3SchemaVersion":"1.0", "configurationId":"testConfigRule", "bucket":{ "name":"sourcebucket", "ownerIdentity":{ "principalId":"A3NL1KOZZKExample" }, "arn":"arn:aws:s3:::sourcebucket" }, "object":{ "key":"HappyFace.jpg", "size":1024, "eTag":"d41d8cd98f00b204e9800998ecf8427e", "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko" } } } ] }
  2. 运行下面的 Lambda CLI invoke 命令以调用函数。请注意,该命令会请求异步执行。(可选)可通过将 RequestResponse 指定为 invocation-type 参数值来同步调用它。

    Copy
    $ aws lambda invoke \ --invocation-type Event \ --function-name CreateThumbnail \ --region us-west-2 \ --payload file://file-path/inputfile.txt \ --profile adminuser \ outputfile.txt

    注意

    您可以调用该函数是因为您使用自己的凭证调用了自己的函数。在下一节中,您将配置 Amazon S3 来代表您调用此函数,这需要您向与 Lambda 函数关联的访问策略添加权限,以授予 Amazon S3 调用您的函数的权限。

  3. 验证是否已在目标存储桶中创建缩略图并在 AWS Lambda 控制台中监控 Lambda 函数的活动,如下所示:

    • AWS Lambda 控制台在函数的 Cloudwatch Metrics at a glance 部分中显示某些 CloudWatch 指标的图表化表示。

    • 对于每个图表,您还可以单击 logs 链接来直接查看 CloudWatch Logs。

下一步

步骤 3:添加事件源(配置 Amazon S3 以发布事件)