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

Kinesis で AWS Lambda を使用する

ウェブサイトのクリックストリーム、金融取引、ソーシャルメディアフィード、IT ログ、場所追跡イベントなど、何十万ものソースから送られてくる 1 時間あたり何テラバイトにもなるデータを連続的に取得し格納する Kinesis ストリームを作成できます。詳細については、Kinesisを参照してください。

Lambda 関数をサブスクライブして、Kinesis ストリームからレコードのバッチを自動的に読み取り、ストリームでレコードを検出した場合にそれを処理できます。この場合、AWS Lambda は新しいレコードを検出するために定期的 (1 秒に 1 回) にストリームをポーリングします。

Kinesis と AWS Lambda の連携動作については、以下の点に注意してください。

  • ストリームベースモデル – これは、AWS Lambda がストリームをポーリングし、新しいレコードを検出すると、新しいレコードをパラメーターとして渡して Lambda 関数を呼び出すモデル (「イベントソースマッピング」を参照) です。

    ストリームベースモデルでは、AWS Lambda にイベントソースマッピングを維持します。イベントソースマッピングには、ストリームから Lambda 関数へのマッピングが記述されています。AWS Lambda では、マッピングの作成に使用できる API (CreateEventSourceMapping) が提供されています。イベントソースマッピングは、AWS Lambda コンソールを使用して作成することもできます。

  • 同期呼び出し – AWS Lambda は、ストリームをポーリングし、RequestResponse 呼び出しタイプ (同期呼び出し) を使用して Lambda 関数を呼び出します。呼び出しタイプの詳細については、「呼び出しタイプ」を参照してください。

  • イベント構造 – Lambda 関数が受け取るイベントは、AWS Lambda によってストリームから読み取られたレコードの集合です。イベントソースマッピングを設定する際に指定するバッチサイズは、Lambda 関数の呼び出しごとに受け取るレコードの最大数です。

Lambda 関数の呼び出し元と関係なく、ユーザーの代わりに常に AWS Lambda が Lambda 関数を実行します。Lambda 関数で AWS リソースにアクセスする必要がある場合は、それらのリソースにアクセスするためのアクセス権限を付与する必要があります。AWS Lambda に、Kinesis ストリームをポーリングするアクセス権限も付与する必要があります。AWS Lambda がストリームをポーリングし、ユーザーの代わりに Lambda 関数を実行するために使用できるアクセス権限をすべて IAM ロール (実行ロール) に付与します。このロールを作成した後、Lambda 関数の作成時にこのロールを有効にします。詳細については、「アクセス権限の管理: IAM ロール (実行ロール) を使用する」を参照してください。

次の図はアプリケーションフローを示しています。

  1. カスタムアプリケーションがストリームにレコードを書き込みます。

  2. AWS Lambda はストリームをポーリングし、ストリームで新しいレコードを検出すると Lambda 関数を呼び出します。

  3. AWS Lambda は、Lambda 関数の作成時に指定した実行ロールを引き受けることにより、Lambda 関数を実行します。

セットアップの例を説明しているチュートリアルについては、「チュートリアル: Kinesis で AWS Lambdaを使用する」を参照してください。