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

ステップ 3: イベントソースを追加する (Amazon Kinesis ストリームを作成し、それを Lambda 関数と関連付ける)

このセクションでは、Amazon Kinesis ストリームを作成し、AWS Lambda でイベントソースを追加して、Amazon Kinesis ストリームを Lambda 関数と関連付けます。

イベントソースを作成すると、AWS Lambda はストリームのポーリングを開始します。次に、ストリームにイベントを追加して設定をテストし、AWS Lambda がユーザーの代わりに Lambda 関数を実行したことを確認します。

ステップ 3.1: Amazon Kinesis ストリームを作成する

次の Amazon Kinesis create-stream CLI コマンドを使用してストリームを作成します。

Copy
$ aws kinesis create-stream \ --stream-name examplestream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

次の Amazon Kinesis describe-stream AWS CLI コマンドを実行して、ストリーム ARN を取得します。

Copy
$ aws kinesis describe-stream \ --stream-name examplestream \ --region us-west-2 \ --profile adminuser

ARN は、ストリームと Lambda 関数を関連付けるために次のステップで必要になります。ストリームは次の形式です。

Copy
arn:aws:kinesis:aws-region:account-id:stream/stream-name

ステップ 3.2: AWS Lambda でイベントソースを追加する

次の AWS CLI add-event-source コマンドを実行します。コマンドを実行したら、UUID を書き留めてください。この UUID は、コマンドでイベントソースを参照する場合 (イベントソースを削除するときなど) に必要になります。

Copy
$ aws lambda create-event-source-mapping \ --region us-west-2 \ --function-name ProcessKinesisRecords \ --event-source kinesis-stream-arn \ --batch-size 100 \ --starting-position TRIM_HORIZON \ --profile adminuser

次のコマンドを実行して、イベントソースマッピングのリストを取得できます。

Copy
$ aws lambda list-event-source-mappings \ --region us-west-2 \ --function-name ProcessKinesisRecords \ --event-source kinesis-stream-arn \ --profile adminuser \ --debug

レスポンスでは、ステータス値が enabled であることを確認できます。

注記

イベントソースマッピングを無効にすると、AWS Lambda は Amazon Kinesis ストリームのポーリングを停止します。イベントソースマッピングを再度有効化すると、停止時のシーケンス番号からポーリングが再開されるため、マッピングを無効にする前に、各レコードはマッピングを無効にする前または有効にした後のいずれかで処理されます。シーケンス番号が TRIM_HORIZON になっている場合は、再度有効にしたときに TRIM_HORIZON からポーリングが開始されます。ただし、新しいイベントソースマッピングを作成した場合は、指定した開始位置に応じて、常に TRIM_HORIZONLATEST または AT_TIMESTAMP からポーリングが開始されます。これは、イベントソースマッピングを削除した後に、それと同じ設定で新しいマッピングを作成した場合にも適用されます。

ステップ 3.3: セットアップのテスト

すべて完了しました。これで adminuser は次のように設定をテストできます。

  1. 次の AWS CLI コマンドを使用して、イベントレコードを Amazon Kinesis ストリームに追加します。--data の値は、"Hello, this is a test." 文字列を base64 形式でエンコードした値です。同じコマンドを複数回実行して、複数のレコードをストリームに追加することができます。

    Copy
    $ aws kinesis put-record \ --stream-name examplestream \ --data "This is a test. final" \ --partition-key shardId-000000000000 \ --region us-west-2 \ --profile adminuser
  2. AWS Lambda は、ストリームをポーリングし、ストリームの更新を検出すると、ストリームからのイベントデータを渡して Lambda 関数を呼び出します。

    AWS Lambda では、実行ロールがストリームをポーリングすることが想定されます。必要な Amazon Kinesis アクション用のアクセス権限をロールに付与しているため、AWS Lambda はストリームをポーリングし、ストリームからイベントを読み取ることができます。

  3. 関数が実行され、Amazon CloudWatch の Lambda 関数に対応するロググループにログが追加されます。

    adminuser は、Amazon CloudWatch コンソールで報告されたログを確認することもできます。必ず、Lambda 関数を作成したのと同じ AWS リージョンでログを確認します。