Amazon s3 如何在启用Vault Locked的情况下将对象从Amazon S3移动到Glacier?

Amazon s3 如何在启用Vault Locked的情况下将对象从Amazon S3移动到Glacier?,amazon-s3,data-integrity,amazon-glacier,Amazon S3,Data Integrity,Amazon Glacier,我正在寻找一种将AmazonS3对象移动到Glacier并启用Vault锁(如本文所述)的解决方案。如果可能的话,我想使用Amazon内置的工具(生命周期管理或其他) 我找不到任何操作说明或选项。S3似乎只允许将对象移动到冰川存储类。但这既不能提供数据完整性,也不能防止数据丢失 我知道我可以用一个程序来做。它将下载S3对象并通过各自的RESTAPI将其移动到Glacier。这种方法对于这个简单的任务来说似乎太复杂了。想象一下: 冰川是AWS的一项服务 S3是AWS的一项服务 但S3也是冰川服务

我正在寻找一种将AmazonS3对象移动到Glacier并启用Vault锁(如本文所述)的解决方案。如果可能的话,我想使用Amazon内置的工具(生命周期管理或其他)

我找不到任何操作说明或选项。S3似乎只允许将对象移动到冰川存储类。但这既不能提供数据完整性,也不能防止数据丢失

我知道我可以用一个程序来做。它将下载S3对象并通过各自的RESTAPI将其移动到Glacier。这种方法对于这个简单的任务来说似乎太复杂了。

想象一下:

  • 冰川是AWS的一项服务

  • S3是AWS的一项服务

  • 但S3也是冰川服务的客户

将S3中的对象迁移到Glacier存储类时,S3将该对象存储在Glacier。。。使用S3拥有的AWS帐户

S3中使用
冰川
存储类的对象不在“您的”冰川保险库中,它们位于S3拥有的保险库中

这与外部可观察到的证据一致:

  • 从冰川控制台看不到Vault中的这些S3对象

  • 您不必授予S3任何IAM访问Glacier的权限(相反,您必须授予S3向SQS、SNS或Lambda发布事件通知的权限)

  • Glacier不会为Glacier存储类对象付费——S3会

从这个角度看,你想要完成的是完全不同的。您希望在您的冰川保险库中存储一些档案,以及您的策略,而这些内容目前只是“碰巧”存储在S3中

从S3下载,然后上传到Glacier就是解决方案

但这既不能提供数据完整性,也不能防止数据丢失

当上传到Glacier时,负载的完整性可以得到保证,因为树哈希算法有效地防止了损坏的上传

从S3下载,除非使用存储对象,否则ETag是存储对象的MD5散列(如果使用单部分上载),或者是部分的串联二进制编码MD5散列的十六进制编码MD5散列,后跟
-
和部分数量。理想情况下,当上传到S3时,您应该在对象元数据中存储更好的散列(例如sha256),例如
x-amz-meta-content-sha256


防止数据丢失——是的,Glacier确实在这里提供了更多功能,但S3在这里并非完全没有功能:具有匹配的
DENY
操作的bucket策略将始终覆盖任何冲突的
ALLOW
操作,无论它是在bucket策略还是任何其他IAM策略(例如角色、用户)中.

你的解释很好,很好地解释了引擎盖下发生的事情。评论“但这既不能提供数据完整性,也不能防止数据丢失。”是关于S3冰川存储类的。我同意我可以安全地从S3下载对象并上传到我的冰川保险库。我只是希望亚马逊能解决这个问题。@JoosepSimm究竟是哪种情况的解决方案?S3中的对象版本控制提供了防止意外覆盖/删除的保护。S3存储桶策略可以防止故意覆盖。S3在上传时验证
Content-MD5
和/或
x-amz-Content-sha255
,以确保在上传未完整传输的情况下拒绝而不是存储上传。一旦存储在S3中,在任何存储类中,对象及其元数据(包括时间戳)都是不可变的。S3控制台似乎允许元数据编辑,但实际上不允许——这实际上是用新的时间戳创建现有对象的新副本。我需要防止故意删除文件——例如,当主帐户被敌对方接管时。据我所知,可以从S3中删除旧版本。如果受安全策略保护,则可以更改策略,然后删除旧版本。冰川的保险库锁有这种保护。如果主(根)帐户被破坏,你是对的。。。基本上,除了上锁的保险库,所有东西都处于危险之中。有点不相关,我有一个从S3到Google云存储(GCS)的同步过程,它将S3中的所有内容复制到GCS。启用此功能的凭据的配置和存储方式可以让一个系统泄露我的数据给您,但要彻底消灭我(不寒而栗),您必须同时泄露两个平台。关于根妥协,另请参见。