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

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

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

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

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

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

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

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

在命令提示符处,使用 adminuser profile 运行下面的 Lambda CLI create-function 命令。

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

Copy
$ aws lambda create-function \ --region us-east-1 \ --function-name ProcessDynamoDBStream \ --zip-file fileb://file-path/ProcessDynamoDBStream.zip \ --role role-arn \ --handler ProcessDynamoDBStream.lambda_handler \ --runtime runtime-value \ --profile adminuser

注意

如果您选择 Java 8 作为运行时,则处理程序值必须为 packageName::methodName

有关更多信息,请参阅 CreateFunction。AWS Lambda 将创建该函数并返回函数配置信息。

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

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

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

在本步骤中,您将使用 invoke AWS Lambda CLI 命令和以下示例 DynamoDB 事件手动调用您的 Lambda 函数。

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

    Copy
    { "Records":[ { "eventID":"1", "eventName":"INSERT", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "NewImage":{ "Message":{ "S":"New item!" }, "Id":{ "N":"101" } }, "SequenceNumber":"111", "SizeBytes":26, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" }, { "eventID":"2", "eventName":"MODIFY", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "NewImage":{ "Message":{ "S":"This item has changed" }, "Id":{ "N":"101" } }, "OldImage":{ "Message":{ "S":"New item!" }, "Id":{ "N":"101" } }, "SequenceNumber":"222", "SizeBytes":59, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" }, { "eventID":"3", "eventName":"REMOVE", "eventVersion":"1.0", "eventSource":"aws:dynamodb", "awsRegion":"us-east-1", "dynamodb":{ "Keys":{ "Id":{ "N":"101" } }, "OldImage":{ "Message":{ "S":"This item has changed" }, "Id":{ "N":"101" } }, "SequenceNumber":"333", "SizeBytes":38, "StreamViewType":"NEW_AND_OLD_IMAGES" }, "eventSourceARN":"stream-ARN" } ] }
  2. 执行下面的 invoke 命令。

    Copy
    $ aws lambda invoke \ --invocation-type RequestResponse \ --function-name ProcessDynamoDBStream \ --region us-east-1 \ --payload file://file-path/input.txt \ --profile adminuser \ outputfile.txt

    请注意,invoke 命令指定 RequestResponse 作为调用类型,该类型请求同步执行。有关更多信息,请参阅 Invoke。函数在响应正文中返回字符串消息(代码中 context.succeed() 中的消息)。

  3. outputfile.txt 文件中验证输出。

    您可以在 AWS Lambda 控制台中监控 Lambda 函数的活动。

    • AWS Lambda 控制台在针对您的函数的 Cloudwatch Metrics at a glance 部分显示某些 CloudWatch 指标的图表化表示。在 https://console.amazonaws.cn/ 处登录 AWS 管理控制台。

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

下一步

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