よくある DynamoDB エラー(と修正方法)
開発者が最もよく遭遇する DynamoDB エラー。それぞれの意味、原因、正確な修正方法を解説します。
検証と式のエラー (52)
DynamoDB ValidationException — 原因と修正方法
DynamoDB の ValidationException は、リクエストが形式不正として実行前に拒否されたことを意味します。よくあるきっかけ、読むべきメッセージ、そしてそれぞれの直し方。
"Query condition missed key schema element" — DynamoDB の修正
Query condition missed key schema element は、KeyConditionExpression にパーティションキーの等価条件がない意味。代わりに GSI をクエリするか Scan を。
"The provided key element does not match the schema" — DynamoDB の修正
この ValidationException は、キー属性の名前や型がテーブルの KeySchema と一致しないことを意味します — ソートキーの欠落や、文字列として送られた数値が原因です。
"Invalid UpdateExpression" Syntax Error — DynamoDB の修正
Invalid UpdateExpression の原因はたいてい、予約語を素で使ったことか、#name / :value プレースホルダーの欠落です。メッセージの読み方と直し方を解説します。
"ExpressionAttributeValues contains invalid value" — DynamoDB の修正
この ValidationException は、ExpressionAttributeValues 内の値が空、誤った型、または式で定義していないプレースホルダーであることを意味します。
"Item size has exceeded the maximum allowed size" — DynamoDB の修正
DynamoDB のアイテムは 400 KB が上限。この ValidationException は超過の意味です — サイズを測り、属性を分割するか削減しましょう。
DynamoDB ConditionalCheckFailedException — 原因と修正
ConditionalCheckFailedException は、ConditionExpression が false と評価されたため、DynamoDB が書き込みを拒否し、アイテムを変更しなかったことを意味します。
DynamoDB TransactionCanceledException — キャンセル理由の読み解き方
TransactionCanceledException は、1 アイテムの失敗で全体がロールバックされた意味。CancellationReasons 配列でどのアイテムがなぜ失敗したか分かります。
DynamoDB SerializationException — 原因と修正
SerializationException は送った JSON が DynamoDB のワイヤーフォーマットと不一致 — 多くは文字列で包んだ数値。型付き AttributeValue ラッパーを直しましょう。
"Supplied AttributeValue is empty" — DynamoDB の修正
この ValidationException は、AttributeValue が型付きの値を持たないという意味 — 空のセット、空のキー文字列、未定義フィールド。削除するか値を設定しましょう。
"One or more parameter values were invalid" — DynamoDB の修正
この ValidationException は、値が DynamoDB のルールを破っているという意味 — 空のセット、空のキー文字列、型の不一致。メッセージがどのパラメータかを示します。
"Invalid size for parameter" — DynamoDB ベクトル書き込みの修正
埋め込みの次元数がベクトルインデックスと一致しないとき、DynamoDB はベクトルの書き込みを拒否します。メッセージは属性名と両方のサイズを示します。
"Search vector contains invalid values" — DynamoDB の修正
SearchVectors は、DynamoDB の L 型で包んだり float 以外の値を含むクエリベクトルを拒否します。このパラメータは List 属性ではなく裸の JSON 配列です。
"SearchConditionExpression must be provided" — DynamoDB の修正
HASH 検索スキーマキー付きのベクトルインデックスは、SearchVectors ごとにパーティション値 1 つの固定が必須。フィルターはインデックス作成時点で任意でなくなります。
"Query key condition not supported" — DynamoDB の修正
DynamoDB は、キースキーマが許さない演算子を使う KeyConditionExpression を拒否します — パーティションキーは等価比較しか受け付けません。使える演算子を一覧します。
"Attribute name is a reserved keyword" — DynamoDB の修正
DynamoDB は status、name、size のような予約語を素の属性名として拒否します。#status のような ExpressionAttributeNames のプレースホルダーで別名にしましょう。
"Float types are not supported" — DynamoDB boto3 の修正
DynamoDB は正確な 10 進数を保存するため、boto3 は TypeError "Float types are not supported" を投げます。float は文字列経由で decimal.Decimal に変換しましょう。
"Number overflow" — DynamoDB の数値サイズ制限の修正
DynamoDB の N 型が保持できるのは 38 桁の精度と約 9.9E+125 までの大きさです。それを超える大きな ID や高精度の値は、代わりに文字列として格納しましょう。
"The provided expression refers to an attribute that does not exist" — 修正
UpdateExpression か ConditionExpression が、アイテムにないパスを参照しています — 親マップの欠落、タイプミス、欠落属性への演算が原因です。
"Provided list of item keys contains duplicates" (BatchGetItem) — 修正
DynamoDB は、あるテーブルの Keys リストにプライマリキーが重複している BatchGetItem を拒否します。バッチ全体が失敗するため、送信前にキーを重複排除しましょう。
"Provided list of item keys contains duplicates" (BatchWriteItem) — 修正
DynamoDB は、2 つの操作が同じプライマリキーを対象とする BatchWriteItem を拒否します。バッチは同じアイテムに 2 回触れられないので、重複をまとめましょう。
"Expression size has exceeded the maximum allowed size" (4 KB) — 修正
DynamoDB は式文字列を 4 KB に制限します。FilterExpression、ConditionExpression、UpdateExpression がそれを超えると拒否されます。縮小方法を解説します。
"Aggregated size of all range keys has exceeded the size limit" — 修正
DynamoDB のソートキーは 1024 バイト、パーティションキーは 2048 バイトが上限。キー属性値を縮めるか、長い識別子はハッシュ化してから保存しましょう。
"Filter Expression can only contain non-primary key attributes" — 修正
DynamoDB は、パーティションキーやソートキーを参照する FilterExpression を拒否します。キーは KeyConditionExpression に属します — フィルターの外へ移しましょう。
DynamoDB BatchGetItem の100アイテム上限 — "Too Many Items" の修正
BatchGetItem は 1 回の呼び出しで最大 100 アイテム(かつ 16 MB)まで。超えると DynamoDB はリクエスト全体を拒否します。制限と、チャンク分割のループ。
"Too many items requested for the BatchWriteItem call" — 修正
BatchWriteItem は 1 回の呼び出しで最大 25 件の put/delete アクションまで。超えると DynamoDB は ValidationException でリクエスト全体を拒否します。
DynamoDB "Can Not Use Both Expression and Non-Expression Parameters" — 修正
DynamoDB は、KeyConditions のようなレガシーパラメータと KeyConditionExpression を混ぜたリクエストを拒否します。レガシー側を削除して式だけを使いましょう。
"Local secondary indexes must be specified at table creation" — 修正
ローカルセカンダリインデックスはテーブル作成時にしか定義できず、後から追加することはできません。この制約が存在する理由と、その回避方法を解説します。
DynamoDB TransactionCanceledException — ConditionalCheckFailed の修正
ConditionalCheckFailed でキャンセルされた TransactWriteItems は、あるアイテムの条件が失敗し全体がロールバックされたという意味。その特定方法を解説します。
"Value provided in ExpressionAttributeNames unused in expressions" — 修正
DynamoDB は、どの式からも参照されない ExpressionAttributeNames のエイリアスを宣言したリクエストを拒否します。削除するか、参照し忘れた式を直しましょう。
"Value provided in ExpressionAttributeValues unused in expressions" — 修正
DynamoDB は、どの式も使わない ExpressionAttributeValues のプレースホルダーを宣言したリクエストを拒否します。余った値を削除するか、式を直しましょう。
DynamoDB S3 Import Failed — Invalid Format の修正
DynamoDB の S3 からのインポートは、オブジェクトが宣言した InputFormat や圧縮と一致しないとき、またはアイテムにプライマリキーがないとき失敗します。
"Size of hashkey has exceeded the maximum size limit of 2048 bytes" — 修正
DynamoDB のパーティションキーは最大 2048 バイト、ソートキーは最大 1024 バイトです。いずれかを超えると書き込みは拒否されます — キーの再設計方法を解説します。
DynamoDB GSI "Does Not Project" Attribute — 修正
GSI が返すのはキー属性とその投影だけなので、それ以外を求めるクエリは失敗します。投影かリクエストを変えましょう — その方法を解説します。
"Nesting Levels have exceeded supported limits" — DynamoDB 32 レベルの修正
DynamoDB のマップとリストのネストは 32 レベルまで — 超えると "Nesting Levels have exceeded supported limits" を投げます。32 未満にフラット化しましょう。
"Segment must be less than TotalSegments" — 並列スキャンの修正
並列 Scan は 0 ≤ Segment < TotalSegments を満たし、両方を一緒に渡す必要があります。各ワーカーに 0 から TotalSegments − 1 の異なる Segment を。
DynamoDB "Cannot Specify AttributesToGet When Select Is COUNT" — 修正
DynamoDB は、Select=COUNT と ProjectionExpression や AttributesToGet を併用した Query/Scan を拒否。COUNT は数値だけを返すので、プロジェクションを外しましょう。
DynamoDB Streams "The ARN provided is invalid" — 修正
DynamoDB Streams は不正な形式や /stream/latest のようなプレースホルダー ARN を拒否。DescribeTable が返す LatestStreamArn をそのまま渡しましょう。
"Transaction request cannot include multiple operations on one item" — 修正
DynamoDB は、2 つのアクションが同じプライマリキーを対象とする TransactWriteItems の呼び出しを拒否します。重複をまとめるか、片方を別の書き込みに移しましょう。
DynamoDB TransactWriteItems の100アクション上限 — 修正
TransactWriteItems の上限は 100 アクション。超えると TransactItems の長さで ValidationException が返ります。分割するか、1 回 25 件の BatchWriteItem を。
DynamoDB TTL Attribute Must Be a Number — 原因と修正
DynamoDB の TTL が期限切れにできるのは、TTL 属性が Unix エポック秒の Number であるアイテムだけです。文字列、ミリ秒値、属性の欠落では決して期限切れになりません。
DynamoDB "The expression can not be empty" — 修正
DynamoDB は、式パラメータを空文字列として渡すと拒否します。送るものがないときは FilterExpression や UpdateExpression を丸ごと省略しましょう。
"ExpressionAttributeNames contains invalid key: Syntax error" — 修正
DynamoDB は、プレースホルダーキーが `#name` 構文を破る ExpressionAttributeNames マップを拒否します。命名ルールと、本当の属性名を書く場所を解説します。
"Two document paths overlap with each other" (DynamoDB) — 修正
DynamoDB は、親のパスとその内側にネストしたパスの両方を設定する UpdateExpression を拒否します。子を親にまとめるか、2 回の更新に分けましょう。
"The document path provided in the update expression is invalid" — 修正
ドキュメントパスが無効なのは、ネストした属性の親が存在しないか、マップではないためです。DynamoDB が自動で作ることはないので、先に親を作成しましょう。
"An operand in the update expression has an incorrect data type" — 修正
更新オペランドの型が格納された属性と一致しません — 非数値への ADD、非リストへの list_append、一致しないセット型などです。アクションごとの直し方を解説します。
DynamoDB IdempotentParameterMismatchException — 原因と修正
TransactWriteItems は、10 分間の冪等性ウィンドウ内で ClientRequestToken を異なるペイロードで再利用したリトライを拒否します。その直し方を解説します。
"Consistent reads are not supported on global secondary indexes" — 修正
ConsistentRead を true にした GSI クエリは ValidationException になります。GSI は結果整合性の読み込みのみ。フラグを外すか、ベーステーブルを読みましょう。
DynamoDB DuplicateItemException (PartiQL INSERT) — 原因と修正
PartiQL の INSERT は、プライマリキーがすでに存在すると DuplicateItemException で失敗します。PutItem と違って上書きしないため、UPDATE か PutItem を使いましょう。
"Unexpected from source" (DynamoDB PartiQL) — 修正
PartiQL は、ダッシュなど特殊文字を含むテーブル名が FROM でダブルクォートされていないと "Unexpected from source" を投げます。クォート 1 組で解決します。
boto3 "Parameter validation failed" (ParamValidationError) — 修正
botocore は、リクエストが DynamoDB に届く前に ParamValidationError を投げます — 多くは client と resource の引数型の取り違え。呼び出し前に型を確認しましょう。
"The provided starting key is invalid" (DynamoDB) — 修正
DynamoDB は、ページング中のテーブルやインデックスのキースキーマと合わない ExclusiveStartKey を拒否します。LastEvaluatedKey をそのまま返しましょう。
スループットとスロットリングのエラー (11)
DynamoDB ProvisionedThroughputExceededException — 原因と修正
ProvisionedThroughputExceededException は読み書きがテーブルや GSI のプロビジョニング済みキャパシティ超過の意味。消費量を確認し、上限引き上げかホットキー対策を。
DynamoDB ThrottlingException — 原因と修正
ThrottlingException はリクエストレートの制限超過 — 多くは CreateTable などコントロールプレーン呼び出しです。指数バックオフで再試行し、頻度を下げましょう。
DynamoDB ItemCollectionSizeLimitExceededException — 原因と修正
このエラーはローカルセカンダリインデックスを持つテーブルだけで発生 — アイテムコレクション(1 つのパーティションキーを共有する全アイテム)が 10 GB を超えました。
DynamoDB RequestLimitExceeded — 原因と修正
RequestLimitExceeded はアカウントレベルのレート制限 — オンデマンドの既定は毎秒 40,000 読み書きリクエストユニット。Service Quotas で引き上げましょう。
DynamoDB TransactionConflictException — 原因と修正
TransactionConflictException は、別のトランザクションが同じアイテムに触れている最中という意味。一時的なので、バックオフで再試行し、トランザクションは小さく。
"Provisioned throughput decreases are limited within a given day" — 修正
DynamoDB は、UTC 日ごとにテーブルのプロビジョンドキャパシティを下げられる回数を制限します。クォータの計算と、UpdateTable エラーの回避方法を解説します。
DynamoDB On-Demand Throughput Exceeded — 原因と修正
オンデマンドでもスロットリングは起きる — 設定した最大スループット、直前ピークの 2 倍超の急増、テーブルクォータが原因。最大スループットかクォータの引き上げを。
DynamoDB Throttled Despite Capacity — Hot Partition の修正
各物理パーティションの上限は 3,000 RCU と 1,000 WCU のため、テーブルに余裕があっても DynamoDB は 1 つのホットパーティションキーをスロットリングします。
DynamoDB TransactionInProgressException — 原因と修正
TransactWriteItems のリトライが、まだ実行中の試行と同じ ClientRequestToken を再利用しました。バックオフ付きで再試行し、タイムアウトは 5 秒超に調整を。
DynamoDB InternalServerError (HTTP 500) — 対処法
DynamoDB からの HTTP 500 は一時的なサービス側の障害で、再試行しても安全です — ただし失敗した書き込みが適用済みの可能性はあります。リトライの扱い方を解説します。
DynamoDB ReplicatedWriteConflictException — 原因と修正
マルチリージョンで強い整合性のグローバルテーブルでは、別リージョンが同じアイテムを変更中だと書き込みが拒否されます。競合が収まればバックオフで再試行できます。
テーブルとリソースのエラー (19)
DynamoDB ResourceNotFoundException — 原因と修正
ResourceNotFoundException は、呼び出し先のリージョンとアカウントにそのテーブルやインデックスが存在しない意味。名前、リージョン、認証情報を確認しましょう。
DynamoDB ResourceInUseException ("Table already exists") — 修正
ResourceInUseException は、テーブルが既に存在するか、まだ CREATING・UPDATING・DELETING の途中という意味。操作前に DescribeTable でステータスを確認しましょう。
DynamoDB LimitExceededException — 原因と修正
LimitExceededException は、CreateTable・UpdateTable・DeleteTable の同時実行過多かアカウント制限到達の意味。呼び出しを直列化し、クォータ内に収めましょう。
"The table does not have the specified index" — 修正
渡した IndexName がそのテーブルに存在しない、スペルミス、またはまだ GSI が ACTIVE でないため、DynamoDB が呼び出しを拒否しました。確認と修正の方法を解説します。
DynamoDB BackupNotFoundException — 原因と修正
DynamoDB BackupNotFoundException は、渡した BackupArn に一致するバックアップがない意味。多くは誤った ARN、削除/期限切れのバックアップ、誤ったリージョン。
DynamoDB ReplicaNotFoundException — 原因と修正
ReplicaNotFoundException は、更新対象のリージョンレプリカがグローバルテーブルにないという意味 — 誤ったリージョン、削除済みレプリカ、または競合が原因です。
"Attempting to modify a GSI that is being created" — 修正
DynamoDB は、グローバルセカンダリインデックスの構築中は構造変更をブロックします。IndexStatus が ACTIVE になるのを待つか、変更を順番に行いましょう。
DynamoDB ExportTableToPointInTime — PITR 無効エラーの修正
ExportTableToPointInTime はソーステーブルの PITR 有効化が必須。無効だと PointInTimeRecoveryUnavailableException を投げます。コマンド 1 つの修正。
DynamoDB Global Table Version Mismatch — 原因と修正
グローバルテーブルの作成は、レプリカが揃わないときに失敗します — 空でないテーブル、一致しないキースキーマや GSI、2017 と 2019 の API バージョンの混在。
DynamoDB LSI Item Collection 10 GB Limit — 原因と修正
ローカルセカンダリインデックス付きテーブルは各アイテムコレクションが 10 GB 上限 — 超えると書き込みが失敗。ItemCollectionMetrics を監視して再シャーディングを。
DynamoDB Cannot Access Stream — Stream Not Enabled の修正
コンシューマーが DynamoDB Streams 無効のテーブルのストリームを読んだか、古い ARN を使いました。Streams を有効にし、現在の LatestStreamArn を指しましょう。
DynamoDB TableAlreadyExistsException / "Table already exists" — 修正
復元は TableAlreadyExistsException を、CreateTable と ImportTable は ResourceInUseException を返します。名前が使用中なので、別名を選びましょう。
DynamoDB Streams ExpiredIteratorException — 原因と修正
DynamoDB Streams のシャードイテレーターは 15 分間有効。それ以降に使うと GetRecords が ExpiredIteratorException を投げます。データを失わず再開する方法。
DynamoDB Streams TrimmedDataAccessException — 原因と修正
ストリームレコードの保持は 24 時間。それより古いチェックポイントは TrimmedDataAccessException を投げます。TRIM_HORIZON から再開し、テーブルと突き合わせを。
DynamoDB BackupInUseException — 原因と修正
DynamoDB BackupInUseException は、同じテーブルに対する別のバックアップ操作がまだ実行中であることを意味します。完了を待ってから呼び出しを再試行してください。
DynamoDB InvalidRestoreTimeException — 原因と修正
InvalidRestoreTimeException は、RestoreDateTime がテーブルの PITR ウィンドウ(最大 35 日)の外にある意味。ウィンドウ内の復元時刻を選びましょう。
DynamoDB PointInTimeRecoveryUnavailableException — 修正
PITR が有効だったことのないテーブルでポイントインタイム復元を試みました。今後に備えて継続バックアップを有効にし、今日のデータにはオンデマンドバックアップを。
DynamoDB GlobalTableNotFoundException — 原因と修正
GlobalTableNotFoundException は、レガシーのグローバルテーブル API からテーブルが見えない意味 — 多くは UpdateTable 管理の 2019.11.21 版グローバルテーブル。
DynamoDB ReplicaAlreadyExistsException — 原因と修正
すでにグローバルテーブルにあるレプリカリージョンの追加を DynamoDB に求めました。まずレプリケーショングループを記述し、レプリカ管理を冪等にしましょう。
認証と設定のエラー (13)
"not authorized to perform dynamodb:..." — AccessDeniedException の修正
DynamoDB の AccessDeniedException は、IAM アイデンティティにメッセージが示すアクションの権限がないという意味。読み方と IAM ポリシーの直し方を解説します。
"ConfigError: Missing region in config" — DynamoDB の修正
AWS SDK が、DynamoDB リクエストをどのリージョンに送るか判別できませんでした。クライアント、AWS_REGION、または AWS 設定で指定しましょう — 各選択肢を解説します。
"The security token included in the request is invalid" — DynamoDB の修正
UnrecognizedClientException は AWS 認証情報の誤り・期限切れ・未読込の意味。アクセスキー、セッショントークンの期限、SDK が読んだプロファイルを確認しましょう。
DynamoDB IncompleteSignatureException — 原因と修正
IncompleteSignatureException は SigV4 署名が不正な形式だったという意味 — 多くは自前実装の署名か、Authorization ヘッダーを書き換えたプロキシが原因です。
"The security token included in the request is expired" — DynamoDB の修正
ExpiredTokenException は、一時的な STS・SSO・引き受けロールの認証情報の期限切れという意味。aws sso login を再実行し、古い AWS_SESSION_TOKEN をクリアしましょう。
"Unable to locate credentials" (boto3 / DynamoDB) — 修正
boto3 は、プロバイダーチェーンのどこからも AWS 認証情報が出てこないとき NoCredentialsError を投げます — 環境変数もプロファイルもインスタンスロールもない状態。
"The request signature we calculated does not match" — 修正
SigV4 署名に失敗すると DynamoDB は SignatureDoesNotMatch ではなく InvalidSignatureException を返します。多くはシークレットキーの誤りか、マシンの時計のずれ。
"Credential should be scoped to a valid region" — DynamoDB の修正
この SigV4 エラーは、認証情報スコープのリージョンが実際に呼び出したリージョンと不一致という意味です。クライアントとエンドポイントのリージョンを揃える方法。
"InvalidSignatureException: Signature expired" — DynamoDB の修正
DynamoDB は、署名タイムスタンプが AWS サーバー時刻から 5 分以上ずれたリクエストを拒否します。ほぼ必ずクライアントの時計ずれ — 時刻を同期して再署名しましょう。
"Missing Authentication Token" — DynamoDB エラーの修正
MissingAuthenticationTokenException は、誤ったエンドポイント URL やパス、署名されなかったリクエストの意味。URL、パス、SigV4 署名の有無を確認しましょう。
"Could not load credentials from any providers" (DynamoDB) — 修正
AWS SDK for JavaScript v3 は、認証情報チェーン全体が空のとき CredentialsProviderError を投げます。チェーンの解決順序と、それぞれの直し方。
"The SSO session associated with this profile has expired" — 修正
IAM Identity Center のトークン失効は AWS CLI と SDK の DynamoDB 呼び出しを壊します。aws sso login を実行し、足りなければ古い ~/.aws/sso/cache を削除しましょう。
"The config profile could not be found" — AWS CLI と boto3 の修正
AWS CLI と boto3 は、指定したプロファイルが ~/.aws/config に存在しないとき ProfileNotFound を発生させます。よくある 3 つの原因と、それぞれの直し方。
DynamoDB Local とセットアップのエラー (8)
"Unable to start DynamoDB Local process" — 修正
DynamoDB Local の起動失敗 — 多くは Java ランタイムの欠落/非互換、使用中のポート、不正なインストールパスが原因。それぞれの確認と直し方を解説します。
"Could not connect to DynamoDB Local" (ECONNREFUSED) — 修正
DynamoDB Local への ECONNREFUSED は、何も待ち受けていないという意味。多くはエミュレータ未起動、誤ったポート、SDK が本物の AWS を向いているのが原因です。
"Could not connect to the endpoint URL" (DynamoDB) — 修正
botocore は DynamoDB に到達できないと EndpointConnectionError を投げます。多くは誤ったエンドポイント URL、DynamoDB Local の未起動、誤ったリージョンです。
DynamoDB Local "Address already in use" (ポート 8000) — 修正
DynamoDB Local は、ポート 8000 が既に使われていると java.net.BindException を投げます。プロセスの特定、ポートの解放、別ポートでの起動方法を解説します。
DynamoDB Local "Failed to load native library sqlite4java" — 修正
DynamoDB Local は起動時に sqlite4java の UnsatisfiedLinkError で終了します。誤った java.library.path、または Apple Silicon のアーキテクチャ不一致が原因です。
"Unable to execute HTTP request" (DynamoDB, Java SDK) — 修正
AWS SDK for Java は、エンドポイント到達不可のとき Unable to execute HTTP request で失敗。DynamoDB Local のダウン、誤ったポート、Docker ネットワークが原因です。
"Cannot do operations on a non-existent table" (DynamoDB Local) — 修正
DynamoDB Local は認証情報とリージョンの組ごとに別のデータベースを持つため、作成したテーブルが見えないことがあります。-sharedDb で起動すれば 1 つを共有できます。
DynamoDB Local UnsupportedClassVersionError — 修正
DynamoDB Local 2.6.0 以降は Java 17 以降が必要。古い JRE では JVM がロードを拒否します。最新の JDK を入れるか、Docker イメージを実行しましょう。
検証方法
ドキュメントは実装を言い換えたものであり、その言い換えは次第にずれていきます。これらのページで引用しているエラーメッセージは、すべて失敗する呼び出しを実際の AWS DynamoDB サービスに対して実行し、返ってきた内容を一字一句そのまま記録したものです — AWS のドキュメントから書き写したものではありません。
DynamoDB Local ではありません。エミュレータは手軽ですが、サービスと同じ文言でエラーを返すことを AWS は保証していません — 実際に確認したところ、メッセージの半数以上が異なっていました。その違いを知る価値がある場合は、ページに両方を掲載しています。
手を加えているのは、エラーそのものではなくリクエストを表す部分だけです。つまりテーブル名と、サービスがそのまま返してくるペイロードの写しです。サービスが一度も返したことのない文字列をページが引用していれば、テストがビルドを失敗させます — このテストがあるのは、私たち自身のページが、誰もコードを実行しないまま何か月も実在しないメッセージを引用していたからです。
14 種類の例外にわたる 58 件のメッセージ: 55 件は実サービスに対して取得したもの、2 件はリクエスト送信前に SDK が拒否したもの、1 件は DynamoDB Local 自身の文言そのものを扱ったものです。6 件には、同じ失敗をエミュレータがどう表現するかの注記が付いています。
- 実サービス
- Amazon DynamoDB (live service, us-east-1)
- エミュレータ(比較用)
- DynamoDB Local (amazon/dynamodb-local)
- JavaScript SDK
- @aws-sdk/client-dynamodb 3.1096.0
- Python SDK
- boto3 1.43.81 on Python 3.14.7
- Node.js
- v24.20.0