数据archive 到 Glacier 之后如果单个或者少量文件恢复,可以直接在Console界面上操作
但是对于大量文件需要恢复对情况,就必须用aws cli或者使用Batch Operations 来处理
对于AWS CLI方式,这篇文章里面有探讨 https://blog.51cto.com/helpdesk/7029748
但是发现一个棘手的问题,在AWS CloudShell上运行相关的命令,完全没有问题,但是通过Ubuntu EC2的话,却报错,尝试debug也没有完全解决, 尤其是对于包含空格的文件名的处理,更加令人头疼,那为何不在CloudShell上跑就好了?因为CloudShell只能跑20分钟就会自动退出session,而且这是它的limitation,没法设置。后来尝试用S3 Batch Job的方式解决,具体如下。
1.- 使用命令导出需要恢复的文件列表
aws s3api list-objects-v2 --bucket test-data --prefix folder/a/ --query 'Contents[?StorageClass==`GLACIER`][Key]' --output text | sed 's/\t/\n/g' > galcier-restore.txt
2.- 创建csv文件,一栏放bucket name,一栏放key
Example:bucket name: test-data, key: abc/B/C/D360090%286-22-2021+12-56-1%29-1.htm
3.- 将这个csv文件上传到S3
4.- 创建job指向 csv文件
操作选择 Restore
设置恢复需要保存的时长,这里不支持Console界面的快速恢复,只能选Standard
设定完成报告的S3保存路径
Permission建议根据这个提示创建一个新role
创建好后,需要手动触发 Run Job
完成后系统会报告结果