Amazon S3에서 404 "NoSuchKey" 오류 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 1월 5일

사용자가 내 Amazon Simple Storage Service(Amazon S3) 버킷에서 객체에 액세스하려고 합니다. 그러나 Amazon S3에서 404 "NoSuchKey" 오류를 반환합니다. 이 오류를 해결하려면 어떻게 해야 합니까?

해결 방법

일반적으로 Amazon S3에서는 요청된 객체가 버킷에 없는 경우 404 오류를 반환합니다. 사용자가 특정 객체에 대한 GET 또는 HEAD 요청을 제출하기 전에 해당 객체가 생성되었으며 S3 버킷에서 사용 가능한지 확인해야 합니다.

버킷에서 객체를 사용할 수 있는지 확인하기 위해 Amazon S3 콘솔에서 버킷의 콘텐츠를 검토할 수 있습니다. 아니면 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 head-object 명령을 실행할 수 있습니다.

aws s3api head-object --bucket awsexamplebucket --key object.jpg

중요: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

Amazon S3가 모든 애플리케이션에 대해 강력한 읽기 후 쓰기 일관성 확인 기능을 제공합니다. 새 객체를 성공적으로 후 또는 기존 객체를 덮어쓰거나 삭제한 후, 후속 읽기 요청은 즉시 객체의 최신 버전을 수신합니다. 또한 S3는 목록 작업에 대해 강력한 일관성을 제공합니다. 쓰기 후에는 버킷의 객체를 나열할 수 있습니다. 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 Access Denied) 오류가 표시됩니다. 403 액세스 거부(403 Access Denied) 오류가 나타나면 누락된 객체와 관련된 문제를 해결합니다.


이 문서가 도움이 되었나요?


도움이 필요하십니까?