DynamoDBStreamではLambdaに渡す項目について4種類のうちから選択できます。
- キー属性のみ
- 新しいイメージ
- 古いイメージ
- 新旧イメージ
それぞれ追加更新したときのLambda引数の違いについてまとめました。
検証に使用したINSERTレコードはこちらです。
{
"id": "123",
"FirstName": "Taro",
"Job": "Engineer",
"LastName": "Tanaka"
}
古いイメージ、新旧イメージの検証では↑を↓に書き換えて検証しました。
{
"id": "123",
"FirstName": "Taro",
"Job": "SystemEngineer",
"LastName": "Tanaka"
}
目次
キー属性のみ
テーブルのキーに設定しているidのみが通知されています。
{
"Records": [
{
"eventID": "3fcd8eedbfaf770344426b372dd9f952",
"eventName": "INSERT",
"eventVersion": "1.1",
"eventSource": "aws:dynamodb",
"awsRegion": "ap-northeast-1",
"dynamodb": {
"ApproximateCreationDateTime": 1672901168.0,
"Keys": {"id": {"S": "123"}},
"SequenceNumber": "10100000000018840204581",
"SizeBytes": 5,
"StreamViewType": "KEYS_ONLY"
},
"eventSourceARN": "arn:aws:dynamodb:ap-northeast-1:123456789012:table/TEST_TABLE/stream/2023-01-05T06:06:44.976"
}
]
}
新しいイメージ
キー以外にもNewImageですべてのカラムが連携されてきました。
{
"Records": [
{
"eventID": "e5830719875c6faf9d19a93be2f8a7a0",
"eventName": "INSERT",
"eventVersion": "1.1",
"eventSource": "aws:dynamodb",
"awsRegion": "ap-northeast-1",
"dynamodb": {
"ApproximateCreationDateTime": 1672903413.0,
"Keys": {"id": {"S": "123"}},
"NewImage": {
"FirstName": {"S": "Taro"},
"LastName": {"S": "Tanaka"},
"id": {"S": "123"},
"Job": {"S": "Engineer"}
},
"SequenceNumber": "220400000000023347800639",
"SizeBytes": 48,
"StreamViewType": "NEW_IMAGE"
},
"eventSourceARN": "arn:aws:dynamodb:ap-northeast-1:123456789012:table/TEST_TABLE/stream/2023-01-05T07:11:35.881"
}
]
}
古いイメージ
OldImageに更新前の属性が連携されてきました。
{
"Records": [
{
"eventID": "f78c163365bf3b35aa10c0392db59d1d",
"eventName": "MODIFY",
"eventVersion": "1.1",
"eventSource": "aws:dynamodb",
"awsRegion": "ap-northeast-1",
"dynamodb": {
"ApproximateCreationDateTime": 1672906138.0,
"Keys": {"id": {"S": "123"}},
"OldImage": {
"FirstName": {"S": "Taro"},
"LastName": {"S": "Tanaka"},
"id": {"S": "123"},
"Job": {"S": "Engineer"}
},
"SequenceNumber": "312300000000022724972444",
"SizeBytes": 48,
"StreamViewType": "OLD_IMAGE"
},
"eventSourceARN": "arn:aws:dynamodb:ap-northeast-1:123456789012:table/TEST_TABLE/stream/2023-01-05T07:38:47.858"
}
]
}
新旧イメージ
NewImageとOldImageの両方が連携されてきました。
{
"Records": [
{
"eventID": "ff9cf70bbeefe875e8703f71b2a0c1d4",
"eventName": "MODIFY",
"eventVersion": "1.1",
"eventSource": "aws:dynamodb",
"awsRegion": "ap-northeast-1",
"dynamodb": {
"ApproximateCreationDateTime": 1672907394.0,
"Keys": {"id": {"S": "123"}},
"NewImage": {
"FirstName": {"S": "Taro"},
"LastName": {"S": "Tanaka"},
"id": {"S": "123"},
"Job": {"S": "SystemEngineer"}
},
"OldImage": {
"FirstName": {"S": "Taro"},
"LastName": {"S": "Tanaka"},
"id": {"S": "123"},
"Job": {"S": "Engineer"}
},
"SequenceNumber": "472500000000020633664862",
"SizeBytes": 97,
"StreamViewType": "NEW_AND_OLD_IMAGES"
},
"eventSourceARN": "arn:aws:dynamodb:ap-northeast-1:495592951950:table/TEST_TABLE/stream/2023-01-05T08:26:31.368"
}
]
}
PR
当ブログはWordPressテーマSWELLを使用しています。非常に使いやすく、簡単にプロのようなデザインを使えるのでお勧めです!!
SWELL – シンプル美と機能性両立を両立させた、圧巻のWordPressテーマ
システムエンジニア
AWSを中心としたクラウド案件に携わっています。
IoTシステムのバックエンド開発、Datadogを用いた監視開発など経験があります。
IT資格マニアでいろいろ取得しています。
AWS認定:SAP, DOP, SAA, DVA, SOA, CLF
Azure認定:AZ-104, AZ-300
ITIL Foundation
Oracle Master Bronze (DBA)
Oracle Master Silver (SQL)
Oracle Java Silver SE
■略歴
理系の大学院を卒業
IT企業に就職
AWSのシステム導入のプロジェクトを担当