Print
카테고리: [ Amazon Web Services ]
조회수: 4482

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 가 나타난다.

{
    "Restore": "ongoing-request=\"false\", expiry-date=\"Sun, 13 Aug 2017 00:00:00 GMT\"",
    ...
    "StorageClass": "GLACIER",
    "Metadata": {}
}

 

참고 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/