ablog

不器用で落着きのない技術者のメモ

Glacier のオブジェクトを復元して他の S3 パスにコピーする

確認結果

  • S3 のオブジェクトを別のパスで Glacier にコピーできる。
  • Glacier のオブジェクトを一発で他の S3 パスにコピーすることはできない。
    • 同じパスでリストアしないと他のパスにコピーできない。

準備

  • S3 のスタンダードから Glaicier にコピーする
$ aws s3 mb s3://s3-standard-v
$ aws s3 mb s3://s3-glacier-v
$ dd if=/dev/urandom of=50mb.dat bs=1M count=50
$ aws s3 cp 50mb.dat s3://s3-standard-v/
$ seq -w 1 100 | xargs -t -P4 -I{} aws s3 cp s3://s3-standard-v/50mb.dat s3://s3-standard-v/{}.dat
$ aws s3 cp --recursive s3://s3-standard-v/ s3://s3-glacier-v/ --storage-class GLACIER

ストレージクラスが "Glacier" になっている
f:id:yohei-a:20210825153518p:plain

検証

  • Glacier から復元する(一発で別のパスへ復元はできないので同じパスで復元)
$ aws s3 ls s3://s3-glacier-v/|perl -lane 'print $F[3]'|xargs -n1 -I{} aws s3api restore-object --bucket s3-glacier-v --key {} --restore-request Days=25,GlacierJobParameters={"Tier"="Standard"}

f:id:yohei-a:20210826100655p:plain

  • 他の S3 パスへコピーする
$ aws s3 cp --recursive s3://s3-glacier-v/ s3://s3-restore-v/ --recursive --force-glacier-transfer

f:id:yohei-a:20210826100719p:plain