내용으로 건너뛰기

Amazon S3에 업로드한 객체의 무결성을 확인하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Simple Storage Service(Amazon S3) 버킷에 객체를 업로드하고 싶습니다. 또한 업로드한 객체의 무결성을 확인하고 싶습니다.

해결 방법

범용 버킷의 경우 Content-MD5 헤더를 사용하여 업로드된 객체의 무결성을 검사합니다. 디렉터리 버킷의 경우 지원되는 체크섬 알고리즘을 사용하여 업로드된 객체의 무결성을 검사합니다.

참고: Amazon S3는 디렉터리 버킷에서 PutObject 작업을 사용할 때 Content-MD5를 사용한 무결성 검사를 지원하지 않습니다. 또한 Amazon S3는 벡터 또는 테이블 버킷에 대한 무결성 검사를 지원하지 않습니다.

범용 버킷

범용 버킷의 경우 객체의 Content-MD5 값을 계산합니다.

참고: Content-MD5 헤더를 사용하는 경우 Amazon S3는 제공된 Content-MD5 값을 기준으로 객체를 확인합니다. 값이 일치하지 않으면 오류가 발생합니다.

Windows 운영 체제(OS)

Windows OS를 사용하는 경우 Microsoft PowerShell 유틸리티Get-FileHash cmdlet을 사용하여 MD5 다이제스트를 계산할 수 있습니다.

  1. 다음 명령은 MD5 다이제스트를 가져옵니다.

    Get-FileHash \path\to\file -algorithm MD5 | Format-List

    참고: \path\to\file을 객체의 경로로 바꾸십시오.

    참고: Get-FileHash cmdlet은 Microsoft PowerShell 유틸리티 버전 4.0 이상에서 사용할 수 있습니다.

    다음은 출력 예시입니다.

    Algorithm : MD5Hash      : C9A5A6878D97B48CC965C1E41859F034  
    Path      : \path\to\file
  2. 계산된 MD5Hash 값에 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 OS를 사용하는 경우 다음 OpenSSL 명령을 실행하여 파일의 Content-MD5 값을 가져옵니다.

openssl md5 -binary path/to/file | base64

참고: path/to/file을 객체의 경로로 바꾸십시오.

디렉터리 버킷

MD5 이외의 지원되는 체크섬 알고리즘을 사용하여 디렉터리 버킷에 업로드된 객체의 무결성을 확인합니다. 예를 들어 x-amz-checksum-sha256 헤더(SHA256)를 사용하여 업로드된 객체의 무결성을 확인하려면 다음 단계를 사용하십시오.

참고: x-amz-checksum-sha256 헤더를 사용하는 경우 Amazon S3는 제공된 x-amz-checksum-sha256 값을 기준으로 객체를 검사합니다. 값이 일치하지 않으면 오류가 발생합니다.

Windows OS

Windows OS를 사용하는 경우 Microsoft PowerShell 유틸리티Get-FileHash cmdlet을 사용하여 SHA256 다이제스트를 계산할 수 있습니다.

  1. 다음 명령은 SHA256 다이제스트를 가져옵니다.

    Get-FileHash \path\to\file -algorithm SHA256 | Format-List

    참고: \path\to\file을 객체의 경로로 바꾸십시오.

    다음은 출력 예시입니다.

    Algorithm : SHA256  
    Hash      : E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855  
    Path      : \path\to\file
  2. 계산된 SHA256 다이제스트에 base64 인코딩을 적용하여 필요한 SHA256 값을 가져옵니다.

    hashString ='E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855'  
    hashByteArray = [byte[]] ($hashString -replace '..', '0x$&,' -split ',' -ne '')  
    ContentSHA256 = [System.Convert]::ToBase64String($hashByteArray)  
    Echo ContentSHA256  
    `47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=`

    이 예에서 Echo ContentSHA256의 출력(47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=)이 필요한 SHA256 값입니다.

Linux OS

Linux OS를 사용하는 경우 다음 OpenSSL 명령을 실행하여 파일의 SHA256 값을 가져옵니다.

openssl sha256 -binary path/to/file | base64

참고: path/to/file을 객체의 경로로 바꾸십시오.

업로드한 객체의 무결성 확인

PutObject를 사용하여 Amazon S3에 객체를 업로드할 때 Content-MD5 값을 범용 버킷에 대한 요청 헤더로 전달하십시오.

디렉터리 버킷의 경우 x-amz-checksum-sha256 값과 SHA256으로 설정된 x-amz-checksum-algorithm 헤더를 요청 헤더로 전달합니다. Amazon S3는 제공된 Content-MD5/SHA256 값을 기준으로 객체를 확인합니다. 값이 일치하지 않으면 오류가 발생합니다. SHA256 요청 헤더를 Amazon S3 UploadPart API와 함께 사용할 수도 있습니다.

관련 정보

일반 요청 헤더

Amazon S3 오류 응답

AWS 공식업데이트됨 5달 전