こんにちは。サービス開発室の武田です。
Amazon DynamoDBにはAmazon S3にテーブルをエクスポートできる機能があります。これまではテーブル全体をエクスポートする「フルエクスポート」のみが提供されていましたが、今回新しく、指定した期間のみエクスポートする「増分エクスポート」がサポートされました。
前提
増分エクスポートを使用する前提としてPITR(ポイントインタイムリカバリ)が有効化されている必要があります。そのためエクスポート機能を利用する予定のあるテーブルでは忘れずに有効化しましょう。
出力されるファイル
増分エクスポートをすると、マニフェストファイルとデータファイルの2種類がS3バケットに出力されます。マニフェストファイルは次のように出力されます。
prefix/AWSDynamoDB/ExportId/_started
prefix/AWSDynamoDB/ExportId/manifest-summary.json
prefix/AWSDynamoDB/ExportId/manifest-summary.checksum
prefix/AWSDynamoDB/ExportId/manifest-files.json
prefix/AWSDynamoDB/ExportId/manifest-files.checksum
prefix
はエクスポート時に、任意に指定できるキーです。また、ExportId
は自動で振られる一意なIDです。_started
は0Bの書き込みチェックなどの目的で作られるファイルとなり、これは消してしまっても問題ありません。
manifest-summary.json
はエクスポートジョブに関する概要情報を、manifest-files.json
はエクスポートされたテーブルデータを含むファイルについての情報を含みます。それぞれのフォーマットを公式ドキュメントから引用します。
manifest-summary.json
{
"version": "2023-08-01",
"exportArn": "arn:aws:dynamodb:us-east-1:599882009758:table/export-test/export/01695097218000-d6299cbd",
"startTime": "2023-09-19T04:20:18.000Z",
"endTime": "2023-09-19T04:40:24.780Z",
"tableArn": "arn:aws:dynamodb:us-east-1:599882009758:table/export-test",
"tableId": "b116b490-6460-4d4a-9a6b-5d360abf4fb3",
"exportFromTime": "2023-09-18T17:00:00.000Z",
"exportToTime": "2023-09-19T04:00:00.000Z",
"s3Bucket": "jason-exports",
"s3Prefix": "20230919-prefix",
"s3SseAlgorithm": "AES256",
"s3SseKmsKeyId": null,
"manifestFilesS3Key": "20230919-prefix/AWSDynamoDB/01693685934212-ac809da5/manifest-files.json",
"billedSizeBytes": 20901239349,
"itemCount": 169928274,
"outputFormat": "DYNAMODB_JSON",
"outputView": "NEW_AND_OLD_IMAGES",
"exportType": "INCREMENTAL_EXPORT"
}
manifest-files.json
{
"itemCount": 8,
"md5Checksum": "sQMSpEILNgoQmarvDFonGQ==",
"etag": "af83d6f217c19b8b0fff8023d8ca4716-1",
"dataFileS3Key": "AWSDynamoDB/data/sgad6417s6vss4p7owp0471bcq.json.gz"
}
やってみた
- S3バケットは作成済み
- テーブルのPITR有効化済み
という前提で、残りの手順を試してみましょう。
まずテーブルの設定画面から、「エクスポートおよびストリーム」タグにアクセスします。この画面の「S3 へのエクスポート」を選択します。
次にエクスポートの設定をしていきます。「送信先 S3 バケット」にバケットおよびprefixの指定をします。また送信先には、自身だけでなく他のアカウントも指定できます。
「エクスポート設定」では「フルエクスポート」または「増分エクスポート」が指定できるようになっています。増分エクスポートを選んだ場合、「エクスポート期間」を指定します。期間の指定は最後の1時間や、最後の6時間といった相対指定か、日時を指定する絶対指定が可能です。
また「追加の設定」ではフォーマットの指定などができます。
これらを指定し実行ボタンをクリックすると、エクスポートが始まります。エクスポートタイプとして「増分」が表示されていることが確認できます。
しばらく待っていると、無事にバケットにデータがエクスポートされました。指定した期間ではあまりデータの更新がなかったようで、少量のデータのみエクスポートされたようです。
まとめ
これまではテーブルのエクスポートは全体のみ可能でしたが、期間を指定した増分エクスポートがサポートされました。データレイクでの使用など、定期的に更新していきたいケースで非常に有用な機能ではないでしょうか。