-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
람다강의에서 런타임 설정 편집부분
23.04.28 15:59 작성 23.04.28 16:02 수정 조회수 272
0
안녕하세요 제로초님
람다 런타임 설정 편집부분 화면이 좀 바뀐거같아서 질문 남깁니다! 저는 이렇게 보입니다
일단 index를 exports로 바꿨는데 이대로 그냥 저장하고,
진행했더니 thumb파일도 안만들어지고 이미지도 평소에 잘뜨던게 undefined로 떠서 문제를 찾아보고 있었습니다
답변을 작성해보세요.
0
조현영
지식공유자2023.04.28
handler만 쓰시면 됩니다.
https://github.com/ZeroCho/react-nodebird/blob/master/https/lambda/index.js
이렇게 exports.handler로 하신 거 맞죠?
장산
질문자2023.04.28
네 똑같이 했습니다
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-sansbook-aws
const Key = decodeURIComponent(event.Records[0].s3.object.key); // original/12312312_abc.png
console.log(Bucket, Key);
const filename = 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);
}
};
답변 1