s3-pit-restoreとは

s3-pit-restore はAWSのS3で利用できるポイントインタイムリカバリ機能を提供するコマンドラインツール。

特定時点にS3を復元できる。

S3バケットはバージョニングを有効にしておくと、ファイルごとにバージョン管理ができる。
ところがバケット内のすべてのファイルを特定時点の状態にするには全てのファイルを個別に復元する必要がある。
s3-pit-restoreを使うとバケット内のすべてのファイルを特定時点にまとめて復元できる。

s3-pit-restoreを使うためのS3の設定

s3-pit-restoreを使うためにはS3のバージョニングを有効にしておく必要がある。

バージョニング設定

有効になっていない場合は編集ボタンを押して有効にする。

バージョニング設定画面

s3-pit-restoreの使い方

インストール

pipでインストールする。

$ pip3 install s3-pit-restore

$ s3-pit-restore --help
options:
  -h, --help            show this help message and exit
  -b BUCKET, --bucket BUCKET
                        s3 bucket to restore from
  -B DEST_BUCKET, --dest-bucket DEST_BUCKET
                        s3 bucket where recovering to
  -d DEST, --dest DEST  path where recovering to on local
  -p PREFIX, --prefix PREFIX
                        s3 path to restore from
  -P DEST_PREFIX, --dest-prefix DEST_PREFIX
                        s3 path to restore to
  -t TIMESTAMP, --timestamp TIMESTAMP
                        final point in time to restore at
  -f FROM_TIMESTAMP, --from-timestamp FROM_TIMESTAMP
                        starting point in time to restore from
  -e, --enable-glacier  enable recovering from glacier
  -v, --verbose         print verbose informations from s3 objects
  --dry-run             execute query without transferring files
  --debug               enable debug output
  --test                s3 pit restore testing
  --max-workers MAX_WORKERS
                        max number of concurrent download requests

ローカルに復元する

ローカルに復元するには以下のコマンドを実行する。

$ s3-pit-restore -b バケット名 -d 復元先パス -t 時刻

それぞれのオプションは以下の通り。

  • -b : 復元元のバケット名
  • -d : 復元先のローカルディレクトリのパス
  • -t : 復元する時刻 (例: 2023-12-03 00:00:00 +9)

$ s3-pit-restore -b test-bucket-xxx -d ./test-bucket -t '2023-12-03 00:00:00 +9'

上記コマンドではtest-bucket-xxxバケットの2023-12-03 00:00:00 +9時点の状態を./test-bucketディレクトリに復元する。

別のバケットに復元する

復元先にはバケットも指定できる。
復元元とは異なるバケットに復元するには-dオプションの代わりに-Bオプションを使う。

$ s3-pit-restore -b バケット名 -B 復元先バケット -t 時刻

それぞれのオプションは以下の通り。

  • -b : 復元元のバケット名
  • -B : 復元先のバケット名
  • -t : 復元する時刻 (例: 2023-12-03 00:00:00 +9)

$ s3-pit-restore -b test-bucket-xxx -B test-bucket-restore-xxx -t '2023-12-03 00:00:00 +9'

上記コマンドではtest-bucket-xxxバケットの2023-12-03 00:00:00 +9時点の状態をtest-bucket-restore-xxxバケットに復元する。

s3-pit-restoreのその他のオプション

  • -p : 復元元のプレフィクス(パス)の指定。指定しない場合はバケット直下のすべてのファイルが復元する。
  • -P : 復元先のプレフィクス(パス)の指定。指定しない場合はディレクトリ直下(バケット直下)に復元する。
  • -e : Glacierから復元する。指定しない場合はGlacierからは復元しない。
  • -v : 詳細な情報を表示する。指定しない場合は詳細な情報を表示しない。
  • --dry-run : 実際には復元しない。指定しない場合は実際に復元する。
  • --max-workers : 同時に実行する復元処理の数。