Next.js와 AWS Lambda 연동

Next.js는 리액트 기반의 프레임워크로, 서버 측 렌더링과 클라이언트 측 렌더링을 모두 지원합니다. AWS Lambda는 서버리스 컴퓨팅 서비스로, 코드 실행을 위한 서버를 셋업하거나 관리할 필요 없이 코드를 실행할 수 있습니다. 이번 글에서는 Next.js와 AWS Lambda를 연동하는 방법에 대해 알아보겠습니다.

1. AWS Lambda 함수 생성

먼저 AWS Lambda에 함수를 생성해야 합니다. AWS Management Console에 로그인한 후 Lambda 서비스로 이동하여 “함수 생성”을 클릭합니다. 함수 생성 페이지에서 “From scratch” 옵션을 선택하고, 함수 이름과 실행 역할을 설정합니다.

2. Next.js 앱 설정

다음으로 Next.js 앱의 설정 파일을 수정해야 합니다. next.config.js 파일을 열고 다음과 같이 수정합니다.

module.exports = {
  target: 'serverless',
};

target 속성을 serverless로 설정하여 Next.js 앱을 서버리스 환경에서 작동하도록 설정합니다.

3. AWS Lambda 함수 코드 작성

AWS Lambda 함수의 코드를 작성해야 합니다. AWS Lambda는 다양한 프로그래밍 언어를 지원하므로, 사용하는 프로그래밍 언어에 맞는 코드를 작성합니다. 우리는 Node.js를 사용하므로, 다음과 같이 코드를 작성할 수 있습니다.

exports.handler = async (event, context) => {
  // Next.js 앱의 핵심 렌더링 로직을 작성합니다.
};

이 함수는 AWS Lambda에서 실행될 때 동작할 핵심 로직을 작성하는 부분입니다. Next.js 앱의 렌더링 로직을 여기에 작성하면 됩니다.

4. Next.js와 AWS Lambda 연동

이제 Next.js 앱과 AWS Lambda 함수를 연동해야 합니다. Next.js 앱의 라우트와 Lambda 함수의 연결을 만들어야 합니다. 이를 위해 serverless-nextjs 패키지를 사용할 수 있습니다. 다음 명령을 사용하여 패키지를 설치합니다.

npm install serverless-nextjs

serverless.yml 파일을 생성하고 다음과 같이 작성합니다.

service: my-next-app

provider:
  name: aws
  runtime: nodejs14.x

functions:
  app:
    handler: handler.handler
    events:
      - http: ANY {proxy+}

이렇게 작성한 YAML 파일은 Next.js 앱을 서버리스 환경으로 배포하기 위한 설정 파일입니다.

5. AWS Lambda 배포

마지막으로 AWS Lambda에 함수를 배포해야 합니다. serverless.yml 파일이 있는 디렉토리에서 다음 명령을 실행합니다.

serverless deploy

이렇게 하면 Next.js 앱이 AWS Lambda에 배포되고 연동이 완료됩니다.

결론

이제 Next.js 앱을 AWS Lambda와 연동하는 방법에 대해 알아보았습니다. AWS Lambda를 사용하면 서버 관리 없이 앱을 실행할 수 있으며, Next.js와 함께 사용하면 강력한 서버리스 애플리케이션을 개발할 수 있습니다. 추가적인 설정이나 세부사항에 대해서는 AWS Lambda와 Next.js 공식 문서를 참조하시기 바랍니다.


참고 자료