Amazon S3は最近、アップロードリクエストとダウンロードリクエストのデータ整合性チェックのための4つのチェックサムアルゴリズムのサポートを開始した。Amazonは、AWS SDKとS3 APIの機能強化により、S3リクエストの整合性チェックが最大90%高速化されると述べている。
アプリケーションのニーズに応じて、開発者はSHA-1、SHA-256、CRC32、CRC32Cからチェックサムアルゴリズムを選択し、データの整合性を検証できる。その際、事前に計算されたチェックサムを提供するか、AWS SDKがデータをS3にストリーミングするときにチェックサムを自動的に計算するようにする。
チェックサムと指定されたアルゴリズムは、オブジェクトのメタデータの一部として保存される。オブジェクトがストレージクラスを変更した場合でも永続的であり、S3レプリケーションの一部としてコピーされる。AWSのバイスプレジデント兼チーフエバンジェリストのJeff Barr氏は、アップロードの新機能の利点について次のように説明している。
大きな(数GBあるいは数TB)オブジェクトのチェックサムの計算は、計算量が多く、ボトルネックにつながる可能性があります。AWS SDKの最新バージョンでは、アップロードの一部として指定されたチェックサムが計算され、アップロードの終了時にHTTPトレーラーに含められます。(...)S3ではチェックサムが検証され、リクエストの値がS3によって計算された値と一致する場合に操作を許可します。この機能では、HTTPトレーラーの使用との組み合わせで、クライアント側の整合性チェックが大幅に高速化できます。
出典: https://aws.amazon.com/blogs/aws/new-additional-checksum-algorithms-for-amazon-s3/
S3 APIは、S3マルチパートアップロードを通してアップロードされたオブジェクトに対して、パートレベルのチェックサムを計算して保存できる。以前、AWSはContent-MD5ヘッダーを使ってオブジェクトの整合性をチェックすることを提案していた。FlipのソフトウェアエンジニアのPeter Mescalchin氏は、次のようにツイートしている。
S3が、アップロードされたオブジェクトに対するチェックサムアルゴリズムの選択肢を提供できるようになったことを非常に嬉しく思います。Terraform S3 -> Lambda関数のデプロイとソースコードハッシュでSHA-256を使うための部品がほぼ整っていると思っています。
フリーランスのコンサルタントAaron Booth氏は、次のように質問している。
ユーザに4つの選択肢を提供し、次に、最もパフォーマンスの高いか、あるいは最も正確な2つのオプションを選択するユースケースは何ですか。
AWS S3のバイスプレジデント兼GMのKevin Miller氏は次のように説明している。
あるアルゴリズムや、それとは別のアルゴリズムを使用する他のアプリケーションとの互換性です。私たちの経験では、データの発生から最終的な消費ポイントまでエンドツーエンドのチェックサムを設定できる場合に最適なので、最も人気のあるもののサポートを導入しました(顧客の需要に応じてさらに追加します!)
追加されたチェックサムはすべてのAWSリージョンで利用でき、この機能に関わる追加費用はない。