示例 函数代码 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例 函数代码

示例代码具有以下语言。

Node.js

以下示例处理来自 DynamoDB 的消息并记录其内容。

例 ProcessDynamoDBStream.js
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"); };

压缩示例代码以创建部署程序包。有关说明,请参阅 使用 .zip 文件归档部署 Node.js Lambda 函数

Java 11

以下示例处理来自 DynamoDB 的消息,并记录其内容。handleRequest 是 Amazon Lambda 调用并提供事件数据的处理程序。该处理程序使用了预定义的 DynamodbEvent 类(在 aws-lambda-java-events 库中定义)。

例 DDB .java EventProcessor
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.services.lambda.runtime.RequestHandler2; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent; import com.amazonaws.services.lambda.runtime.events.DynamodbEvent.DynamodbStreamRecord; public class DDBEventProcessor implements RequestHandler2<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 认为输入的记录批次未得到处理,并用相同的记录批次再次调用该函数。

依赖项
  • aws-lambda-java-core

  • aws-lambda-java-events

使用 Lambda 库依赖项构建代码,创建部署程序包。有关说明,请参阅 使用 .zip 或 JAR 文件归档部署 Java Lambda 函数

C#

以下示例处理来自 DynamoDB 的消息,并记录其内容。ProcessDynamoEvent 是 Amazon Lambda 调用并提供事件数据的处理程序。该处理程序使用了预定义的 DynamoDbEvent 类(在 Amazon.Lambda.DynamoDBEvents 库中定义)。

例 ProcessingDynamoDBStreams.cs
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 Core 项目中的 Program.cs。有关说明,请参阅 使用 .zip 文件归档构建和部署 C# Lambda 函数

Python 3

以下示例处理来自 DynamoDB 的消息并记录其内容。

例 ProcessDynamoDBStream.py
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'])))

压缩示例代码以创建部署程序包。有关说明,请参阅将 .zip 文件归档用于 Python Lambda 函数

Go

以下示例处理来自 DynamoDB 的消息并记录其内容。

import ( "strings" "github.com/aws/aws-lambda-go/events" ) func handleRequest(ctx context.Context, e events.DynamoDBEvent) { for _, record := range e.Records { fmt.Printf("Processing request data for event ID %s, type %s.\n", record.EventID, record.EventName) // Print new values for attributes of type String for name, value := range record.Change.NewImage { if value.DataType() == events.DataTypeString { fmt.Printf("Attribute name: %s, value: %s\n", name, value.String()) } } } }

使用 go build 构建可执行文件并创建部署程序包。有关说明,请参阅 使用 .zip 文件归档部署 Go Lambda 函数