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

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

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

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

  • 通过手动调用 Lambda 函数来对其进行测试。您应使用示例 Kinesis 事件数据,而不是创建事件源。

在下一节中,您将创建 Kinesis 流并测试端到端体验。

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

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

在命令提示符处,使用 adminuser profile 运行下面的 Lambda CLI create-function 命令。有关该设置的更多信息,请参阅配置 AWS CLI

您需要提供 .zip 文件路径和执行角色 ARN 来更新该命令。--runtime 参数值可以是 python3.6python2.7nodejs6.10nodejs4.3java8,具体取决于您编写代码所用的语言。

Copy
$ aws lambda create-function \ --region us-west-2 \ --function-name ProcessKinesisRecords \ --zip-file fileb://file-path/ProcessKinesisRecords.zip \ --role execution-role-arn \ --handler handler \ --runtime runtime-value \ --profile adminuser

对于 Java,--handler 参数值应该为 example.ProcessKinesisRecords::recordHandler。对于 Node.js,该参数值应为 ProcessKinesisRecords.handler;对于 Python,该参数值应为 ProcessKinesisRecords.lambda_handler

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

Copy
--code S3Bucket=bucket-name,S3Key=zip-file-object-key

注意

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

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

使用示例 Kinesis 事件数据手动调用函数。建议您使用控制台来调用函数,因为控制台 UI 提供了用于查看执行结果(包括执行摘要、代码写入的日志和函数返回的结果)的用户友好型界面(因为控制台始终执行同步执行 - 使用 RequestResponse 调用类型来调用 Lambda 函数)。

测试 Lambda 函数(控制台)

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

  2. 在控制台中验证结果。

测试 Lambda 函数 (AWS CLI)

  1. 将以下 JSON 复制到文件中并将其保存为 input.txt

    Copy
    { "Records": [ { "kinesis": { "partitionKey": "partitionKey-3", "kinesisSchemaVersion": "1.0", "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0IDEyMy4=", "sequenceNumber": "49545115243490985018280067714973144582180062593244200961" }, "eventSource": "aws:kinesis", "eventID": "shardId-000000000000:49545115243490985018280067714973144582180062593244200961", "invokeIdentityArn": "arn:aws:iam::account-id:role/testLEBRole", "eventVersion": "1.0", "eventName": "aws:kinesis:record", "eventSourceARN": "arn:aws:kinesis:us-west-2:35667example:stream/examplestream", "awsRegion": "us-west-2" } ] }
  2. 执行下面的 invoke 命令:

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

    注意

    在本教程示例中,消息保存在 outputfile.txt 文件中。如果您请求同步执行(RequestResponse 作为调用类型),函数将在响应正文中返回字符串消息。

    对于 Node.js,该消息可能为以下形式之一(您在代码中指定的任何一个):

    context.succeed("message")

    context.fail("message")

    context.done(null, "message)

    对于 Python 或 Java,它是返回语句中的消息:

    return "message"

下一步

步骤 3:添加事件源(创建 Kinesis 流并将其与您的 Lambda 函数关联)