記事:
Glacierは、StorageClass:Glacierになっている。
S3に戻して、ダウンロード可能になるにはTier=Standardの場合、3〜5時間かかる。
指定時間経過後、Glacierに移動する時間を指定できる。
aws --profile test-user --region us-east-1 s3api restore-object --bucket mybucket --key logs/host1/access.log-20140101.gz --restore-request '{"Days": 1}'
aws --profile test-user --region us-east-1 s3 cp s3://mybucket/logs/host1/access.log-20140101.gz ./host1/
AWS_PROFILE=default AWS_REGION=us-east-1 S3_BUCKET=mybucket S3_PREFIX='path/to/web$i/access.log-201705' S3_FILTER='2017050[8-9]' RESTORE_DAYS=3 END_HOST=03 for i in $(seq -w 01 $END_HOST); do \ prefix=$(echo $S3_PREFIX | perl -pe "s/\\$\i/$i/" ); \ for key in $(aws s3api list-objects --profile $AWS_PROFILE --region $AWS_REGION --bucket $S3_BUCKET --prefix $prefix --output json | jq -r '.Contents[].Key' | grep -P $S3_FILTER); \ do echo $key; aws s3api restore-object --profile $AWS_PROFILE --region $AWS_REGION --bucket $S3_BUCKET --key $key --restore-request "Days=$RESTORE_DAYS,GlacierJobParameters={Tier=Standard}"; \ done \ done
aws s3api head-object --profile $AWS_PROFILE --region $AWS_REGION --bucket $S3_BUCKET --key $key --output json | jq -r .Restore
S3_INCLUDE='access.log-2017050[8-9]*' for i in $(seq -w 0001 $END_HOST); do \ prefix=$(echo $S3_PREFIX | perl -pe "s/\\$\i/$i/" ); \ aws s3 cp s3://$S3_BUCKET/$(dirname $prefix)/ ./$(dirname $prefix)/ \ --profile $AWS_PROFILE --region $AWS_REGION \ --recursive --exclude "*" --include "$S3_INCLUDE" --force-glacier-transfer; \ done
デフォルトでは 月のストレージ容量の5%まで無料。以下の方法で確認できる。
AWS_PROFILE=default; AWS_ACCOUNT_ID=12345467890; \ for region in $(aws --profile $AWS_PROFILE ec2 describe-regions --query "Regions[].[RegionName]" --output text); do \ echo "---- $region"; aws --profile $AWS_PROFILE --region $region glacier get-data-retrieval-policy --account-id $AWS_ACCOUNT_ID; \ done >> $AWS_PROFILE.glacier.$(date +%Y%m%d-%H%M%S).log
aws --profile default --region us-east-1 glacier set-data-retrieval-policy --generate-cli-skeleton > glacier-policy.json