サンプル関数コード - AWS Lambda

サンプル関数コード

サンプルコードは以下の言語で利用可能です。

トピック

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"); };

サンプルコードを圧縮してデプロイパッケージを作成します。手順については、「Node.js の AWS Lambda デプロイパッケージ」を参照してください。

Java 11

次の例では、DynamoDB ログからのメッセージを処理して、その内容をログに記録します。handleRequest は、呼び出してデータを処理する AWS Lambda ハンドラです。このハンドラーは、定義済みの DynamodbEvent クラスを使用します。このクラスは aws-lambda-java-events ライブラリで定義されています。

例 DDBEventProcessor.java

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 はレコードの入力バッチが処理されていないと見なし、レコードの同じバッチで関数を再度呼び出します。

依存関係

  • aws-lambda-java-core

  • aws-lambda-java-events

Lambda ライブラリの依存関係でコードをビルドし、デプロイパッケージを作成します。手順については、「Java の AWS Lambda デプロイパッケージ」を参照してください。

C#

次の例では、DynamoDB ログからのメッセージを処理して、その内容をログに記録します。ProcessDynamoEvent は、呼び出してデータを処理する AWS 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 は、上記のサンプルに置き換えます。手順については、「C# の AWS 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'])))

サンプルコードを圧縮してデプロイパッケージを作成します。手順については、「Python の AWS 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 を使用して実行ファイルをビルドし、デプロイパッケージを作成します。手順については、「Go の AWS Lambda デプロイパッケージ」を参照してください。