

# S3 へのエクスポートと S3 からのインポートを使用してテーブルを移行する
<a name="bp-migrating-table-between-accounts-s3"></a>

**前提条件**
+ S3 へのエクスポートを実行するには、テーブルのポイントインタイムリカバリ (PITR) を有効にする必要があります。詳細については、「[DynamoDB でポイントインタイムリカバリを有効にする](PointInTimeRecovery_Howitworks.md)」を参照してください。
+ エクスポートを実行するための有効な IAM アクセス許可。詳細については、「[DynamoDB でテーブルのエクスポートをリクエストする](S3DataExport_Requesting.md)」を参照してください。
+ インポートを実行するための有効な IAM アクセス許可。詳細については、「[DynamoDB でテーブルのインポートをリクエストする](S3DataImport.Requesting.md)」を参照してください。

**料金情報**

AWS では、PITR の料金 (テーブルのサイズと PITR が有効になっている期間に基づく) が発生します。エクスポート以外の PITR が必要ない場合は、エクスポートが終了した後に無効にできます。AWS では、S3 に対するリクエスト、エクスポートされたデータの S3 への保存とインポート (インポートされたデータの非圧縮サイズに基づく) の費用も発生します。

DynamoDB の料金の詳細については、「[DynamoDB の料金表](https://aws.amazon.com/dynamodb/pricing/)」を参照してください。

**注記**  
 S3 から DynamoDB にインポートする際は、オブジェクトのサイズと数に制限があります。詳細については、「[インポートクォータ](S3DataImport.Validation.md#S3DataImport.Validation.limits)」を参照してください。

## Amazon S3 へのテーブルのエクスポートのリクエスト
<a name="bp-migrating-table-between-accounts-s3-table-export"></a>

1. AWS マネジメントコンソールにサインインして、DynamoDB コンソールを開きます。

1. コンソールの左側のナビゲーションペインで、**[S3 へのエクスポート]** を選択します。

1. コピー元テーブルとエクスポート先の S3 バケットを選択します。`s3://bucketname/prefix` の形式で送信先アカウントバケットの URL を入力します。ここで、`/prefix` は、エクスポート先のバケットを整理するのに役立つオプションのフォルダです。

1. **[フルエクスポート]** を選択します。フルエクスポートでは、指定した時点のテーブルのフルテーブルスナップショットが出力されます。

   1. **[現在の時刻]** を選択して、最新のフルテーブルスナップショットをエクスポートします。

   1. **[エクスポートされたファイル形式]** で、[DynamoDB JSON] または [Amazon Ion] のいずれかを選択します。デフォルトのオプションは DynamoDB JSON です。

1. [**エクスポート**] ボタンをクリックして、エクスポートを開始します。

1. サイズの小さなテーブルのエクスポートは数分で完了しますが、テラバイトサイズのテーブルには 1 時間以上かかる場合があります。

## Amazon S3 からのテーブルのインポートのリクエスト
<a name="bp-migrating-table-between-accounts-s3-table-import"></a>

1. AWS マネジメントコンソールにサインインして、DynamoDB コンソールを開きます。

1. コンソールの左側のナビゲーションペインで、[**Import from S3**] (S3 からインポート) を選択します。

1. 表示されたページで、[**Import from S3**] (S3 からインポート) を選択します。

1. Amazon S3 のソース URL を入力します。また、**[S3 を参照]** ボタンを使用して検索することもできます。予想されるパスの形式は `s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/data/` です。

1. 自分が [S3 バケット所有] であることを確認します。

1. **[ファイル圧縮をインポート]** で、エクスポートに一致する **[GZIP]** を選択します。

1. **[インポートファイルのフォーマット]** で、エクスポートに一致する **[DynamoDB JSON]** を選択します。

1. **[次へ]** を選択してください。**[テーブルの詳細を指定]** で、データを保存するために作成される新しいテーブルのオプションを選択します。

1. **[次へ]** を選択してください。**[テーブルの設定を構成]** で、必要に応じて追加のテーブル設定をカスタマイズします。

1. [**次へ**] をもう一度選択してインポートオプションを確認し、[**インポート**] を選択してインポートタスクを開始します。新しいテーブルが **[インポート中]** というステータスで **[S3 からのインポート]** の下に表示されます。この間はテーブルにアクセスできません。サイズの小さなインポートは数分で完了しますが、テラバイトサイズのインポートは 1 時間以上かかる場合があります。

1. インポートが完了すると、ステータスが **[アクティブ]** と表示され、テーブルの使用を開始できます。

## 移行中にテーブルを同期する
<a name="bp-migrating-table-between-accounts-s3-table-sync"></a>

移行中にソーステーブルの書き込み操作を一時的に停止できる場合、移行の直後のソースと出力は一致します。書き込み操作を一時的に停止できない場合、移行後のターゲットテーブルは、通常ソースより少し古くなります。ターゲットテーブルとソーステーブルを同期するには、ストリーミング (DynamoDB Streams または Kinesis Data Streams for DynamoDB) を使用して、バックアップまたはエクスポート以降にソーステーブルで発生した書き込みを再生します。

ストリームレコードの読み取りを、ソーステーブルを S3 にエクスポートしたタイムスタンプの前に開始する必要があります。例えば、S3 へのエクスポートが午後 2 時に発生し、ターゲットテーブルへのインポートが午後 11 時に終了した場合、DynamoDB ストリームの読み取りを午後 1 時 58 分に開始する必要があります。変更データキャプチャテーブルのストリーミングオプションは、各ストリーミングモデルの機能をまとめたものです。

Lambda で DynamoDB Streams を使用すると、ソースとターゲットの DynamoDB テーブル間でデータを同期するための効率的なアプローチが提供されます。Lambda 関数を使用して、ターゲットテーブルの各書き込みを再生できます。

**注記**  
項目は DynamoDB Streams に 24 時間保持されるため、この時間内にバックアップと復元を完了するか、エクスポートとインポートを行う必要があります。