[アップデート] Amazon DynamoDBで指定した区間のエクスポートができる増分エクスポート機能が追加されました

こんにちは。サービス開発室の武田です。Amazon DynamoDBで、指定した期間のみエクスポートする「増分エクスポート」がサポートされました。
2023.09.27

こんにちは。サービス開発室の武田です。

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時間といった相対指定か、日時を指定する絶対指定が可能です。

また「追加の設定」ではフォーマットの指定などができます。

これらを指定し実行ボタンをクリックすると、エクスポートが始まります。エクスポートタイプとして「増分」が表示されていることが確認できます。

しばらく待っていると、無事にバケットにデータがエクスポートされました。指定した期間ではあまりデータの更新がなかったようで、少量のデータのみエクスポートされたようです。

まとめ

これまではテーブルのエクスポートは全体のみ可能でしたが、期間を指定した増分エクスポートがサポートされました。データレイクでの使用など、定期的に更新していきたいケースで非常に有用な機能ではないでしょうか。

参考URL