DynamoDB にトリガーはありますか?

はい。DynamoDB のトリガーは DynamoDB Streams と AWS Lambda から組み立てられます。ストリームがアイテム単位の変更をすべて捕捉し、そのストリームを購読する Lambda 関数がそれに応じて自動的に実行されます。CREATE TRIGGER 文はありません。トリガーのコードはデータベースの外、Lambda に置かれます。

トリガーの仕組み

テーブルで DynamoDB Streams を有効にし、ストリームの ARN を Lambda 関数に関連付けます。作成・更新・削除はすべてストリームレコードとして捕捉されます。Lambda サービスは 1 秒に 4 回ストリームをポーリングし、新しいレコードのバッチで関数を同期的に呼び出します。イベントをフィルターして、関心のある変更に対してだけ関数が動くようにもできます。

関数が実際に受け取るもの

StreamViewType: NEW_AND_OLD_IMAGES でストリームを有効にし、注文を 1 件書き、ステータスを変更し、削除してから、GetRecords でシャードを読み戻しました。出てきたレコードは 3 つ、INSERTMODIFYREMOVE です。以下は真ん中のもの、逐語です。

{
  "eventID": "77dabd57-20e1-4827-83e9-0fa20153adb0",
  "eventName": "MODIFY",
  "eventVersion": "1.1",
  "eventSource": "aws:dynamodb",
  "awsRegion": "ddblocal",
  "dynamodb": {
    "ApproximateCreationDateTime": 1785266820,
    "Keys": {"pk": {"S": "ORDER#1"}},
    "NewImage": {
      "total": {"N": "42"},
      "pk": {"S": "ORDER#1"},
      "status": {"S": "SHIPPED"}
    },
    "OldImage": {
      "total": {"N": "42"},
      "pk": {"S": "ORDER#1"},
      "status": {"S": "PENDING"}
    },
    "SequenceNumber": "000000000000000019180",
    "SizeBytes": 67,
    "StreamViewType": "NEW_AND_OLD_IMAGES"
  }
}

両方のイメージがレコードに入っています。PENDING から SHIPPED へという問いは、テーブルへ問い合わせ直すことなく関数の中で答えられます。トリガーの中の GetItem は読み取り 1 回分の費用がかかるうえ、次の書き込みと競走するので、どちらのイメージも記述していない第三の状態を渡してくることがあります。

ビュータイプはストリームを有効にするときに選び、既に書かれたレコードはそのとき要求したものしか持ちません。KEYS_ONLYNEW_IMAGE を選ぶと、後から差分を取る OldImage は存在しません。

Lambda は同じレコードを Records 配列に入れて関数に渡し、eventSourceARN フィールドを追加します。上の awsRegionddblocal になっているのは、この実行で DynamoDB Local を使ったからです。サービスに対してならリージョンが入ります。

トリガーの用途

典型的な用途には、値が変わったときの通知の送信、ワークフローの起動、集計値やカウンターの維持、そして永続的な監査証跡のための各変更の耐久ストレージ(S3 など)への複写があります。関数がエラーになると、Lambda は成功するかレコードが期限切れになるまでバッチをリトライします。リトライとバッチ処理の挙動は設定できます。

知っておきたい制限

AWS は 1 つのストリームに購読する Lambda 関数を最大 2 つまでにすることを推奨しています。それを超えると読み取りのスロットリングを招きかねません。トリガー関数は短命であるべきです。重い処理は、インラインで長いロジックを走らせるのではなく、非同期のワークフローへ引き渡しましょう。

さらに詳しく

ストリームのモデルそのものは DynamoDB Streams ガイド から始め、トリガーが反応する書き込みを作るには式ビルダー を使い、ストリームに流れ込むアイテムの変更を眺めるには DynoTable をダウンロード してください。

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

このストリームレコードは 2026-07-28 に、Node v24.18.0 上の @aws-sdk/client-dynamodb 3.1095.0 で DynamoDB Local 3.3.0 に対して捕捉したもので、インデント以外は手を加えずに再掲しています。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。