- Node.js로 Lambda@Edge 이미지 리사이징 하기2024년 12월 27일
- wngnl05
- 작성자
- 2024.12.27.:01
Lambda Edge 역활
더보기{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "edgelambda.amazonaws.com", "lambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
Lambda Edge 정책
더보기{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "lambda:GetFunction", "lambda:EnableReplication", "cloudfront:UpdateDistribution", "s3:GetObject", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": "*" } ] }
index.js
압축 파일이름은 inedx 로 지정
더보기npm init -y npm i aws-sdk jimp qs
const qs = require('querystring'); var Jimp = require("jimp"); const AWS = require('aws-sdk'); AWS.config.update({region: 'ap-northeast-2'}); const s3 = new AWS.S3(); exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; const { width, height } = qs.parse(request.querystring); const parsedWidth = parseInt(width); const parsedHeight = parseInt(height); if (Number.isNaN(parsedWidth) && Number.isNaN(parsedHeight)) { callback(null, request); return; } s3.getObject({ Bucket: "<버킷 이름>", Key: request.uri.replace('/', '') }, (_, object) => { const contentType = object.ContentType; Jimp.read(object.Body) .then((jimp) => { if (!Number.isNaN(parsedWidth) && !Number.isNaN(parsedHeight)) { jimp.resize(parsedWidth, parsedHeight); } else if (!Number.isNaN(parsedWidth)) { jimp.resize(parsedWidth, Jimp.AUTO); } else if (!Number.isNaN(parsedHeight)) { jimp.resize(Jimp.AUTO, parsedHeight); } jimp.getBase64(contentType, (_, result) => { const response = { status: '200', statusDescription: 'OK', headers: { 'cache-control': [{ key: 'Cache-Control', value: 'max-age=100' }], 'content-type': [{ key: 'Content-Type', value: contentType }] }, body: result.replace(`data:${contentType};base64,`, ''), bodyEncoding: 'base64' }; callback(null, response); }); }) }); };
'Aws' 카테고리의 다른 글
Dockerfile 로 Python 앱 배포하기 (0) 2024.12.27 EKS CloudWatch Insight (0) 2024.12.27 IAM USER ap-northeast-2 외의 국가는 제한하기 (0) 2024.12.27 앤드포인트로 EC2 접속하는 방법 (0) 2024.12.27 S3에 개체가 생성되면 SQS로 메시지 보내기 (0) 2024.12.27 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)