メニュー
AWS Lambda
開発者ガイド

ステップ 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 を作成する方法の例については、「IDE なしで Maven を使用した .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 Core CLI で概要が説明されているステップに従います。この点で、.NET プロジェクトを作成した後、以下の点に注意してください。

  • デフォルトの Program.cs ファイルを、ProcessingDynamoDBStreams.cs のように任意のファイル名に変更します。

  • 名前を変更した Program.cs ファイルのデフォルトコンテンツを上の例のコードに置き換えます。

  • project.json ファイルで、dependencies ノードに以下の参照を追加します。

    • "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 ロール) を作成する

このページの内容: