➊ handler 함수가 람다 호출 시 실행되는 함수입니다. 매개변수로 event와 context, callback이 주어집니다. event는 호출 상황에 대한 정보가 담겨 있고, context는 실행되는 함수 환경에 대한 정보가 담겨 있습니다. 직접 console.log해서 어떠한 정보들이 들어 있는지 확인해보는 것이 좋습니다. callback은 함수가 완료되었는지를 람다에 알립니다. callback의 첫 번째 인수는 에러 여부를 의미하고, 두 번째 인수는 반환값을 의미합니다.
➋ event 객체로부터 버킷 이름(Bucket)과 파일 경로(Key)를 받아옵니다. 또한, 이를 통해 파일명(filename)과 확장자(ext)도 얻습니다.
➌ s3.getObject 메서드로 버킷으로부터 파일을 불러옵니다. s3Object.Body에 파일 버퍼가 담겨 있습니다.
➍ sharp 함수에 파일 버퍼를 넣고, resize 메서드로 크기를 지정합니다. 첫 번째와 두 번째 인수는 가로와 세로 너비를 의미합니다. 현재 200, 200으로 주어져 있습니다. 하지만 가로 200px, 세로 200px로 리사이징되는 것은 아니고, 세 번째 인수에 따라 리사이징합니다. 현재 fit: 'inside'를 주었습니다. 주어진 가로 세로 사이즈 안에 딱 맞게 이미지를 조정하라는 뜻입니다. 이외에도 다른 옵션이 더 있습니다. 다른 옵션을 설명한 공식 문서 링크를 16.6절에 준비해뒀습니다. toBuffer 메서드는 리사이징된 이미지 결과를 버퍼로 출력합니다.
➎ s3.putObject 메서드로 리사이징된 이미지를 thumb 폴더 아래에 저장합니다. 성공적으로 저장했다면 callback 함수를 호출해 람다 함수가 종료되었음을 알립니다.