Ben*_*iff 5 checksum md5 ruby-on-rails amazon-web-services rails-activestorage
有没有办法禁用活动存储的校验和?我正在使用亚马逊 s3 存储从回形针迁移到活动存储。如果不与存储桶通信,就无法获取 md5 校验和加密代码,这对于迁移我们的生产数据库中的数百万个附件来说太耗时。校验和列具有 null: false 约束,删除此约束会在迁移和上传文件时引发似乎不可避免的错误。我觉得我一定在这里遗漏了一些东西,有什么方法可以避免使用校验和列吗?
Ric*_*ich -1
对于如下所述的某些类型的 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")
Run Code Online (Sandbox Code Playgroud)
为了获得更好的性能,您可以使用client#list_objectsAPI 批量抓取ObjectSummary整个存储桶或子集的记录,并使用这些记录来查找 Etag/校验和。
我还没有使用 ActiveSupport 完全测试这一点。(目前它通常不是 Paperclip 的良好替代品。特别是,缺乏对多个存储桶的支持目前对我们来说有点令人困惑)。
| 归档时间: |
|
| 查看次数: |
768 次 |
| 最近记录: |