반응형
sam init를 이용해 Quick Start Template 으로부터 Standalone function 생성
람다 함수 파라미터를 아래와 같이 작성 후 빌드, 배포
exports.helloFromLambdaHandler = async (event, context) => {
console.log(event)
console.log(context)
return 'Hello from Lambda!';
}
만들어진 함수에서 트리거로 S3 버킷을 연결
테스트를 통해 이미지를 업로드 하지 않고 흉내내본 결과 ES module 에러 발생
검색해본 결과 이전 권한 부여자 파트에서 500에러 트러블 슈팅으로 node js 18.x로 변환 후 sdk 버전이 바뀌면서 생기는 에러였다.
sam init 에서 node 16.x 버전으로 다시 설정 후 함수를 생성하니 에러가 해결되었다.
#sdk 3.x 를 이용하려면 코드 작성 시 import 를 사용하여 트러블 슈팅도 가능하다.
원본 버킷으로부터 파일 읽기, 이미지 리사이즈, 대상 버킷으로 파일 쓰기 등을 위한 코드 작성 후 테스트 후 에러 발생
exports.helloFromLambdaHandler = async (event, context) => {
console.log(event);
console.log(context);
const parse
const bucket = event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const dstbucket = bucket + "-resized";
const dstkey = "resized-" + key;
위와 같이 작성한 코드에서 0을 읽을 수 없다고 한다.
s3 버킷에 업로드했던 이미지를 지우고 다시 업로드 하니 해결되었다.
s3 bucket이 없다는 에러가 발생한 것으로 보아 모듈에 문제가 있을 것으로 보였고
npm install aws-sdk
위 코드를 통해 s3 버킷을 불러올 수 있게 생성해주고 대상 버킷도 콘솔로
const dstbucket: ${"새로 만든 대상버킷 이름"}
만들어준 뒤 해결되었다.
권한이 없는 것으로 보이고 SNSFullAccess 를 만들어진 함수 역할에 연결해준다.
반응형