inflearn logo
강의

Course

Instructor

[Renewal] Creating a NodeBird SNS with React

lambda NoSuchKey 에러

639

huhu

11 asked

0

안녕하세요 바쁘실텐데 질문 드려 죄송합니다.

lambda함수에서 NoSuchKey 라는 에러가 아주아주 종종 한 번씩 발생이 됩니다.

어떤 특정 파일만 그런 것도 아니고 매번 그런 것도 아니라

무슨 상황에서 에러가 발생하는지 찾지를 못하겠습니다...

lambda/index.js

const AWS = require("aws-sdk");
const sharp = require("sharp");

const s3 = new AWS.S3();

exports.handler = async (event, context, callback) => {
    const Bucket = event.Records[0].s3.bucket.name; // react-nodebird-s3
    const Key = decodeURIComponent(event.Records[0].s3.object.key); // original/12312312_abc.png
    console.log(Bucket, Key);
    const filename = encodeURIComponent(
        Key.split("/")[Key.split("/").length - 1]
    );
    const ext = Key.split(".")[Key.split(".").length - 1].toLowerCase();
    const requiredFormat = ext === "jpg" ? "jpeg" : ext;
    console.log("filename", filename, "ext", ext);

    try {
        const s3Object = await s3.getObject({ Bucket, Key }).promise();
        console.log("original", s3Object.Body.length);
        const resizedImage = await sharp(s3Object.Body)
            .resize(400, 400, { fit: "inside" })
            .toFormat(requiredFormat)
            .toBuffer();
        await s3
            .putObject({
                Bucket,
                Key: `thumb/${filename}`,
                Body: resizedImage,
            })
            .promise();
        console.log("put", resizedImage.length);
        return callback(null, `thumb/${filename}`);
    } catch (error) {
        console.error(error);
        return callback(error);
    }
};

cloudwatch log

어디가 문제일까요ㅠㅠ

react nodejs redux express Next.js

Answer 1

0

huhu

https://velog.io/@bigbrothershin/AWS-lambda-handler-%ED%95%A8%EC%88%98

파일명에 공백이 있어 그런 것 같습니다...!!

링크와 같이 정규표현식을 했는데도 띄어쓰기가 + 인 상태인데

lambda/index.js를 고치고

const Key = decodeURIComponent(
        event.Records[0].s3.object.key.replace(/\+/g, " ")
  );

깃 푸시한다음 백과 프론트 모두 각각 ec2 인스턴스를 연결하고 깃 풀 한 후

프론트는 빌드까지 하고 각각 npx pm2 reload all 을 했으나 여전히 cloudwatch에선 띄어쓰기가 +로 나옵니다...

console.log(Bucket, Key);

cloudwatch에서 확인한 로그

이미지 깨짐 현상

깨져도 누르면 이미지 줌은 잘됩니다... original엔 문제가 없고 thumb에만 그런 것 같습니다.

0

huhu

어떻게 하다보니 이젠 띄어쓰기가 +로 바뀌진 않는데 여전히 

이미지가 깨집니다...ㅠㅠㅠ

 

0

huhu

해당 URL로 들어가보니 권한이 문제인 것 같은데

버킷에서 권한 설정 다 했는데 무엇이 문제일까요...ㅜㅜㅜ

thumb 폴더엔 해당 이미지가 잘 들어가있습니다.

0

huhu

어느 댓글에서 encodeURIComponent 넣으란 걸 봤어서 넣어놨었는데...빼니까 잘 되네요...!

const Key = decodeURIComponent(
        event.Records[0].s3.object.key.replace(/\+/g, " ")
  );

파일명에 공백(띄어쓰기) 있으면 이미지 깨지는 분들은 그냥 요고만 하시면 될 것 같습니당

넥스트 버젼 질문

0

78

2

로그인시 401 Unauthorized 오류가 뜹니다

0

89

1

무한 스크롤 중 스크롤 튐 현상

0

175

1

특정 페이지 접근을 막고 싶을 때

0

103

2

createGlobalStyle의 위치와 영향범위

0

96

2

인라인 스타일 리렌더링 관련

0

91

2

vsc 에서 npm init 설치시 오류

0

146

2

nextjs 15버전 사용 가능할까요?

0

158

1

화면 새로고침 문의

0

121

1

RTK에서 draft, state 차이가 있나요?

0

153

2

Next 14 사용해도 될까요?

0

452

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

349

1

url 오류 질문있습니다

0

211

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

373

1

sudo certbot --nginx 에러

0

1275

2

Minified React error 콘솔에러 (hydrate)

0

470

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

247

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

327

1

npm run build 에러

0

518

1

front 서버 npm run build 중에 발생한 에러들

0

382

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

338

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

288

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

239

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

201

1