S3 へのエクスポートと S3 からのインポートを使用してテーブルを移行する
前提条件
-
S3 へのエクスポートを実行するには、テーブルのポイントインタイムリカバリ (PITR) を有効にする必要があります。詳細については、「DynamoDB でポイントインタイムリカバリを有効にする」を参照してください。
-
エクスポートを実行するための有効な IAM アクセス許可。詳細については、「DynamoDB でテーブルのエクスポートをリクエストする」を参照してください。
-
インポートを実行するための有効な IAM アクセス許可。詳細については、「DynamoDB でテーブルのインポートをリクエストする」を参照してください。
料金情報
AWS では、PITR の料金 (テーブルのサイズと PITR が有効になっている期間に基づく) が発生します。エクスポート以外の PITR が必要ない場合は、エクスポートが終了した後に無効にできます。AWS では、S3 に対するリクエスト、エクスポートされたデータの S3 への保存とインポート (インポートされたデータの非圧縮サイズに基づく) の費用も発生します。
DynamoDB の料金の詳細については、「DynamoDB の料金表
注記
S3 から DynamoDB にインポートする際は、オブジェクトのサイズと数に制限があります。詳細については、「インポートクォータ」を参照してください。
ステップ 1: Amazon S3 へのテーブルのエクスポートをリクエストする
-
AWS マネジメントコンソールにサインインして、DynamoDB コンソールを開きます。
-
コンソールの左側のナビゲーションペインで、[S3 へのエクスポート] を選択します。
-
ソーステーブルと送信先の S3 バケットを選択します。
s3://bucketname/prefix
形式で送信先アカウントバケットの URL を入力します。プレフィックスは、送信先のバケットを整理しやすくするためのオプションのフォルダです。 -
[フルエクスポート] を選択します。フルエクスポートでは、指定した時点のテーブルのフルテーブルスナップショットが出力されます。
-
[現在の時刻] を選択して、最新のフルテーブルスナップショットをエクスポートします。
-
[エクスポートされたファイル形式] で、[DynamoDB JSON] または [Amazon Ion] のいずれかを選択します。デフォルトのオプションは DynamoDB JSON です。
-
-
[エクスポート] ボタンをクリックして、エクスポートを開始します。
-
サイズの小さなテーブルのエクスポートは数分で完了しますが、テラバイトサイズのテーブルには 1 時間以上かかる場合があります。
ステップ 2: Amazon S3 からのテーブルのインポートをリクエストする
-
AWS マネジメントコンソールにサインインして、DynamoDB コンソールを開きます。
-
コンソールの左側のナビゲーションペインで、[Import from S3] (S3 からインポート) を選択します。
-
表示されたページで、[Import from S3] (S3 からインポート) を選択します。
-
Amazon S3 のソース URL を入力します。また、[S3 を参照] ボタンを使用して検索することもできます:
s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/Data/
-
自分が [S3 バケット所有] であることを確認します。
-
[ファイル圧縮をインポート] で、エクスポートに一致する [GZIP] を選択します。
-
[インポートファイルのフォーマット] で、エクスポートに一致する [DynamoDB JSON] を選択します。
-
[次へ] ボタンを選択し、データを保存するために作成される新しいテーブルのオプションを選択します。
-
[次へ] をもう一度選択してインポートオプションを確認し、[インポート] を選択してインポートタスクを開始します。新しいテーブルは、[テーブル] に [作成中] のステータスで表示されます。この時点で、テーブルにアクセスすることはできません。
-
インポートが完了すると、ステータスが [アクティブ] と表示され、テーブルの使用を開始できます。
-
サイズの小さなインポートは数分で完了しますが、テラバイトサイズのインポートは 1 時間以上かかる場合があります。
移行中にテーブルを同期する
移行中にソーステーブルの書き込み操作を一時的に停止できる場合、移行の直後のソースと出力は一致します。書き込み操作を一時的に停止できない場合、移行後のターゲットテーブルは、通常ソースより少し古くなります。ターゲットテーブルとソーステーブルを同期するには、ストリーミング (DynamoDB Streams または Kinesis Data Streams for DynamoDB) を使用して、バックアップまたはエクスポート以降にソーステーブルで発生した書き込みを再生します。
ストリームレコードの読み取りを、ソーステーブルを S3 にエクスポートしたタイムスタンプの前に開始する必要があります。例えば、S3 へのエクスポートが午後 2 時に発生し、ターゲットテーブルへのインポートが午後 11 時に終了した場合、DynamoDB ストリームの読み取りを午後 1 時 58 分に開始する必要があります。変更データキャプチャテーブルのストリーミングオプションは、各ストリーミングモデルの機能をまとめたものです。
Lambda で DynamoDB Streams を使用すると、ソースとターゲットの DynamoDB テーブル間でデータを同期するための効率的なアプローチが提供されます。Lambda 関数を使用して、ターゲットテーブルの各書き込みを再生できます。
注記
項目は DynamoDB Streams に 24 時間保持されるため、この時間内にバックアップと復元を完了するか、エクスポートとインポートを行う必要があります。