Amazon S3 のデータ整合性保護 - AWS SDKsとツール

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3 のデータ整合性保護

注記

設定ページのレイアウトの理解、または以下の AWS SDKs「」を参照してくださいこのガイドの設定ページについて

しばらくの間、 AWS SDKs Amazon Simple Storage Service にデータをアップロードするとき、または Amazon Simple Storage Service からデータをダウンロードするときに、データ整合性チェックをサポートしています。以前は、これらのチェックはオプトインされていました。これで、CRC32 や CRC64NVME などの CRC ベースのアルゴリズムを使用して、これらのチェックがデフォルトで有効になりました。各 SDK またはツールにはデフォルトのアルゴリズムがありますが、別のアルゴリズムを選択できます。必要に応じて、引き続きアップロード用に事前に計算されたチェックサムを手動で指定することもできます。アップロード、マルチパートアップロード、ダウンロード、暗号化モード間で一貫した動作により、クライアント側の整合性チェックが簡素化されます。

最新バージョンの AWS SDKs を使用して、アップロードごとに周期冗長チェック (CRC) ベースのチェックサム AWS CLI を自動的に計算し、Amazon S3 に送信します。Amazon S3 はサーバー側で個別にチェックサムを計算し、指定された値と照合して検証してから、オブジェクトとそのチェックサムをオブジェクトのメタデータに永続的に保存します。オブジェクトとともにメタデータにチェックサムを保存することで、オブジェクトのダウンロード時に同じチェックサムが自動的に返され、ダウンロードの検証にも使用されます。オブジェクトのメタデータに保存されているチェックサムはいつでも確認できます。

チェックサムオペレーション、マルチパートアップロード、またはサポートされているチェックサムアルゴリズムのリストの詳細については、Amazon S3でのオブジェクトの整合性の確認」を参照してください。

マルチパートアップロード:

Amazon S3 では、開発者は単一パートアップロードとマルチパートアップロードで一貫したフルオブジェクトチェックサムを使用することもできます。

複数のパートでファイルをアップロードする場合、SDKs は各パートのチェックサムを計算します。Amazon S3 は、これらのチェックサムを使用して UploadPart API を通じて各パートの整合性を検証します。さらに、Amazon S3 は CompleteMultipartUpload API を呼び出すときにファイル全体のサイズとチェックサムを検証します。

SDK にマルチパートアップロードを支援する Amazon S3 Transfer Manager がある場合、チェックサムは、AWS SDKsとツールによるサポート表にある SDK 固有のデフォルトアルゴリズムを使用してパートについて検証されます。設定を に設定するchecksum_typeFULL_OBJECTか、CRC64NVME アルゴリズムを使用することを選択することで、完全なオブジェクトチェックサムにオプトインできます。

古いバージョンの SDK を使用している場合 AWS CLI:

アプリケーションが SDK またはツールの 2024 年 12 月より前のバージョンを使用している場合でも、Amazon S3 は新しいオブジェクトに対して CRC64NVME チェックサムを計算し、将来の参照のためにオブジェクトメタデータに保存します。後で、保存された CRC をユーザー側で計算された CRC と比較し、ネットワーク送信が正しいことを確認できます。また、独自の事前計算されたチェックサムを PutObjectまたは UploadPartリクエストに提供することで、整合性保護を手動で拡張することもできます。これは、古いバージョンでこれに対処するための標準的な手法です。

この機能を設定するには、以下のように使用します。

request_checksum_calculation - 共有 AWS configファイル設定
AWS_REQUEST_CHECKSUM_CALCULATION - 環境変数
aws.requestChecksumCalculation - JVM システムプロパティ: Java/Kotlin のみ

デフォルトでは、ユーザーはリクエストの送信時にリクエストチェックサムの計算をオプトインされます。ユーザーは、リクエストの構築の一環として、使用可能なチェックサムアルゴリズムのいずれかを選択できます。それ以外の場合は、SDK 固有のデフォルトアルゴリズムが使用されます。各 SDK またはツールのデフォルトアルゴリズムについては、AWS SDKsとツールによるサポート表を参照してください。

デフォルト値: WHEN_SUPPORTED

