DynamoDB StreamsのストリームデータをLambdaで読み込む方法を記載します.
1. DynamoDB Streamsについて
一言で言うと,DynamoDBテーブル内の変更を時系列順に最大24時間保存する.
DynamoDB Streamsは下記を保守する
- 変更内容はストリームに 1 回だけ出現する
- 変更された各項目について、実際の変更と同じ順序で出現する
2. ストリームの有効化
DynamoDB Streamsを有効化する前に,まずテスト用のテーブルを作成する.
- プライマリーキーは
name
で,その他項目はvalue
とする.
DynamoDB Streamsを有効化するのは非常に簡単です.
DynamoDBコンソールのダッシュボードから、[テーブル]を選択.
[概要]タブで、[ストリームの管理]を選択.
[ストリームの管理]ウィンドウで、テーブルのデータが変更されるたびにストリームに書き込まれる情報を選択し,[有効化]をクリック
各ストリームは,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」を選択する.
Lambda関数名やIAMなどは必要な情報を埋める.
DynamoDB トリガーはトリガーの有効化
を選択するとDynamoDB Streamsからデータを読み込む設定が完了する.
Lambda関数を作成する.下記は既存のテンプレート.
3.2. DynamoDBにデータを挿入し動作確認
実際にDynamoDBに下記の通り値を挿入してみる.
下記の通りログが流れていることがわかる.
下記がログの抜粋
{
"ApproximateCreationDateTime": 1531488480,
"Keys": {
"name": {
"S": "tarou"
}
},
"NewImage": {
"name": {
"S": "tarou"
},
"height": {
"N": "160"
}
},
"SequenceNumber": "17700000000000480644429",
"SizeBytes": 27,
"StreamViewType": "NEW_AND_OLD_IMAGES"
}