Amazon Simple Storage Service (Amazon S3) を使用して Amazon DynamoDB テーブルをバックアップしたいです。
簡単な説明
DynamoDB には、次の 2 つのバックアップ方法が組み込まれています。
これらの方法はどちらも、ディザスタリカバリ目的でテーブルをバックアップするのに適しています。ただし、これらの方法では、データ分析や抽出、変換、ロード (ETL) ジョブを含むユースケースにデータを使用することはできません。DynamoDB の S3 へのエクスポート機能は、ローカルにダウンロードしたり、別の AWS サービスで使用したりできるバックアップを作成する最も簡単な方法です。バックアップの作成プロセスをカスタマイズするには、Amazon EMR または AWS Glue を使用できます。
解決策
DynamoDB の S3 へのエクスポート機能
この機能を使用すると、ポイントインタイムリカバリウィンドウ内のいつでも Amazon DynamoDB テーブルから Amazon S3 バケットにデータをエクスポートできます。詳細については、「Amazon S3 への DynamoDB データエクスポート」を参照してください。
この機能の使用方法の例については、「コードを記述せずに Amazon DynamoDB テーブルデータを Amazon S3 のデータレイクにエクスポートする」を参照してください。
S3 へのエクスポート機能を使用すると、次のような他の方法でもデータを使用できます。
- S3 にエクスポートされたデータに対して ETL を実行し、データを DynamoDB にインポートし直す
- 監査用に履歴スナップショットを保存する
- データを他のサービスやアプリケーションと統合する
- DynamoDB データから S3 データレイクを構築し、Amazon Athena、Amazon Redshift、Amazon SageMaker などのさまざまなサービスからのデータを分析する
- DynamoDB のキャパシティに影響を与えずに、Athena または Amazon EMR からデータに対して必要に応じてクエリを実行する
この機能を使用する際には、以下の長所と短所に注意してください。
- 長所: この機能により、カスタムアプリケーションを構築したり、コードを記述したりすることなく、AWS のリージョンやアカウント間でデータをエクスポートできます。エクスポートは、読み取りキャパシティやプロダクションテーブルの可用性には影響しません。
- 短所: この機能は、テーブルデータを DynamoDB JSON 形式または Amazon Ion 形式でのみエクスポートします。S3 バケットを使用してデータをネイティブに再インポートするには、「Amazon S3 からの DynamoDB データのインポート」を参照してください。また、新しいテンプレートを作成するか、AWS Glue、Amazon EMR、または AWS SDK を使用してデータを再インポートすることもできます。
Amazon EMR
Amazon EMR を使用してデータを S3 バケットにエクスポートします。これは、次のいずれかの方法で実行できます。
これらの方法を使用する際には、以下の長所と短所に注意してください。
- 長所: Amazon EMR のアクティブユーザーで、Hive や Spark に慣れている場合は、ネイティブの S3 へのエクスポート機能を使用するよりも、これらの方法の方が設定をより適切に管理できます。この目的には既存のクラスターを使用することもできます。
- **短所:**これらの方法では、EMR クラスターを作成して管理する必要があります。DynamoDBStorageHandler を使用する場合は、Hive または Spark に精通している必要があります。
AWS Glue
AWS Glue を使用してテーブルを Amazon S3 にコピーします。詳細については、「AWS Glue と Amazon DynamoDB エクスポートを使用する」を参照してください。
- 長所: AWS Glue はサーバーレスサービスのため、リソースを作成して管理する必要はありません。DynamoDB に直接書き戻すことができます。データをエクスポートするときに、フィルタリングや変換などのユースケースに合わせてカスタム ETL ロジックを追加できます。CSV、JSON、Parquet、ORC からお好みの形式を選択することもできます。詳細については、「AWS Glue の入力と出力のデータ形式オプション」を参照してください。
- 短所: このオプションを選択する場合は、Spark の使用方法を知っている必要があります。また、AWS Glue ETL ジョブのソースコードも管理する必要があります。詳細については、「"connectionType": "dynamodb"」を参照してください。
これらのオプションで必要な柔軟性が得られない場合は、DynamoDB API を使用して独自のソリューションを作成できます。
関連情報
DynamoDB でのテーブルエクスポートのリクエスト
AWS Step Functions と AWS Glue を使用して Amazon DynamoDB テーブルを Amazon S3 にエクスポートする方法