有効な値:

  • WHEN_SUPPORTED – チェックサム検証は、Amazon S3 へのデータ転送など、 API オペレーションでサポートされている場合、すべてのレスポンスペイロードで実行されます。

  • WHEN_REQUIRED – チェックサム検証は、 API オペレーションで必要な場合にのみ実行されます。

response_checksum_validation - 共有 AWS configファイル設定
AWS_RESPONSE_CHECKSUM_VALIDATION - 環境変数
aws.responseChecksumValidation - JVM システムプロパティ: Java/Kotlin のみ

デフォルトでは、ユーザーはリクエストの送信時にレスポンスチェックサム検証にオプトインされます。チェックサムはレスポンスペイロードに対して計算され、チェックサムレスポンスヘッダーと比較されます。チェックサムの検証に失敗すると、ペイロードの読み取り時にエラーが発生します。

チェックサムレスポンスヘッダーは、チェックサムのアルゴリズムも示します。Amazon S3 クライアントは、チェックサムをサポートするすべての Amazon S3 API オペレーションのレスポンスチェックサムの検証を試みます。ただし、SDK が指定されたチェックサムアルゴリズムを実装していない場合、この検証はスキップされます。

デフォルト値: WHEN_SUPPORTED

有効な値:

  • WHEN_SUPPORTED – チェックサム検証は、Amazon S3 へのデータ転送など、 API オペレーションでサポートされている場合、すべてのレスポンスペイロードで実行されます。

  • WHEN_REQUIRED – チェックサム検証は、 API オペレーションでサポートされ、呼び出し元がオペレーションのチェックサムを明示的に有効にしている場合にのみ実行されます。例えば、Amazon S3 API が呼び出され、 ChecksumModeパラメータが有効に設定されている場合です。 GetObject

AWS SDKsとツールによるサポート

以下の SDK は、このトピックで説明する機能と設定をサポートします。部分的な例外があれば、すべて記載されています。JVM システムプロパティ設定は、 AWS SDK for Java と AWS SDK for Kotlin でのみサポートされます。

注記

次の表では、「CRT」は を参照AWS 共通ランタイム (CRT) ライブラリしており、プロジェクトに追加の依存関係を追加する必要がある場合があります。

SDK サポート デフォルトのチェックサムアルゴリズム サポートされているチェックサムアルゴリズム 注意または詳細情報
AWS CLI v2 はい CRC64NVME CRC64NVME, CRC32, CRC32C, SHA1, SHA256 AWS CLI v1 の場合、デフォルトのアルゴリズムとサポートされているアルゴリズムは Python (Boto3) と同じになります。
SDK for C++ はい CRC64NVME CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK for Go V2 (1.x) はい CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK for Go 1.x (V1) いいえ
SDK for Java 2.x はい CRC32 CRC64NVME (CRT のみ)、CRC32, CRC32C, SHA1, SHA256
SDK for Java 1.x いいえ
SDK for JavaScript 3.x はい CRC32 CRC32, CRC32C, SHA1, SHA256
SDK for JavaScript 2.x いいえ
SDK for Kotlin はい CRC32 CRC32, CRC32C, SHA1, SHA256
SDK for .NET 4.x はい CRC32 CRC32, CRC32C, SHA1, SHA256
SDK for .NET 3.x はい CRC32 CRC32, CRC32C, SHA1, SHA256
SDK for PHP 3.x はい CRC32 CRC32, CRC32C (CRT 経由のみ)、SHA1, SHA256 awscrt CRC32C を使用するには 拡張機能が必要です。
SDK for Python (Boto3) はい CRC32 CRC64NVME (CRT のみ)、CRC32, CRC32C (CRT のみ)、SHA1, SHA256
SDK for Ruby 3.x はい CRC32 CRC64NVME (CRT のみ)、CRC32, CRC32C (CRT のみ)、SHA1, SHA256
SDK for Rust はい CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256
SDK for Swift はい CRC32 CRC64NVME, CRC32, CRC32C, SHA1, SHA256 すべてのアルゴリズムに必要な CRT 依存関係。
PowerShell V5 用のツール はい CRC32 CRC32, CRC32C, SHA1, SHA256
PowerShell V4 のツール はい CRC32 CRC32, CRC32C, SHA1, SHA256