DynamoDBStreamのLambdaに渡す引数4種類解説

DynamoDBStreamのLambda引数アイキャッチ

DynamoDBStreamではLambdaに渡す項目について4種類のうちから選択できます。

  • キー属性のみ
  • 新しいイメージ
  • 古いイメージ
  • 新旧イメージ
DynamoDBストリーム有効化画面
DynamoDBStream属性の選択

それぞれ追加更新したときのLambda引数の違いについてまとめました。

DynamoDストリームアーキテクチャ
DynamoDBStreamで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テーマ

ランキング

ランキングに参加しています。クリックして応援いただけると嬉しいです。
にほんブログ村 IT技術ブログ クラウドコンピューティングへ
にほんブログ村
AWSランキング
AWSランキング

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次