내용으로 건너뛰기

Amazon S3에서 미리 서명된 URL 요청에 대한 "SignatureDoesNotMatch" 또는 "403 Forbidden" 오류를 해결하려면 어떻게 해야 합니까?

2분 분량
0

Amazon Simple Storage Service(Amazon S3)에서 미리 서명된 URL을 사용하여 Amazon S3 버킷에 요청했는데 "SignatureDoesNotMatch" 또는 "403 Forbidden" 오류가 발생했습니다.

간략한 설명

미리 서명된 URL을 생성하면 클라이언트가 요청을 인증하기 위해 고유 서명을 계산합니다. 그런 다음, Amazon S3는 클라이언트가 HTTP 요청에서 전송한 파라미터를 기반으로 서명을 계산한 후 두 서명을 비교합니다. 서명이 일치하지 않으면 "SignatureDoesNotMatch" 오류가 발생합니다.

해결 방법

이 문제를 해결하려면 Amazon S3에서 미리 서명된 URL 요청에 대한 다음 구성 설정을 확인하십시오.

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.

HTTP 메서드 검증

미리 서명된 URL을 생성할 때는 URL에 HTTP 작업을 할당합니다. 클라이언트가 HTTP 요청에서 보내는 작업이 URL의 HTTP 작업과 일치하는지 확인하십시오. 예를 들어 URL에 GET 작업을 할당하는 경우 요청의 HTTP 작업도 GET이어야 합니다.

시크릿 액세스 키 확인

미리 서명된 URL을 생성하는 데 사용한 시크릿 액세스 키가 잘못됨, 유효하지 않음 또는 꺼짐 상태인지 확인합니다. 시크릿 액세스 키에 일치하지 않는 문자 또는 잘못된 간격을 추가하면 시크릿 액세스 키가 다음 상태 중 하나로 전환됩니다. 올바른 액세스 키를 사용하여 미리 서명된 URL을 다시 생성하고 있는지 확인하십시오.

URL의 버킷 이름과 키 이름 확인

버킷 이름과 객체 이름이 올바르고 URL의 서명 생성 시 사용된 이름과 일치하는지 확인합니다. 이름은 대소문자도 일치해야 합니다.

HTTP 요청에 사용되는 헤더 확인

서명을 생성하는 데 사용하는 HTTP 헤더가 HTTP 요청에서 클라이언트가 S3로 보내는 헤더와 일치하는지 확인합니다.

또한 헤더 값이 서명 계산 중에 생성된 값과 일치하는지 확인합니다. 

AWS 리전이 올바른지 확인

미리 서명된 URL을 S3에 전송하기 전에, URL을 생성한 AWS 리전이 현재 버킷이 있는 리전과 일치하는지 확인합니다.

GetBucketLocation API 요청을 실행하여 S3 버킷의 리전을 확인하십시오. get-bucket-location AWS CLI 명령을 실행할 수도 있습니다.

$ aws s3api get-bucket-location --bucket example-bucket

출력 예시:

{      
"LocationConstraint": "us-west-2"  
}

시스템 시간 유효 기간 확인

시스템 시간을 디지털 서명의 유효 기간 이후 날짜로 설정하면 서명이 만료된 것으로 나타나고 실패합니다. 시스템 시간을 서명 유효 기간 이전의 날짜로 설정하면 서명이 유효하지 않아 실패합니다.

관련 정보

오류 코드 목록

Amazon S3 버킷의 미리 서명된 URL이 지정한 만료 시간 전에 만료되는 이유는 무엇입니까?

미리 서명된 URL이 있는 객체 다운로드 및 업로드

S3 객체에 액세스하려고 할 때 발생하는 “요청이 만료되었습니다” 오류를 해결하려면 어떻게 해야 합니까?

AWS 공식업데이트됨 10달 전