사용자가 Amazon Simple Storage Service(Amazon S3) 버킷의 객체에 액세스하려고 하면 404 NoSuchKey 오류가 발생합니다.
해결 방법
요청된 객체가 버킷에 없는 경우 Amazon S3가 404 오류를 반환할 수 있습니다. 사용자가 객체에 대해 GET 또는 HEAD 요청을 하기 전에 객체가 생성되어 S3 버킷에서 사용 가능한지 확인하십시오.
버킷에서 객체를 사용할 수 있는지 확인하려면 Amazon S3 콘솔에서 버킷의 내용을 검토하십시오. 또는 AWS Command Line Interface(AWS CLI)를 사용하여 head-object 명령을 실행할 수 있습니다.
aws s3api head-object --bucket awsexamplebucket --key object.jpg
참고: AWS CLI 명령을 실행할 때 오류가 발생하면, AWS CLI 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오.
Amazon S3는 모든 애플리케이션에 대해 강력한 읽기 후 쓰기 일관성을 제공합니다. 새 객체를 성공적으로 쓰거나 기존 객체를 덮어쓰거나 삭제한 후 후속 읽기 요청은 즉시 최신 버전의 객체를 수신합니다. 또한 Amazon S3는 목록 작업을 위한 강력한 일관성을 제공합니다. 쓰기 후에는 버킷의 객체 목록을 작성할 수 있습니다. Amazon S3 일관성에 대한 자세한 내용은 Amazon S3 강력한 일관성을 참조하십시오.
요청된 객체를 S3 버킷에서 사용할 수 있는데 404 NoSuchKey 오류가 다시 발생하면 다음을 확인하십시오.
- 요청이 객체 이름과 정확히 일치하는지 확인합니다. S3 객체에 대한 요청은 대소문자를 구분합니다. 예를 들어, 객체 이름이 myimage.jpg인데 Myimage.jpg 가 요청된 경우 요청자는 404 NoSuchKey 오류를 수신합니다.
- 요청된 경로가 객체 경로와 일치하는지 확인합니다. 그렇지 않으면 요청자가 404 NoSuchKey 오류를 수신합니다.
- 객체 경로에 공백이 포함된 경우 요청이 올바른 구문을 사용하여 경로를 인식하는지 확인하십시오. 예를 들어 AWS CLI를 사용하여 Windows 시스템에 객체를 다운로드하는 경우 객체 경로를 따옴표로 묶어야 합니다. 객체 경로는 **aws s3 cp "s3://awsexamplebucket/Backup Copy Job 4/3T000000.vbk"**와 비슷해야 합니다.
- 객체 이름에 캐리지 리턴(\r)이나 새 줄(\n)과 같이 보기 어려운 특수 문자나 URL 인코딩 문자가 있는지 확인합니다. 예를 들어, 끝에 캐리지 리턴이 있는 객체 이름 test는 Amazon S3 콘솔에서 test%0A로 표시됩니다. 객체 이름에 특수 문자가 있는지 확인하려면 --output json 파라미터를 사용하여 list-objects-v2 명령을 실행합니다. JSON 출력은 리턴(\r)과 같은 문자를 표시합니다. 객체 이름에 항상 표시되지 않는 특수 문자가 있는 경우 객체 이름에서 해당 문자를 제거하십시오. 개체에 다시 액세스해 보십시오.
- (선택 사항) 서버 액세스 로깅을 설정하여 404 NoSuchKey 오류를 일으킬 수 있는 문제에 대한 요청 레코드를 자세히 검토할 수 있습니다.
참고: 객체가 버킷에 없고 요청자에게 s3:ListBucket 액세스 권한이 없는 경우 요청자는 403 액세스 거부됨 오류를 수신합니다. 403 액세스 거부됨 오류가 표시되면 누락된 객체와 관련된 문제를 해결하십시오.
관련 정보
Amazon S3의 액세스 거부(403 금지) 오류 문제 해결