AWS CLI 는 "*"(WildCard)를 지원하지 않는다.
그래서 Gracier에서 S3로 복구 시, 여러개를 한번에 하기가 힘들다.
그래서 아래와 같이, List를 먼저 작성하고 복구를 수행할 수 있다.
1 . 복구 대상 리스트 작성.(Gracier 상태 및 원하는 Prefix 선택)
glacier-restore.txt 파일로 리스트 작성.
aws s3api list-objects-v2 --bucket <버킷명> --query "Contents[?StorageClass=='GLACIER']" --output text | grep "<포함을 원하는 prefix 경로>" | awk '{print $2}' > glacier-restore.txt
예시>
$ aws s3api list-objects-v2 --bucket my-bucket --query "Contents[?StorageClass=='GLACIER']" --output text | grep "test/here/locatrion" | awk '{print $2}' > glacier-restore.txt
|
2. 대상 리스트를 기준으로 복구 수행.
glacier-restore.txt 파일로 복구 수행하며, restore-request 파라미터에 복구 Tier 및 복구상태 유지를 원하는 기간 입력(예시> Standard Tier, 25일)
x 변수가 prefix가 된다.
#!/bin/sh
for x in `cat glacier-restore.txt`
do
echo "Begin restoring $x"
aws s3api restore-object --bucket <버킷명> --key "$x" --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'
echo "Done restoring $x"
done
|
3. 복구 완료 여부 확인.
aws s3api head-object --bucket <버킷명> --key <Prefix> 예시> aws s3api head-object --bucket my-bucket --key test/here/locatrion/object.obj |
복원이 완료되면, 아래와 같이 expiry-date 가 나타난다.
참고 URL:
https://stackoverflow.com/questions/20033651/how-to-restore-folders-or-entire-buckets-to-amazon-s3-from-glacier
https://aws.amazon.com/ko/premiumsupport/knowledge-center/restore-s3-object-glacier-storage-class/