我正在使用 Amazon 的 S3 和 glacier 服务创建一个基于 PHP 的 Web 应用程序。
现在我想为我的站点用户提供一个功能,他们可以选择任何文件并将其归档(意味着将文件从 S3 移动到 Glacier)和取消归档(意味着将文件从 Glacier 移动到 S3)。
我做了一些研究,但没有找到任何可能使用亚马逊 API 的方法。
问题
如何使用 API 在 S3 和 glacier 之间移动文件?
我正在使用 Amazon 的 S3 和 glacier 服务创建一个基于 PHP 的 Web 应用程序。
现在我想为我的站点用户提供一个功能,他们可以选择任何文件并将其归档(意味着将文件从 S3 移动到 Glacier)和取消归档(意味着将文件从 Glacier 移动到 S3)。
我做了一些研究,但没有找到任何可能使用亚马逊 API 的方法。
问题
如何使用 API 在 S3 和 glacier 之间移动文件?
您可以使用 Glacier API 将文件上传到 Glacier 保险库,但我不建议这样做。我们的备份应用程序的先前版本就是这样做的。当您上传文件时,它会获得一个随机分配的名称。您可以将文件名添加到文件的元数据中,但如果您想要 Glacier 保险库中的内容列表,您必须查询,然后等待 3-5 小时才能获得列表。
生命周期策略是使用 Glacier 的另一种方式。当前版本的 Arq 使用它们是因为每个对象看起来仍然像 S3 对象(没有随机对象名称,获取对象列表没有延迟),但对象内容在 Glacier 存储中。唯一的区别是获取对象内容是一个两步过程:您必须进行 API 调用以请求将对象设为可下载;准备好后,您可以下载它。如果您请求以太快的速度下载对象,也会产生“每小时高峰请求费”。Amazon Glacier 定价很复杂。
一旦对象是“Glacier 存储类”,就无法将其更改回“标准存储类”。您必须复制“标准存储类”对象并删除 Glacier 对象。
所以也许一个简单的解决你的问题的方法是:
您可以使用 API 定义将文件从 Amazon S3 归档到 Amazon Glacier 的生命周期规则,并且可以使用 API 检索归档到 Glacier 的文件的临时副本。但是,您不能使用 API 告诉 Amazon S3 将特定文件移动到 Glacier。
有两种使用 Amazon Glacier 的方法:
通过 Glacier API 直接连接允许您存储存档以进行长期存储,通常用作磁带的替代品。通过 Glacier API 存储的数据也必须通过 Glacier API 进行检索。这通常使用普通的企业备份软件,甚至是Cloudberry Backup (Windows) 或Arq (Mac) 等轻量级产品来完成。
使用 Amazon S3 生命周期规则,您可以将数据存储在 Amazon S3 中,然后定义确定何时应将数据存档到 Glacier 以进行长期存储的规则。例如,数据可以在创建后 90 天存档。数据传输受生命周期规则管理,这些规则每天都在批处理基础上运行。可以通过putBucketLifecycle API 调用(在 PHP SDK 中可用)来设置规则,但这仅定义了规则——不可能进行 API 调用来告诉 S3 将特定文件存档到 Glacier。
Amazon S3 有一个RestoreObject API 调用(在 PHP 开发工具包中可用),用于将从 Glacier 存档的数据的临时副本恢复回 S3。请注意,从 Glacier 恢复数据需要3-5 小时。
要将文件从 Glacier 移动到 S3 标准:
使用 S3 浏览器:
步骤1:单击对象并选择restore from Glacier
这将使对象可用。(在标准类中给出您希望对象需要的天数)
步骤 2:再次选择该选项,"Change Storage Class"
这将更改对象的存储类别。
使用命令行:
Step1:aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'
这使得对象可以基于冰川4小时的存储类使用。
步骤 2:在 CLI 中运行此命令:
对象可用后运行此命令将对象更改为标准类 aws s3 cp s3://<object path> s3://<destination bucket path> --storage-class STANDARD --recursive --force-glacier-transfer
点击此链接-[1]:https ://aws.amazon.com/premiumsupport/knowledge-center/restore-s3-object-glacier-storage-class/