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

步骤 2.1:创建 Lambda 函数部署程序包

Filter View 列表中,选择要用于 Lambda 函数的语言。适当的部分随即出现,其中包含创建部署程序包的代码和具体说明。

Node.js

  1. 打开文本编辑器,然后复制以下代码。

    Copy
    console.log('Loading function'); exports.lambda_handler = function(event, context, callback) { console.log(JSON.stringify(event, null, 2)); event.Records.forEach(function(record) { console.log(record.eventID); console.log(record.eventName); console.log('DynamoDB Record: %j', record.dynamodb); }); callback(null, "message"); };

    注意

    代码示例与 Node.js 运行时 v6.10 或 v4.3 兼容。有关更多信息,请参阅编程模型 (Node.js)

  2. 将该文件保存为 ProcessDynamoDBStream.js

  3. ProcessDynamoDBStream.js 文件压缩为 ProcessDynamoDBStream.zip

下一步

步骤 2.2:创建执行角色(IAM 角色)

Java

在以下代码中,handleRequest 是处理程序,AWS Lambda 调用该程序并为之提供事件数据。该处理程序使用了预定义的 DynamodbEvent 类(在 aws-lambda-java-events 库中定义)。

Copy
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord; public class DDBEventProcessor implements RequestHandler<DynamodbEvent, String> { public String handleRequest(DynamodbEvent ddbEvent, Context context) { for (DynamodbStreamRecord record : ddbEvent.getRecords()){ System.out.println(record.getEventID()); System.out.println(record.getEventName()); System.out.println(record.getDynamodb().toString()); } return "Successfully processed " + ddbEvent.getRecords().size() + " records."; } }

如果该处理程序正常返回并且没有异常,则 Lambda 认为输入的记录批次得到成功处理并开始读取流中的新记录。如果该处理程序引发异常,则 Lambda 认为输入的记录批次未得到处理,并用相同的记录批次再次调用该函数。

使用之前的代码 (在名为 DDBEventProcessor.java 的文件中) 创建一个部署程序包。确保添加以下依赖项:

  • aws-lambda-java-core

  • aws-lambda-java-events

有关更多信息,请参阅 使用 Java 编写 Lambda 函数的编程模型

部署程序包既可以是 .zip 文件,也可以是独立的 .jar。您可以使用自己熟悉的任何构建和打包工具来创建部署程序包。有关如何使用 Maven 构建工具创建独立 .jar 的示例,请参阅使用 Maven 但不借助任何 IDE 创建 .jar 部署程序包 (Java)使用 Maven 和 Eclipse IDE 创建 .jar 部署程序包 (Java)。有关如何使用 Gradle 构建工具创建 .zip 文件的示例,请参阅创建 .zip 部署程序包 (Java)

确认已创建您的部署程序包后,请转到下一步来创建 IAM 角色(执行角色)。您将在创建 Lambda 函数时指定此角色。

下一步

步骤 2.2:创建执行角色(IAM 角色)

C#

在以下代码中,ProcessDynamoEvent 是处理程序,AWS Lambda 调用该程序并为之提供事件数据。该处理程序使用了预定义的 DynamoDbEvent 类(在 Amazon.Lambda.DynamoDBEvents 库中定义)。

Copy
using System; using System.IO; using System.Text; using Amazon.Lambda.Core; using Amazon.Lambda.DynamoDBEvents; using Amazon.Lambda.Serialization.Json; namespace DynamoDBStreams { public class DdbSample { private static readonly JsonSerializer _jsonSerializer = new JsonSerializer(); public void ProcessDynamoEvent(DynamoDBEvent dynamoEvent) { Console.WriteLine($"Beginning to process {dynamoEvent.Records.Count} records..."); foreach (var record in dynamoEvent.Records) { Console.WriteLine($"Event ID: {record.EventID}"); Console.WriteLine($"Event Name: {record.EventName}"); string streamRecordJson = SerializeObject(record.Dynamodb); Console.WriteLine($"DynamoDB Record:"); Console.WriteLine(streamRecordJson); } Console.WriteLine("Stream processing complete."); } private string SerializeObject(object streamRecord) { using (var ms = new MemoryStream()) { _jsonSerializer.Serialize(streamRecord, ms); return Encoding.UTF8.GetString(ms.ToArray()); } } } }

要创建部署程序包,请按照 .NET 内核 CLI 中所列的步骤操作。在这种情况下,请在创建完成 .NET 项目后注意以下内容:

  • 将默认的 Program.cs 文件重命名为您选择的文件名,如 ProcessingDynamoDBStreams.cs

  • 使用上述代码实例替换重命名的 Program.cs 文件中的默认内容。

  • project.json 文件中,添加对 dependencies node 的以下引用。

    • "Amazon.Lambda.Core":"1.0.0-*"

    • "Amazon.Lambda.Serialiation.Json":"1.0.0-*"

    • "Amazon.Lambda.DynamoDBEvents":"1.0.0-*"

确认已创建您的部署程序包后,请转到下一步来创建 IAM 角色(执行角色)。您将在创建 Lambda 函数时指定此角色。

下一步

步骤 2.2:创建执行角色(IAM 角色)

Python

  1. 打开文本编辑器,然后复制以下代码。

    注意

    利用 from __future__ 语句,可以编写与 Python 2 或 3 兼容的代码。如果您使用的是运行时版本 3.6,则不必将它包含在内。

    Copy
    from __future__ import print_function def lambda_handler(event, context): for record in event['Records']: print(record['eventID']) print(record['eventName']) print('Successfully processed %s records.' % str(len(event['Records'])))
  2. 将该文件保存为 ProcessDynamoDBStream.py

  3. ProcessDynamoDBStream.py 文件压缩为 ProcessDynamoDBStream.zip

下一步

步骤 2.2:创建执行角色(IAM 角色)

本页内容: