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

ステップ 2.1: デプロイパッケージを作成する

[Filter View] リストから、Lambda 関数で使用する言語を選択します。該当するセクションに、デプロイパッケージを作成するためのコードと所定の手順が表示されます。

Node.js

Kinesis イベントレコードを入力として受け取ってそれを処理する Node.js コードの例を以下に示します。このコードでは説明のために、受信イベントデータの一部が CloudWatch Logs に書き込まれます。

手順に従って、AWS Lambda 関数デプロイパッケージを作成します。

  1. テキストエディターを開き、次のコードをコピーします。

    Copy
    console.log('Loading function'); exports.handler = function(event, context, callback) { //console.log(JSON.stringify(event, null, 2)); event.Records.forEach(function(record) { // Kinesis data is base64 encoded so decode here var payload = new Buffer(record.kinesis.data, 'base64').toString('ascii'); console.log('Decoded payload:', payload); }); callback(null, "message"); };

    注記

    コードサンプルは、Node.js ランタイム v6.10 または v4.3 に準拠しています。詳細については、「プログラミングモデル (Node.js)」を参照してください。

  2. ファイルを ProcessKinesisRecords.js という名前で保存します。

  3. ProcessKinesisRecords.js ファイルを ProcessKinesisRecords.zip という名前で圧縮します。

次のステップ

ステップ 2.2: 実行ロール (IAM ロール) を作成する

Java

Kinesis イベントレコードデータを入力として受け取ってそれを処理する Java コードの例を以下に示します。このコードでは説明のために、受信イベントデータの一部が CloudWatch Logs に書き込まれます。

コードでは、recordHandler はハンドラーです。このハンドラーは、定義済みの KinesisEvent クラスを使用します。このクラスは aws-lambda-java-events ライブラリで定義されています。

Copy
package example; import java.io.IOException; import com.amazonaws.services.lambda.runtime.events.KinesisEvent; import com.amazonaws.services.lambda.runtime.events.KinesisEvent.KinesisEventRecord; public class ProcessKinesisEvents { public void recordHandler(KinesisEvent event) throws IOException { for(KinesisEventRecord rec : event.getRecords()) { System.out.println(new String(rec.getKinesis().getData().array())); } } }

ハンドラーが例外をスローせずに正常に戻った場合、Lambda はレコードの入力バッチが正しく処理されたと見なし、ストリーム内の新しいレコードの読み取りを開始します。ハンドラーによって例外がスローされる場合、Lambda はレコードの入力バッチが処理されていないと見なし、レコードの同じバッチで関数を再度呼び出します。

前述のコード (ProcessKinesisEvents.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#

Kinesis イベントレコードデータを入力として受け取ってそれを処理する C# コードの例を以下に示します。このコードでは説明のために、受信イベントデータの一部が CloudWatch Logs に書き込まれます。

コードでは、HandleKinesisRecord はハンドラーです。このハンドラーは、定義済みの KinesisEvent クラスを使用します。このクラスは Amazon.Lambda.KinesisEvents ライブラリで定義されています。

Copy
using System; using System.IO; using System.Text; using Amazon.Lambda.Core; using Amazon.Lambda.KinesisEvents; namespace KinesisStreams { public class KinesisSample { [LambdaSerializer(typeof(JsonSerializer))] public void HandleKinesisRecord(KinesisEvent kinesisEvent) { Console.WriteLine($"Beginning to process {kinesisEvent.Records.Count} records..."); foreach (var record in kinesisEvent.Records) { Console.WriteLine($"Event ID: {record.EventId}"); Console.WriteLine($"Event Name: {record.EventName}"); string recordData = GetRecordContents(record.Kinesis); Console.WriteLine($"Record Data:"); Console.WriteLine(recordData); } Console.WriteLine("Stream processing complete."); } private string GetRecordContents(KinesisEvent.Record streamRecord) { using (var reader = new StreamReader(streamRecord.Data, Encoding.ASCII)) { return reader.ReadToEnd(); } } } }

デプロイパッケージを作成するには、.NET Core CLI で概要が説明されているステップに従います。この点で、.NET プロジェクトを作成した後、以下の点に注意してください。

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

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

  • project.json ファイルで、dependencies ノードに以下の参照が含まれていることを確認します。

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

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

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

デプロイパッケージが作成されたことを確認したら、次のステップに進んで IAM ロール (実行ロール) を作成します。Lambda 関数の作成時にそのロールを指定します。

次のステップ

ステップ 2.2: 実行ロール (IAM ロール) を作成する

Python

Kinesis イベントレコードデータを入力として受け取ってそれを処理する Python コードの例を以下に示します。このコードでは説明のために、受信イベントデータの一部が CloudWatch Logs に書き込まれます。

手順に従って、AWS Lambda 関数デプロイパッケージを作成します。

  1. テキストエディターを開き、次のコードをコピーします。

    注記

    from __future__ ステートメントを使用すると、Python 2 または 3 と互換性のあるコードを作成できます。ランタイムバージョン 3.6 を使用している場合は、これを含める必要はありません。

    Copy
    from __future__ import print_function #import json import base64 def lambda_handler(event, context): for record in event['Records']: #Kinesis data is base64 encoded so decode here payload=base64.b64decode(record["kinesis"]["data"]) print("Decoded payload: " + payload)
  2. ProcessKinesisRecords.py という名前でファイルを保存します。

  3. ProcessKinesisRecords.py ファイルを ProcessKinesisRecords.zip という名前で ZIP 圧縮します。

次のステップ

ステップ 2.2: 実行ロール (IAM ロール) を作成する

このページの内容: