新增功能 – 适用于 Amazon S3 的其他校验和算法

c8e15860246d2e6b14935f7ea957c48d.gif

前言

Amazon Simple Storage Service (Amazon S3)  https://aws.amazon.com/s3/ 旨在为您的对象以及与您的对象关联的元数据提供 99.999999999%(11 个 9)的持久性。您可以放心的是,Amazon S3 会准确存储您放入 

https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html 的内容,并且会准确返回您获取时存储的内容 

https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html 。为了确保正确地来回传输对象,Amazon S3 会使用校验和,后者基本上来说是一种数字指纹。

Amazon S3 的 PutObgect 函数已经允许您传递对象的 MD5 https://en.wikipedia.org/wiki/MD5 校验和,并且仅在您提供的值与 Amazon S3 计算的值相匹配时才接受该运算。虽然这允许 Amazon S3 检测数据传输错误,但这确实意味着您需要在调用 PutObgect 之前或调用 GetObgect 之后计算校验和。此外,计算大型(多 GB 甚至多 TB)对象的校验和可能需要大量计算,并可能导致出现瓶颈。实际上,一些大型 Amazon S3 用户已经构建了专门用于计算和验证校验和的特殊用途 Amazon EC2 机群。

新的校验和支持

现在,您可以非常轻松地计算和存储 Amazon S3 中存储的数据的校验和,并使用校验和来检查上载和下载请求的完整性。您可以使用这项新功能来实施特定于您所在行业的数字保护最佳实践和控制措施。尤其是,在将每个对象上载到 S3 时,您可以指定使用四种广泛使用的校验和算法( SHA-1、SHA-256、CRC-32 和 CRC-32C )中的任何一种。

  • SHA-1:https://en.wikipedia.org/wiki/SHA-1

  • SHA-256:https://en.wikipedia.org/wiki/SHA-2

  • CRC-32: https://docs.microsoft.com/en-us/openspecs/office_protocols/ms-abs/06966aa2-70da-4bf9-8448-3355f277cd77?redirectedfrom=MSDN

  • CRC-32C:https://github.com/google/crc32c

以下是此项新功能的主要方面:

对象上载:

最新版本的亚马逊云科技开发工具包会在上载过程中计算指定的校验和,并在上载结束时将其包含在 HTTP 尾部 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Trailer 。

您还可以选择提供预先计算的校验和。无论使用哪种方式,如果请求中的值与 Amazon S3 计算的值匹配,Amazon S3 都会验证校验和并接受运算。结合使用 HTTP 尾部,此功能可以大大加快客户端完整性检查的速度。

分段对象上传:

亚马逊云科技开发工具包现在利用客户端并行机制,并为分段上传 

https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html 的每个部分计算校验和。所有分段的校验和本身都已经过校验和,且这些校验和的校验和在上载完成时均被传输到 Amazon S3。Add-on的升级。接下来分别介绍这三部分的升级过程:

校验和存储和持久性

经过验证的校验和以及指定的算法作为对象元数据的一部分进行存储。如果为对象请求使用 KMS 密钥进行服务器端加密 https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html ,则校验和将以加密形式存储。算法和校验和在对象的整个生命周期中始终保持不变,即使它更改了存储类别 https://aws.amazon.com/s3/storage-classes/ 或被更新的版本取代也是如此。它们还作为 Amazon S3 复制 

https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html 的一部分进行传输。

校验和检索

新的  GetObgectAttributes 函数返回对象以及每个部分(如果适用)的校验和。

校验和的实际应用

您可以通过亚马逊云科技命令行界面 (CLI) https://aws.amazon.com/cli/ 、 亚马逊云科技开发工具包 https://aws.amazon.com/tools/ 或 Amazon S3 控制台 

https://s3.console.aws.amazon.com/s3/home 访问此功能。在控制台中,我在准备上载对象时启用了其他校验和选项:

f6acc90833f588bc1070f7ab184fe541.png

然后我选择了一个校验和函数

959c7f728e83ecfe3964e3b2d7571a55.png

如果我已经计算了校验和,我可以输入它,否则控制台将计算它。

上载完成后,我可以查看对象的属性以查看校验和:

65ca139501eb40acc555bd9ff35d7e1a.png

Amazon S3 清单报告 

https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-inventory.html 还列出了每个对象的校验和函数。

根据我自己的代码,开发工具包可以为我计算校验和:

with open(file_path, 'rb') as file:
    r = s3.put_object(
        Bucket=bucket,
        Key=key,
        Body=file,
        ChecksumAlgorithm='sha1'
    )

或者我可以自己计算校验和并将其传递给 put_object:

with open(file_path, 'rb') as file:
    r = s3.put_object(
        Bucket=bucket,
        Key=key,
        Body=file,
        ChecksumSHA1='fUM9R+mPkIokxBJK7zU5QfeAHSy='
    )

*左滑查看更多

当我检索对象时,我指定了校验和模式来指示我想要验证返回的对象:

r = s3.get_object(Bucket=bucket, Key=key, ChecksumMode='ENABLED')

*左滑查看更多

当我从  r['Body'] 读取对象时,会发生实际的验证,如果不匹配,将会引发异常。

现已推出

这四个额外的校验和现已在所有商用亚马逊云科技区域中提供,您现在即可开始使用它们,且无需额外付费。

本篇作者

15f4a5f3077557f69ea4075584349df1.png

Jeff Barr

首席布道师

亚马逊云科技首席布道师,他在2004年开始在亚马逊云科技更新博客,从那时起一直坚持内容产出。

dcd57697796bf9774ffe1c340f71c0b3.gif

8bd260ae89960e353894bcc0e7ff2e55.gif

听说,点完下面4个按钮

就不会碰到bug了!

c2f3960514f314f2bd1ab9052d87219b.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值