본문 바로가기

Dev/AWS10

람다레이어로 sharp 패키지 활용하여 이미지 리사이징 하기 목표 람다 사용 시, 샤프 패키지를 활용하여 이미지를 리사이징한다. 환경 esbuild AWS SAM node.js typescript npm 구성 썸네일 추출함수를 만들고, S3 트리거로 구현한 AWS 공식문서 예시와 다르게 샤프 람다레이어가 적용된 함수를 필요할 때 호출해서 썸네일을 추출할 수 있도록 구현했다. sharp-layer | media-converter 두 가지 레포로 구성했다. 1) sharp-layer 는 샤프 모듈을 사용할 수 있도록 한 레이어이다. 람다함수의 레이어 설정을 통해 해당 함수를 사용할 수 있다. 2) media-converter는 생성한 함수에 sharp-layer를 람다레이어로 구성하여 sharp 모듈을 사용 가능하도록 했다. 리사이징 수행 후 리사이징된 주소를 리턴하.. 2024. 4. 13.
AWS Lambda 사용 시 Cognito 를 활용한 인증 인가 구현 개요 AWS Cognito란 인증, 인가(권한 부여) 및 사용자 관리를 제공하는 서비스입니다. 이번 글에서는 다음 3가지 방법론을 샘플 코드 혹은 콘솔 화면과 함께 다뤄볼 것입니다. 1) Cognito UserPool 설정 2) Cognito UserPool 에서 사용자 생성 및 토큰 발급 2) AWS Sam Template에서 권한 부여자 적용 Cognito UserPool 설정 1. 코그니토 콘솔에 로그인 하고, 을 클릭합니다. 2. Cognito 사용자 풀 로그인 옵션은 이메일로 설정해줍니다. 3. 암호 정책은 디폴트로 대문자가 포함되어 있지만, 을 통해 커스텀 가능합니다. 4. 멀티팩터 인증은 하지 않고, 이메일 확인을 체크했습니다. 5. 사용자 지정 속성으로 approved를 추가했습니다. Ga.. 2023. 6. 3.
typescript & aws lambda 환경에서 s3 이미지 리사이징 최적화 개발환경 typescript aws lambda sharp awa lambda layer aws sdk 일반적으로 aws S3를 활용하여 이미지를 리사이징할 때 aws-sdk를 사용합니다. 그런데 해당 패키지는 용량이 꽤나 커서, 일반적인 람다 함수의 패키지 크기는 약 1MB인 반면, aws-sdk가 포함된 람다 함수의 패키지 크기는 약 5MB를 보임으로써, 경험적으로 대략 4MB의 용량을 차지하고 있었습니다. 그리고 람다 함수는 런타임에서 aws-sdk 패키지를 제공하기 때문에 @aws-sdk/** 패키지만 사용하여 용량을 최소화할 것입니다. 또한, 일반적으로 이미지 리사이징 함수를 여러 도메인에서 사용하는 경우, axios를 사용하여 해당 api를 호출하지만, 람다를 사용한다면 api 호출 없이 람.. 2023. 4. 8.
AWS 람다 레이어 활용하기 (with esbuild) 개발 환경 TS / AWS_Lambda / AWS_SAM 목적 공통되는 로직을 람다 레이어로 모아놓고, 필요한 코드를 가져다 사용한다. 문제 및 해결책 람다 핸들러에서 레이어에 있는 코드를 어떻게 가져올 것인가 => /opt/nodejs/node_modules 경로에 람다 레이어 모듈들이 위치하므로, import를 해당 경로로 하되, tsconfig.json 에서 paths 컴파일 옵션을 사용하여 람다 함수가 있는 레포의 코드 경로를 읽을 수 있게 한다. 레포에 적어야 하는 코드를 어떻게 최소화 할 것인가. => 레이어 코드에서 tsc -d 를 통해 컴파일 한 index.d.ts 만 가져와서 입력한다. (npm or 깃헙 모듈을 사용하여 휴먼 에러 방지 가능) esbuild 번들링 에러 해결 => sam.. 2023. 2. 18.