DynamoDB: Table already exists

TL;DR — 操作は対象テーブルを 作成 しようとしていますが、その名前はこのアカウント + リージョンですでに使用済みです。復元(RestoreTableFromBackup / RestoreTableToPointInTime)は TableAlreadyExistsException をスローし、CreateTableImportTable は同じ状況を ResourceInUseException として報告します。新しい対象名を選んでください。復元とインポートは決して既存のテーブルに書き込めません。

意味

TableAlreadyExistsException: A target table with the specified name already exists
ResourceInUseException: Table already exists: my-table

復元とインポート操作は常に 真新しいテーブルを作成 します。ライブのテーブルにマージしたり上書きしたりできません。対象名が同じアカウントとリージョン内の既存のテーブル(その状態が何であれ)に解決される場合、リクエストは前もって失敗します。どの例外が見えるかは API によります: 復元ファミリーは独自の TableAlreadyExistsException を持ち、CreateTableImportTable は総合的な ResourceInUseException を出します。

発生する理由

  • 元の名前にバックアップを復元 — 自然な本能(「テーブルを元に戻す」)が、まだ存在するテーブルと衝突する。
  • インポートや IaC デプロイの再実行 — 再試行された ImportTable、またはスタックの状態外にすでに存在するテーブルを作成しようとする CloudFormation/Terraform/CDK スタック。
  • create-then-retry の競合 — 最初の CreateTable が成功した(またはまだ CREATING)ため、リトライが名前を使用済みと見つける。
  • 環境の衝突 — 2つのステージ/環境がアカウントを共有し、両方がプレフィックスなしの名前を望む。

修正方法

  1. 新しい名前に復元してから切り替えますmy-table-restored として復元し、データを検証し、アプリケーションを向け直します(または古いテーブルを削除し、消えたら元の名前で再度復元します):

    aws dynamodb restore-table-from-backup \
      --target-table-name my-table-restored \
      --backup-arn arn:aws:dynamodb:...:table/my-table/backup/...
  2. テーブルを置き換えるつもりなら、まず既存のものを削除し、削除が完了するまで待ちます。テーブルが DELETING 状態の間、名前は使用済みのままです(そのとき試みた復元は TableInUseException で失敗します。CreateTable 側は ResourceInUseException を参照)。

  3. インポートには、未使用の対象名を選びます。ImportTable は新しいテーブルのみを作成します。既存のテーブルにデータをロードするには、代わりに BatchWriteItem/PutItem で書き込みます。

  4. IaC の再試行には、作成と戦うのではなく、既存のテーブルをスタックの状態にインポート(またはリネーム)します。

  5. 実際に何が存在するか確認します — 同じリージョン/アカウントでの aws dynamodb list-tables が、名前が本当に空いているか決着させます。

切り替え前に復元したテーブルを検証するのは、人々がスキップする安全なステップです。DynoTable デスクトップアプリ は復元されたテーブルと元のテーブルを並べて置くため、スキーマを差分し、アイテムを先にスポットチェックできます。そして復元したテーブルの実行コストを見積もっているなら、DynamoDB 料金計算ツール が両方のキャパシティモードをカバーします。

関連するエラー

References

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

Console なしで DynamoDB を扱う

DynoTable は DynamoDB 向けの高速なデスクトップクライアントです — テーブルを閲覧し、SQL スタイルのクエリを実行し、アイテムをローカルで編集できます。