Posted at

【AWSメモ】DynamoDB StreamsのストリームデータをLambdaで読み込む

More than 1 year has passed since last update.

DynamoDB StreamsのストリームデータをLambdaで読み込む方法を記載します.


1. DynamoDB Streamsについて

一言で言うと,DynamoDBテーブル内の変更を時系列順に最大24時間保存する.

DynamoDB Streamsは下記を保守する

- 変更内容はストリームに 1 回だけ出現する

- 変更された各項目について、実際の変更と同じ順序で出現する


2. ストリームの有効化

DynamoDB Streamsを有効化する前に,まずテスト用のテーブルを作成する.

- プライマリーキーはnameで,その他項目はvalueとする.

スクリーンショット 2018-07-13 21.37.19.png

DynamoDB Streamsを有効化するのは非常に簡単です.

DynamoDBコンソールのダッシュボードから、[テーブル]を選択.

スクリーンショット 2018-07-13 21.41.30.png

[概要]タブで、[ストリームの管理]を選択.

スクリーンショット 2018-07-13 21.38.15.png

[ストリームの管理]ウィンドウで、テーブルのデータが変更されるたびにストリームに書き込まれる情報を選択し,[有効化]をクリック

スクリーンショット 2018-07-13 21.38.33.png

各ストリームは,Amazonリソースネームで一意に識別されます.

arn:aws:dynamodb:ap-northeast-1:111122223333:table/height/stream/2018-07-13T12:38:41.050


3. ストリームの読み込み

読み込む方法としてLambdaからDynamoDBをトリガーとして読み込む方法がある.


3.1. Lambda関数を作成

Lambda関数を作成する.設計図を選択し,「dynamodb-process-stream-python3」を選択する.

スクリーンショット 2018-07-13 22.33.15.png

Lambda関数名やIAMなどは必要な情報を埋める.

スクリーンショット 2018-07-13 22.36.14.png

DynamoDB トリガーはトリガーの有効化を選択するとDynamoDB Streamsからデータを読み込む設定が完了する.

スクリーンショット 2018-07-13 22.35.50.png

Lambda関数を作成する.下記は既存のテンプレート.

スクリーンショット 2018-07-13 22.35.55.png


3.2. DynamoDBにデータを挿入し動作確認

実際にDynamoDBに下記の通り値を挿入してみる.

スクリーンショット 2018-07-13 22.28.08.png

下記の通りログが流れていることがわかる.

スクリーンショット 2018-07-13 22.30.41.png

下記がログの抜粋

{

"ApproximateCreationDateTime": 1531488480,
"Keys": {
"name": {
"S": "tarou"
}
},
"NewImage": {
"name": {
"S": "tarou"
},
"height": {
"N": "160"
}
},
"SequenceNumber": "17700000000000480644429",
"SizeBytes": 27,
"StreamViewType": "NEW_AND_OLD_IMAGES"
}


4. 参考リンク