기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
체크섬을 통한 데이터 무결성 보호
Amazon Simple Storage Service(S3)는 객체를 업로드할 때 체크섬을 지정하는 기능을 제공합니다. 체크섬을 지정하면 객체와 함께 저장되며 객체를 다운로드할 때 유효성을 검사할 수 있습니다.
체크섬은 파일을 전송할 때 데이터 무결성을 한층 더 강화합니다. 체크섬을 사용하면 수신된 파일이 원본 파일과 일치하는지 확인하여 데이터 일관성을 확인할 수 있습니다. Amazon S3의 체크섬에 대한 자세한 내용은 지원되는 알고리즘을 포함한 Amazon Simple Storage Service 사용 설명서를 참조하세요.
필요에 가장 적합한 알고리즘을 유연하게 선택하고 SDK가 체크섬을 계산하도록 할 수 있습니다. 또는 지원되는 알고리즘 중 하나를 사용하여 미리 계산된 체크섬 값을 제공할 수 있습니다.
참고
버전 3.337.0부터 AWS SDK for PHP SDK는 업로드를 위한 CRC32 체크섬을 자동으로 계산하여 기본 무결성 보호를 제공합니다. 사전 계산된 체크섬 값을 제공하지 않거나 SDK가 체크섬을 계산하는 데 사용해야 하는 알고리즘을 지정하지 않은 경우 SDK는이 체크섬을 계산합니다.
또한 SDK는 AWS SDK 및 도구 참조 안내서에서 확인할 수 있고 외부에서 설정할 수 있는 데이터 무결성 보호에 대한 전역 설정을 지원합니다.
중요
CRC32C 알고리즘을 사용하려면 PHP 환경에AWS 공통 런타임(AWS CRT) 확장을 설치해야 합니다.
체크섬은 객체 업로드와 객체 다운로드라는 두 가지 요청 단계로 설명합니다.
객체 업로드
S3Client의 PutObject 메서드를 사용하여 Amazon S3에 객체를 업로드합니다. 파라미터 배열의 ChecksumAlgorithm 쌍을 사용하여 체크섬 계산을 활성화하고 알고리즘을 지정합니다.
$client = new \Aws\S3\S3Client(['region' => 'us-east-2']); // See the note below. $result = $client->putObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'key', 'ChecksumAlgorithm' => 'CRC32', 'Body' => 'Object contents to test the checksum.' ]);
요청에 체크섬 알고리즘을 제공하지 않는 경우 체크섬 동작은 다음 표와 같이 사용하는 SDK 버전에 따라 달라집니다.
체크섬 알고리즘이 제공되지 않은 경우 체크섬 동작
| PHP SDK 버전 | 체크섬 동작 |
|---|---|
| 3.337.0 이하 | SDK는 CRC 기반 체크섬을 자동으로 계산하여 요청에 제공하지 않습니다. |
| 3.337.0 이상 | SDK는 |
미리 계산된 체크섬 값 사용
요청과 함께 제공되는 사전 계산된 체크섬 값은 SDK의 자동 계산을 비활성화하고 제공된 값을 대신 사용합니다.
다음 예제에서는 사전 계산된 SHA256 체크섬이 있는 요청을 보여줍니다.
use Aws\S3\S3Client; use GuzzleHttp\Psr7; $client = new S3Client([ 'region' => 'us-east-1', ]); // Calculate the SHA256 checksum of the contents to be uploaded. $contents = 'Object contents to test the checksum.'; $body = Psr7\Utils::streamFor($contents); $sha256 = base64_encode(Psr7\Utils::hash($body, 'sha256', true)); $result = $client->putObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'key', 'Body' => $body, 'ChecksumSHA256' => $sha256 ]);
Amazon S3에서 체크섬 값이 지정된 알고리즘에 대해 올바르지 않다고 판단하면 서비스는 오류 응답을 반환합니다.
멀티파트 업로드
멀티파트 업로드에 체크섬을 사용할 수도 있습니다.
다음 예제에서 볼 수 있듯이 MultipartUploader 생성자의 params 배열에서 체크섬 알고리즘을 키-값 쌍으로 지정합니다.
$s3Client = new S3Client([ 'region' => 'us-east-1' ]); $stream = fopen("/path/to/large/file", "r"); $mpUploader = new MultipartUploader($s3Client, $stream, [ 'bucket' => 'amzn-s3-demo-bucket', 'key' => 'key', 'params' => ['ChecksumAlgorithm' => 'CRC32'] ]);
객체 다운로드
getObject 메서드를 사용하여 객체를 다운로드하면, ChecksumMode 키 값이 enabled인 경우 SDK가 자동으로 체크섬을 확인합니다.
다음 스니펫의 요청은 체크섬을 계산하고 값을 비교하여 응답의 체크섬을 검증하도록 SDK에 지시합니다.
$result = $client->getObject([ 'Bucket' => 'amzn-s3-demo-bucket', 'Key' => 'test-checksum-key', 'ChecksumMode' => 'enabled', ]);
참고
체크섬과 함께 객체를 업로드하지 않은 경우 검증이 수행되지 않습니다.