서버리스 사진첩 실습

이준석·2023년 2월 5일

주요기능

우리가 만들려는 서버리스 사진첩 서비스는 여느 클라우드 사진 저장 서비스들처럼 단순히 사진을 업로드하는 것 외에도 인증 기능과 썸네일 생성 기능을 제공합니다.


Bare Minimum Requirements

  • 이미지가 업로드되면, 원본과 별도로 썸네일을 생성하고, 이를 별도의 버킷에 저장해야 합니다.
    • 썸네일 이미지는 가로 200px의 크기를 가집니다.
    • 썸네일을 저장할 별도의 버킷은 람다 함수의 환경 설정으로 구성되어야 합니다.
  • 썸네일 생성이 완료되면, 메일로 해당 썸네일 URL과 함께 전송이 되어야 합니다.
    • Amazon SNS를 활용합니다.
  • 아래 과제 제출 방법을 참고해 GitHub에 제출합니다.

Advanced Challenge

  • 과제를 달성하면, S3 이벤트가 SQS로 전송되게 만들고, SQS로부터 이벤트를 받아 람다가 실행하게 만들어봅시다.
  • S3의 Pre-signed URL 기능을 이용하여, 업로드 전용 URL을 획득하고, 이를 통해 이미지를 S3 업로드할 수 있게 만들어봅시다.

Getting Started


Step 1

sam init 명령을 이용해 Quick Start Template으로부터 Standalone function을 하나 생성합니다.

sam init

Step 2

lambda 함수의 파라미터를 정의합니다. 이는 이벤트 소스로부터 트리거가 발생했을 때 이벤트의 형태를 확인하기 위함입니다. 다음과 같이 코드를 작성합니다.

exports.helloFromLambdaHandler = async (event, context) => {
    console.log(event)

    console.log(context)

    return 'Hello from Lambda!';
}

Step 3

빌드 후 배포합니다.

sam build
sam deploy --guided

Step 4

S3 버킷을 하나 만들고, 트리거로 연결합니다.
다음과 같이 설정합니다.

Step 5

이제 해당 버킷에 jpeg 이미지를 하나 올리면, 람다 함수가 실행됩니다.

Step 6

event와 context가 어떻게 콘솔에 출력되는지 확인하기 위해 "모니터링" 탭의 "CloudWatch에서 로그 보기"를 클릭하여 로그를 확인합니다.

  • "테스트" 탭 내 템플릿에서 S3 이벤트가 마련되어 있어서, 실제로 jpeg 이미지를 올리지 않고도 이벤트를 흉내낼 수(mocking) 있습니다.

Step 7

event 객체 내용을 확인했다면, 이를 바탕으로 썸네일 생성 코드와, 버킷 저장 코드를 활용하여 썸네일 생성을 목적으로 하는 람다 함수를 작성합니다.

트러블 슈팅

0개의 댓글