禁用校验和导轨活动存储回形针迁移 AWS S3



有没有办法禁用活动存储的校验和?我正在使用 Amazon s3 存储从回形针迁移到活动存储。如果不与存储桶通信,就无法获取获取 md5 校验和加密代码,这对于迁移生产数据库中的数百万个附件太耗时。校验和列具有 null: false 约束,删除此约束会在迁移和上传文件时引发错误,这些错误似乎是不可避免的。我觉得我在这里一定错过了什么,有什么方法可以避免使用校验和列吗?

对于下面描述的某些类型的 S3 对象,Etag 是文件的 MD5 校验和。

"由 PUT 对象、POST 对象或复制操作或通过 AWS 管理控制台创建并通过 SSE-S3 或明文加密的对象具有作为其对象数据的 MD5 摘要的 ETag。 由 PUT 对象、POST 对象或复制操作或通过 AWS 管理控制台创建并由 SSE-C 或 SSE-KMS 加密的对象具有不是其对象数据的 MD5 摘要的 ETag。 如果对象是通过分段上传或分段复制操作创建的,则无论采用何种加密方法,ETag 都不是 MD5 摘要">

参考: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html

如果您的用例符合上述条件,您将能够使用它,而不是下载和消化整个文件。

我的代码是这样的:

key = "#{id}/#{filename}"
resp = @s3client.head_object({bucket: @bucket, key: key})
checksum_base64 = [[resp.etag].pack("H*")].pack("m0")

为了获得更好的性能,您可以使用client#list_objectsAPI 批量获取整个存储桶或子集的ObjectSummary记录,并使用它们来查找 Etag/校验和。

我还没有用ActiveSupport完全测试这个端到端。(它现在通常不是回形针的良好替代品。特别是,目前缺乏对多个存储桶的支持对我们来说是一个阻碍因素(。

相关内容

  • 没有找到相关文章

最新更新