DynamoDB テーブルをある AWS アカウントから別のアカウントに移行するにはどうすればよいですか?

最終更新日: 2020 年 9 月 24 日

クロスアカウントの DynamoDB テーブルの移行を実行する方法を教えてください。

簡単な説明

AWS Data Pipeline または Amazon EMR を使用して、DynamoDB テーブルを別の AWS アカウントに移動できます。Data Pipeline は最も迅速で簡単な方法ですが、カスタマイズのオプションは少なくなります。Amazon EMR は、プロセスをより詳細に制御したい技術的な専門知識を持つユーザーにより適しています。

解決方法

Data Pipeline

Data Pipeline を使用して DynamoDB テーブルを別のアカウントに移動するには、「Data Pipeline を使用して DynamoDB テーブルを別のアカウント内の S3 バケットにバックアップする方法を教えてください。」を参照してください。

注: 送信先アカウントは、Amazon Simple Storage Service (Amazon S3) の DynamoDB データにアクセスできません。データを操作するには、DynamoDB テーブルに復元します。

Amazon EMR

Amazon EMR を使用して DynamoDB テーブルを移行する場合、ユースケースに応じて 2 つのオプションがあります。

  • 移行中にダウンタイムを許容できる場合は、ソーステーブルへの書き込み操作を停止して、ターゲットテーブルがソーステーブルと同期することを確認してください。
  • ダウンタイムを許容できない場合は、移行中に発生するすべてのトランザクションをステージングテーブルに格納する必要があります。元のテーブルが他の AWS アカウントに移行された後、新しいトランザクションをステージングテーブルからターゲットテーブルにプッシュします。

注: Amazon EMR を使用してテーブルを移行する所要時間は、ネットワークパフォーマンス、DynamoDB テーブルのプロビジョンドスループット、テーブルに格納されているデータ量などによって大幅に異なる場合があります。

Amazon EMR を使用して DynamoDB テーブルを移行するには

  1. 送信先アカウントとソースアカウントの両方で EMR クラスターを起動します。[ソフトウェア設定] セクションで、Apache Hive を含むオプションを選択してください。
    注: Amazon EMR クラスターをプライベートサブネット内で起動することは、セキュリティのベストプラクティスです。プライベートサブネットには、Amazon S3 VPC エンドポイントと DynamoDB へのルートが必要です。詳細については、「プライベートサブネット」を参照してください。クラスターがインターネットにアクセスする必要がある場合は、パブリックサブネットにある NAT ゲートウェイを使用します。詳細については「パブリックサブネットとプライベートサブネットを持つ VPC (NAT)」を参照してください。
  2. 両方のアカウントの EMR_EC2_DefaultRole AWS Identity and Access Management (IAM) ロールに、送信先アカウントの S3 バケットに書き込むためのアクセス許可があることを確認してください。詳細については、「Configure IAM Service Roles for Amazon EMR Permissions to AWS Services and Resources (AWS のサービスおよびリソースに対する Amazon EMR のアクセス権限の IAM サービスロールの設定)」を参照してください。
  3. ソースアカウントで、SSH を使用してマスターノードに接続します
  4. ソースアカウントで、Hive コマンドを使用して送信先アカウントの S3 バケットに DynamoDB テーブルデータをエクスポートします。
  5. 送信先アカウントで、Amazon S3 のデータを新しい DynamoDB テーブルにインポートします
  6. ステージングテーブルを使用して移行中に発生した書き込みをキャプチャする場合は、ステージングテーブルで手順 4 と 5 を繰り返します。