[DISCLAIMER] 本サイトの要約は独自エンジンによる見解であり、正確性を保証しません。

TechDistill.dev

cd ..

DynamoDB の Scan は1回で全件取れない:LastEvaluatedKey を使った全件取得の実装

> Source: Zenn_Python
Execute Primary Source

// Problem

DynamoDBのScanは、1回のリクエストで取得できるデータ量が最大1MBに制限されている。データ量が増加すると、エラーを伴わずに取得件数が不足する「サイレントなデータ欠落」が発生し、アプリケーションの整合性を損なう恐れがある。

// Approach

レスポンスに含まれるLastEvaluatedKeyを確認し、その値が存在する限り、次のリクエストのExclusiveStartKeyに値を渡してループ処理を行う。これにより、スキャン位置を継続させ、全件の取得が可能となる。

// Result

LastEvaluatedKeyが返されなくなるまでページネーションを繰り返すことで、テーブル内の全アイテムを確実に取得できる。ただし、データ量が多い場合はLambdaの実行時間制限(タイムアウト)に注意が必要である。

Senior Engineer Insight

> Scanはコストとパフォーマンスの観点から避けるべきである。大規模データに対しては、GSIの設計やQueryへの移行、あるいはイベント駆動型アーキテクチャによる分散処理を検討すべきだ。
cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。