객체를 Amazon Simple Storage Service(S3) 버킷에 업로드하려고 합니다. 또한 업로드된 객체의 무결성을 확인하려고 합니다. 어떻게 해야 합니까?
간략한 설명
Content-MD5 헤더를 사용하여 다음 단계에 따라 업로드된 객체의 무결성을 확인합니다.
참고: Content-MD5 헤더를 사용하면 Amazon S3가 제공된 Content-MD5 값에 대해 객체를 확인합니다. 값이 일치하지 않으면 오류가 발생합니다.
1. 객체의 Content-MD5 값을 계산합니다.
2. 객체 업로드 중에 Content-MD5 값을 요청 헤더로 전달하여 업로드된 객체의 무결성을 확인합니다.
해결 방법
객체의 Content-MD5 값 계산
Windows OS
Windows 운영 체제를 사용하는 경우 Microsoft PowerShell Utility에서 Get-FileHash cmdlet을 사용하여 다음과 같이 MD5 다이제스트를 계산할 수 있습니다.
Get-FileHash \path\to\file -algorithm MD5 | Format-List
참고: Get-FileHash cmdlet은 Microsoft PowerShell Utility 버전 4.0 이상에서 사용할 수 있습니다.
다음은 예시 출력입니다.
Algorithm : MD5
Hash : C9A5A6878D97B48CC965C1E41859F034
Path : \path\to\file
그런 다음 계산된 MD5 다이제스트에 base64 인코딩을 적용하여 필요한 Content-MD5 값을 가져옵니다.
$hashString ='C9A5A6878D97B48CC965C1E41859F034'
$hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '')
$ContentMD5 = [System.Convert]::ToBase64String($hashByteArray)
Echo $ContentMD5
yaWmh42XtIzJZcHkGFnwNA==
이 예시에서 Echo $ContentMD5, ("yaWmh42XtIzJZcHkGFnwNA==")의 출력은 필수 Content-MD5 값입니다.
Linux OS
Linux 운영 체제를 사용하는 경우 다음 OpenSSL 명령을 실행하여 파일의 Content-MD5 값을 가져옵니다.
openssl md5 -binary PATH/TO/FILE | base64
업로드된 객체의 무결성 확인
PutObject를 사용하여 객체를 Amazon S3에 업로드하는 경우 Content-MD5 값을 요청 헤더로 전달합니다. Amazon S3는 제공된 Content-MD5 값에 대해 객체를 확인합니다. 값이 일치하지 않으면 오류가 발생합니다.
Content-MD5 요청 헤더는 S3 UploadPart API와 함께 사용할 수도 있습니다.
관련 정보
공통 요청 헤더
S3 오류 응답