회사 프로젝트에서 next를 사용하는데, next 프레임워크의 서버리스 배포를 위해 기존에는 @sls-next/serverless-component 라이브러리로 했었다.
그러나 라이브버리 관리가 일년전에 멈춰져있고, nextjs 최근 버전을 지원하지 않는듯했다. 그렇기 때문에 다른 서버리스 배포 로직을 제공하는 서비스가 필요했고, sst를 선택했다.
https://docs.sst.dev/start/nextjs
나의 경우는 정말 간단하게 sst를 붙였는데, nodejs16 npm7 이상이 필요하고, aws자격증명이 로컬적으로 세팅이 되어있었기 때문이다. aws에 대해서는 멍청이 이기 때문에, 자격세팅 하라고 하면 조금 슬플수도..
npx create-sst@latest
기존 프로젝트에 sst를 초기화 해서 세팅해주고 sst.config.js가 만들어지면 배포 로직의 추가 설정을 하면 된다.
package.json을 보면 "dev": "sst bind next dev"
라고 script가 바뀌어있을 것이다. 이는 'Lambda 함수 내에서 실행 중인 것처럼 작동할 수 있습니다.' 라고 한다.
로컬에서 프로젝트를 실행하려면 sst를 로컬에서 실행해주고 nextjs 프로젝트를 평소처럼 키면 된다.
# Start SST locally
npx sst dev
# Start Next.js locally
yarn dev
다른 설정없이 일단 sst가 잘 작동되는지 살펴보자. 둘 중 하나의 명령어를 사용하면, 배포가 될 것이다.
npx sst dev
npx sst dev --stage prod
만약 안된다면, sst remove 명령어로 관련 리소스를 모두 제거 하자. 그리고 초기화도 다시 한번 더 해보고 배포를 해보면 잘 된다(나의 경우엔?)
https://docs.sst.dev/packages/sst#sst-remove
npx sst remove
npx sst remove --stage prod
npx create-sst@latest