我一直在使用s3编写一个web应用程序用于存储和冰川备份。所以我设置了生命周期策略来存档它。现在我想编写一个列出已归档文件的webapp,用户应该能够从中恢复,然后在恢复完成后收到电子邮件。
现在我遇到的麻烦是我找不到我可以发出启动恢复的php sdk命令。如果它在恢复完成时通知SNS会很好,SNS会将JSON推送到SQS并且我会轮询SQS并最终在轮询检测到完全恢复时通过电子邮件发送给用户。
任何帮助或建议都会很好。 感谢。
答案 0 :(得分:8)
你也可以像{em>那样使用AWS CLI tool(这里我假设你要恢复一个目录中的所有文件):
aws s3 ls s3://myBucket/myDir/ | awk '{if ($4) print $4}' > myFiles.txt
for x in `cat myFiles.txt`
do
echo "restoring $x"
aws s3api restore-object \
--bucket myBucket \
--key "myDir/$x" \
--restore-request '{"Days":30}'
done
关于您的通知需求,CLI工具将报告“发生了客户端错误(RestoreAlreadyInProgress):如果请求已经启动,则对象还原已在进行中”,并且一旦恢复,可能会显示不同的消息。您可以多次运行此restore命令,查找“restore done”错误/消息。当然很漂亮;使用AWS CLI工具可能有更好的方法。
警告:请注意超过分配的免费恢复金额/期限的冰川恢复。如果您过快地恢复过多的数据,收费会呈指数级增长。
答案 1 :(得分:2)
由于这种情况发生异步(并且最多需要5个小时),您必须设置一个进程来轮询正在通过对该对象发出HEAD个请求进行恢复的文件,该对象将具有{的恢复状态信息{1}}标题。
如果有帮助,我解析此标题的ruby代码如下所示:
x-amz-restore