DynamoDB ResourceNotFoundException

TL;DR — クライアントが指しているリージョン/アカウントで、指定したテーブル(またはインデックス)を DynamoDB が見つけられません。テーブル名のタイプミス、誤った region、または別のアカウントの認証情報を確認してください。テーブルが本当に消えたということはほとんどありません。

意味

ResourceNotFoundException: Requested resource not found: Table: <table-name> not found

# on DynamoDB Local:
ResourceNotFoundException: Cannot do operations on a non-existent table

1つ目は実サービスが返すもので、探しに行ったテーブル名が入ります。2つ目は DynamoDB Local が返すもので、これが見えたら AWS ではなくエミュレータと話している確かな印です。いずれにせよ、操作は このクライアントの視点から 存在しないテーブルやインデックスを対象にしました。テーブル名 + AWS リージョン + アカウント(認証情報)の組み合わせです。この3つすべてが揃う必要があります。DynamoDB はこれを HTTP ステータス 400 で返し、リトライ不可です。名前、リージョン、または認証情報を修正するまで(あるいはテーブルの作成が完了するまで: CREATING 状態の早すぎるテーブルもこのエラーを返すことがあります)同じリクエストは失敗し続けます。

発生する理由

  • リージョンの不一致 — テーブルは us-east-1 にあるが、クライアントがデフォルトで us-west-2(またはリージョンが未設定で、SDK が別のデフォルトを選ぶ)。
  • 誤ったテーブル名 — タイプミス、誤った大文字小文字(ウェブサービスでは名前は大文字小文字を区別)、または環境プレフィックス付きの名前(prod-Orders vs Orders)。
  • 誤ったアカウント — 認証情報が、テーブルを所有するアカウントとは別の AWS アカウントに解決している。
  • 存在しない、またはまだ ACTIVE でないインデックスを照会(GSI がまだバックフィル中)— API リファレンスは「存在しないテーブルまたはインデックス」で「ステータスが ACTIVE でないかもしれない」と指摘しています。
  • テーブルが本当に削除された、または空で始まる DynamoDB Local を指している。

修正方法

  1. リージョンを明示的に固定し、テーブルが存在する場所と一致することを確認します。
  2. 正確なテーブル名を検証します — そのリージョンのテーブルを一覧表示し(aws dynamodb list-tables --region <r>)、名前をそのままコピーします。
  3. 認証情報が 所有アカウントに解決することを確認します(aws sts get-caller-identity)。
  4. 呼び出しが IndexName を使う場合、インデックス名 + ステータスを確認しますDescribeTable → GSI は ACTIVE である必要があります)。

import {DynamoDBClient} from '@aws-sdk/client-dynamodb';

// Pin the region so the client can't silently target the wrong one:
const client = new DynamoDBClient({region: 'us-east-1'});

よくある質問

DynamoDB で ResourceNotFoundException を修正するには? テーブル名、AWS リージョン、アカウント(認証情報)がすべて揃うことを確認します: リージョンをクライアントに明示的に固定し、そのリージョンのテーブルを一覧表示して正確な名前を検証し、aws sts get-caller-identity で認証情報が所有アカウントに解決することを確認します。

ResourceNotFoundException はテーブルが削除されたことを意味しますか? めったにありません。通常はクライアントが誤った場所を見ていることを意味します。リージョンの不一致、テーブル名のタイプミスや誤った大文字小文字、または別のアカウントの認証情報です。存在しない、またはまだ ACTIVE でないインデックスを照会したとき、あるいは空で始まる DynamoDB Local を指しているときにも発生します。

DynoTable ワークベンチ

DynoTable は、有効なプロファイルとリージョンのテーブルをサイドバーに一覧します。テーブルが 見当たらないときは、⌘P でプロファイルを確認し、タブのリージョンを見てください — アプリでこのエラーが出る原因として最も多いのが、ここの食い違いです。ListTables が拒否されている 場合や、一覧がテーブルの接頭辞で絞られている場合は、⌘KOpen table by name で 正確なテーブル名を入力できます。 DynamoDB Local が相手なら、エンドポイント http://localhost:8000 と、それに合ったプレースホルダーの 認証情報でプロファイルを追加してください(DynamoDB Local への接続) — Local は、テーブルを作るまで空の状態で始まります。

関連するエラー

出典

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

Console なしで DynamoDB を扱う

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

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