Notice
Recent Posts
Recent Comments
Link
투케이2K
342. (TWOK/ERROR) [AWS] NoSuchKey The specified key does not exist. - S3 객체 (Key) 가 실제로 존재하지 않음 본문
투케이2K 에러관리
342. (TWOK/ERROR) [AWS] NoSuchKey The specified key does not exist. - S3 객체 (Key) 가 실제로 존재하지 않음
투케이2K 2026. 1. 1. 13:09728x90
[환경 설정 및 설명]
프로그램 : AWS
설 명 : [AWS] NoSuchKey The specified key does not exist. - S3 객체 (Key) 가 실제로 존재하지 않음

[설 명]
--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------
- 제목 : [AWS] NoSuchKey The specified key does not exist. - S3 객체 (Key) 가 실제로 존재하지 않음
- 테스트 환경 : AWS / S3 / Get / PresignedUrl
- 사전) AWS S3 간략 설명 :
>> Aws S3 버킷 이란 데이터 (사진, 동영상, 문서 등) 객체 를 업로드할 수 있는 컨테이너 (디렉토리) 입니다
>> Aws S3 버킷은 온라인 스토리지 서비스로 HTTP/HTTPS 를 통한 API 를 사용해 파일 업로드 및 다운로드 처리를 할 수 있습니다
- 사전) STS 임시 보안 자격 증명 설명 정리 :
>> AWS STS 는 AWS 리소스에 대한 액세스를 제어할 수 있는 임시 보안 자격 증명입니다 (신뢰받는 사용자에게 제공)
>> AWS STS 는 단기적 임시 보안 자격 증명이며, 몇 분에서 몇 시간 동안 해당 자격 증명을 사용해 AWS 리소스를 액세스할 수 있습니다
>> AWS STS 임시 보안 자격 증명이 만료 된 경우 AWS는 더는 그 자격 증명을 인식하지 못하거나 그 자격 증명을 사용한 API 요청으로부터 이루어지는 어떤 종류의 액세스도 허용하지 않습니다
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------
1. S3 객체(Key)가 실제로 존재하지 않는 경우 :
>> Presigned URL은 '이미 존재하는 객체에 대한 접근 권한' 만 부여합니다.
>> 체크 포인트 : 콘솔에서 버킷 → Objects → 정확한 경로 확인
2. Key 경로 오타 (슬래시 포함) :
>> S3 의 Key 는 절대 경로 개념이 없음
>> /uploads/test.jpg 와 uploads/test.jpg 는 완전히 다른 Key
3. URL 인코딩 문제 (특수문자, 한글) :
>> 브라우저나 클라이언트에서 URL 인코딩이 깨지면 S3는 다른 Key로 인식함
>> Key에 한글, 공백, 특수문자 사용 지양 또는 업로드 전에 URL-safe 문자열로 변환
4. 다른 버킷으로 presigned URL 생성 :
>> 업로드는 bucket-a 리전에 했지만, 조회는 bucket-b 로 조회 수행
5. 만료된 객체 (Lifecycle Rule) 호출 :
>> S3 Lifecycle 정책으로 객체가 자동 삭제된 경우
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------
1. AWS 콘솔 특정 리전에서 S3 에 저장된 객체 목록 재확인 후 올바른 명칭과 경로 입력
>> 파일 명에 특수문자 등이 포함 된 경우 URL-safe 문자열로 변환
2. 확인한 S3 Key 와 파일명을 사용해 S3 파일 다운로드 GetPresignedUrl 생성 수행
3. 자바스크립트 S3 파일 다운로드 GetPresignedUrl 생성 코드 예시 :
<!-- [CDN 주소 설정] -->
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1416.0.min.js"></script>
// -----------------------------------------
// [전역 변수 선언]
// -----------------------------------------
const region = 'ap-northeast-2'; // [AWS 리전]
const accessKeyId = 'AK..7Q'; // [IAM 액세스 키]
const secretAccessKey = 'Zz..xj'; // [IAM 시크릿 키]
const bucket = 'service-folder'; // [S3 버킷 이름]
const key = 'apps/test.apk'; // [S3 폴더 및 파일 경로]
const expiredTime = 36000; // [STS 임시 자격 증명 및 파일 다운 로드 유효 시간]
// -----------------------------------------
// [AWS.config 지정] : IAM 계정
// -----------------------------------------
AWS.config.update({
region: region,
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
// -----------------------------------------
// [AWS.S3 객체 생성]
// -----------------------------------------
const s3 = new AWS.S3();
// -----------------------------------------
// [GET 확인 용도 : Pre-Signed URL 생성 요청]
// -----------------------------------------
const getExpiresInSeconds = expiredTime; // 파일 다운로드 만료 시간
const getParams = {
Bucket: bucket, // [버킷 이름]
Key: key, // [폴더 및 파일 경로]
Expires: getExpiresInSeconds // [URL 유효 시간 (초)]
};
const getUrl = await s3.getSignedUrl('getObject', getParams);
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------
[자바스크립트 AWS STS 임시 자격 증명 사용해 S3 Get PreSignedUrl 프리 사인 URL 주소 생성]
https://kkh0977.tistory.com/8151
https://blog.naver.com/kkh0977/223938740405
[Aws S3 Storage] PreSignedUrl 프리 사인 URL 주소 정리 - S3 버킷 저장소 Get 확인 및 Put 업로드 임시 권한 주소
https://blog.naver.com/kkh0977/223903771897
[Aws S3 Storage] S3 (Amazon Simple Storage Service) 버킷 저장소 개념 및 설명 정리
https://blog.naver.com/kkh0977/223733087281?trackingCode=blog_bloghome_searchlist
[간단 소스] Aws S3 버킷 저장소 리스트 목록 확인 - AmazonS3 listBuckets
https://blog.naver.com/kkh0977/223797258160?trackingCode=blog_bloghome_searchlist
[자바스크립트 AWS S3 Get 요청 및 Put 업로드 PreSignedUrl 프리 사인 URL 주소 생성 수행 - getSignedUrl]
https://blog.naver.com/kkh0977/223903767776
--------------------------------------------------------------------------
728x90
반응형
'투케이2K 에러관리' 카테고리의 다른 글
Comments
