Amazon Simple Storage Service(Amazon S3) 버킷에 객체를 업로드하고 싶습니다. 또한 업로드한 객체의 무결성을 확인하고 싶습니다.
간략한 설명
Content-MD5 헤더를 사용하여 업로드한 객체의 무결성을 확인하려면 다음 단계를 사용하십시오.
참고: Content-MD5 헤더를 사용하는 경우 Amazon S3는 제공된 Content-MD5 값을 기준으로 객체를 확인합니다. 값이 일치하지 않으면 오류가 발생합니다.
해결 방법
객체의 Content-MD5 값 계산
Windows OS
Windows 운영 체제를 사용하는 경우 Microsoft PowerShell 유틸리티의 Get-FileHash cmdlet을 사용하여 다음과 같이 MD5 다이제스트를 계산할 수 있습니다.
Get-FileHash \path\to\file -algorithm MD5 | Format-List
참고: Get-FileHash cmdlet은 Microsoft PowerShell 유틸리티 버전 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 오류 응답