DynamoDB テーブルを Amazon S3 にバックアップするにはどうすればよいですか?

最終更新日: 2020 年 12 月 17 日

Amazon Simple Storage Service (Amazon S3) を使用して Amazon DynamoDB テーブルをバックアップする方法を教えてください。

簡単な説明

DynamoDB には、2 つのバックアップ方法が組み込まれています。

これらどちらの方法も、Amazon S3 を使用します。ただし、これらのバックアップに使用される S3 バケットにはアクセスできません。DynamoDB の S3 へのエクスポート機能は、ローカルでダウンロードしたり、別の AWS のサービスで使用したりできるバックアップを作成する最も簡単な方法です。さらにカスタマイズが必要な場合は、代わりに AWS Data Pipeline、Amazon EMR、または AWS Glue を使用してください。

解決方法

DynamoDB の S3 へのエクスポート機能

S3 へのエクスポート機能の使用方法の例については、コードの記述を必要とせずに、Amazon DynamoDB テーブルデータを Amazon S3 のデータレイクにエクスポートするをご参照ください。

  • メリット: これは最も簡単な方法です。この機能により、カスタムアプリケーションの構築やコードの記述を行わなくても、AWS リージョンおよびアカウント間でデータをエクスポートできます。エクスポートは、読み取りキャパシティーや本番テーブルの可用性には影響しません。また、データを定期的にバックアップするように自動エクスポートを設定することもできます。
  • デメリット: この機能は、DynamoDB JSON または Amazon Ion 形式でのみテーブルデータをエクスポートします。テーブルデータを別の形式でエクスポートする場合は、代わりに次のいずれかの方法を使用します。

Data Pipeline

AWS Data Pipeline を使用して、同じアカウントまたは別のアカウントにある S3 バケットに対し、テーブルをエクスポートできます。詳細については、AWS Data Pipeline を使用した DynamoDB データのインポートとエクスポートをご参照ください。

  • メリット: Data Pipeline が Amazon EMR を使用してバックアップを自動作成し、スクリプトを実行します。このタスクを実行するために、Apache Hive または Apache Spark に関する知識は必要ありません。
  • デメリット: この方法は、他の方法と比べカスタマイズ性がありません。Amazon S3 への継続的なバックアップを作成する場合は、他の方法のいずれかを選択します。また、この方法は、他の AWS のサービスでバックアップを実行する場合における最良の方法ではありません。

Amazon EMR

S3 バケットへのデータのエクスポートに、Hive を使用します。詳細については、DynamoDB のデータのエクスポートをご参照ください。または、オープンソースの emr-dynamodb-connector を使用すると、Spark または Hive で独自のカスタムバックアップ方法を管理できます。

  • メリット: アクティブな Amazon EMR ユーザーで、Hive または Spark に慣れている場合、これらの方法は Data Pipeline および S3 へのエクスポートの方法よりも多くの制御を提供します。
  • デメリット: Amazon EMR の初心者にとっては、これらの方法はベストプラクティスではありません。Amazon EMR を使用していないものの、継続的かつカスタマイズ可能なソリューションが必要な場合は、AWS Glue の方法がベストプラクティスとなります。AWS Glue は知識を必要とせずに利用可能です。

AWS Glue

テーブルの Amazon S3 へのコピーに、AWS Glue を使用します。詳細については、AWS Step Functions と AWS Glue を使用して Amazon DynamoDB テーブルを Amazon S3 にエクスポートする方法をご参照ください。

  • メリット: Amazon EMR を使用しない継続的なカスタマイズ可能なソリューションが必要な場合は、これがベストプラクティスです。
  • デメリット: AWS Glue に慣れていないユーザーの場合、やや難しい方法ではあります。しかし、Amazon EMR の方法ほど困難ではありません。この方法は、通常、Data Pipeline メソッドより料金がかかります。

ここで示したオプションのいずれによっても、必要な柔軟性が実現できない場合は、DynamoDB API を使用して独自のソリューションを作成してください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?