繁体   English   中英

按需将 S3 存储桶存储到 Glacier 是否可以通过 boto3 API?

[英]S3 buckets to Glacier on demand Is it possible from boto3 API?

我正在测试一个脚本来恢复存储在 S3 存储桶中的日期,使用生命周期规则每天将数据移动到冰川。 因此,理论上,当我将文件上传到 S3 存储桶时,一天后,亚马逊基础设施应该将其移至冰川。

但我想测试一个我正在用 python 开发的脚本来测试恢复过程。 因此,如果我了解 boto3 API,我还没有看到任何强制存储在 S3 存储桶中的文件立即移动到冰川存储的方法。 是否可以这样做,或者有必要等到 Amazon 基础设施触发生命周期规则。

我想使用一些这样的代码:

bucket = s3.Bucket(TARGET_BUCKET)
for obj in bucket.objects.filter(Bucket=TARGET_BUCKET, Prefix=TARGET_KEYS + KEY_SEPARATOR):
    obj.move_to_glacier()

但是我找不到任何 API 可以按需迁移到冰川。 另外,我不知道是否可以使用存储桶生命周期规则按需强制执行此操作

更新:

S3 更改了PUT Object API ,于 2018 年 11 月 26 日生效。 这在以前是不可能的,但您现在可以将对象直接写入 S3 Glacier 存储类。

我们从客户那里听到的关于使用 S3 Glacier 的一件事是,他们更喜欢使用最常见的 S3 API 直接对 S3 Glacier 对象进行操作。 今天,我们宣布 S3 PUT 到 Glacier 的可用性,它使您能够使用标准的 S3“PUT”API 并选择任何存储类(包括 S3 Glacier)来存储数据。 数据可以直接存储在 S3 Glacier 中,无需上传到 S3 Standard 并立即过渡到具有零日生命周期策略的 S3 Glacier。

https://aws.amazon.com/blogs/architecture/amazon-s3-amazon-s3-glacier-launch-announcements-for-archival-workloads/

该服务现在接受x-amz-storage-class的以下值:

STANDARD
STANDARD_IA
ONEZONE_IA
INTELLIGENT_TIERING
GLACIER
REDUCED_REDUNDANCY

PUT+Copy (始终使用,通常后跟DELETE ,用于更改元数据或重命名对象的操作)也支持新功能。

请注意,无论您的 SDK 在本地“屏蔽”这些值的程度如何,利用此功能可能需要您升级到更新版本的 SDK。


这是不可能的。 将 S3 对象迁移到 GLACIER存储类的唯一方法是通过生命周期策略。

x-amz-storage-class

约束:您不能将 GLACIER指定为存储类。 要将对象转换为 GLACIER存储类,您可以使用生命周期配置。

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html

REST API 是所有 SDK、控制台和 aws-cli 使用的接口。


注意...使用小对象进行测试,但不要在生产中将小对象存档到 Glacier。 即使您在 90 天之前删除对象,S3 也会向您收取最少 90 天的 Glacier 存储费用。 (此费用已记录在案。)

可以使用 Glacier 的upload_archive()方法将文件从 S3 上传到Glacier

更新:这与 S3 对象生命周期管理不同,而是直接上传到 Glacier。

glacier_client = boto3.client('glacier')

bucket = s3.Bucket(TARGET_BUCKET)

for obj in bucket.objects.filter(Prefix=TARGET_KEYS + KEY_SEPARATOR):
    archive_id = glacier_client.upload_archive(vaultName='TARGET_VAULT',body=obj.get()['Body'].read())
    print obj.key, archive_id

.filter()不接受Bucket关键字参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM