我正在寻找一种在启用 Vault Lock 的情况下将 Amazon S3 对象移动到 Glacier 的解决方案(如此处所述https://aws.amazon.com/blogs/aws/glacier-vault-lock/ https://aws.amazon.com/blogs/aws/glacier-vault-lock/)。如果可能的话,我想使用亚马逊内置工具(生命周期管理或其他)。
我找不到任何说明或选项来执行此操作。 S3 似乎只允许将对象移动到 Glacier 存储类。但这并不能提供数据完整性,也不能防止数据丢失。
我知道我可以用一个程序来做到这一点。它将下载 S3 对象并通过各自的 REST API 将其移动到 Glacier。对于这个简单的任务来说,这种方法似乎太复杂了。
想象一下这样的情况:
Glacier 是 AWS 的一项服务。
S3是AWS的一项服务。
但S3也是一个customer冰川服务。
当您将 S3 中的对象迁移到 Glacier 存储类时,S3 使用 S3 拥有的 AWS 账户将该对象存储在 Glacier... 中。
S3 中的那些对象使用GLACIER
存储类不在“您的”Glacier 保管库中,它们位于 S3 拥有的保管库中。
这与外部可观察到的证据一致:
您无法从 Glacier 控制台看到文件库中的这些 S3 对象。
您不必向 S3 授予任何 IAM 权限来访问 Glacier(相比之下,您do必须授予 S3 权限才能将事件通知发布到 SQS、SNS 或 Lambda)
Glacier 不会向您收取 Glacier 存储类对象的费用 - S3 会收取费用。
从这个角度来看,你想要完成的事情是完全不同的。您想将一些档案存储在your冰川穹顶,your策略,并且该内容目前“恰好”存储在 S3 中。
从 S3 下载然后上传到 Glacier 是解决方案。
但这并不能提供数据完整性,也不能防止数据丢失。
上传到 Glacier 时可以保证有效负载的完整性,因为树哈希算法可以有效防止损坏的上传。
从 S3 下载,除非对象存储在SSE-C http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html,如果使用单部分上传,则 ETag 是存储对象的 MD5 哈希值,或者是各部分的串联二进制编码 MD5 哈希值的十六进制编码 MD5 哈希值,后跟-
以及零件的数量。理想情况下,上传到 S3 时,您应该在对象元数据中存储更好的哈希值(例如 sha256),例如x-amz-meta-content-sha256
.
防止数据丢失——是的,Glacier 确实提供了更多功能,但 S3 并非完全没有功能:具有匹配的存储桶策略DENY
行动永远会凌驾于行动之上any矛盾的ALLOW
操作,无论是在存储桶策略还是任何其他 IAM 策略(例如角色、用户)中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)