10분 안에 끝내는 Amplify 배포: NextJS를 Amplify로 배포하기
안녕하세요. 독자님들. 이번 아티클에서는 제가 즐겨 사용하는 NextJS 13을 Amplify에 배포하는 과정을 적어보려 합니다. 물론 NextJS 12라고 해서 크게 다를거는 없으니 천천히 따라하시면 금방 배포하실 수 있을거예요.
1) Amplify Hosting 시작하기
제일 간단한 챕터입니다. '시작하기' 버튼을 클릭해주세요.
원하시는 형상관리 툴을 선택하고 '계속'을 눌러주세요.
레파지토리를 선택해주세요.
2) 환경변수 및 빌드 설정하기
만약, 독자님들의 제품이 nextauth
를 활용한 인증 관리, 그리고 데이터베이스 통신 등의 기능이 있어서 환경 변수가 있다면 무턱대고 '다음'을 누르지 마세요. 물론 만약 '다음'을 눌렀더라도 수정은 가능합니다.
먼저 환경변수를 살펴볼게요.
a) 환경 변수 설정하기
환경 변수는 '고급 설정'을 클릭하여 확장해서 설정할 수 있습니다. 제품에 필요한 환경변수 값을 추가해주세요.
환경 변수는 추 후 빌드 설정에서 별도의 세팅이 필요합니다. 저는 다음과 같은 환경 변수를 추가했다고 가정하겠습니다:
자. 이제 독자님들의 .env.production
에 맞게 환경 변수 설정을 해주세요.
모두 설정이 되셨다면 빌드 설정 챕터로 넘어갑시다.
b) 빌드 설정 하기
기본적인 빌드 설정은 위와 같을거예요. 저는 npm
을 사용하기에 다음과 같이 변경해줬습니다:
version: 1
frontend:
phases:
preBuild:
commands:
- npm ci # <-- changed
build:
commands:
- npm run build # <-- changed
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- node_modules/**/*
- .next/cache/**/* # <-- changed
<– changed
문구가 있는 곳이 변경되었습니다. 하단에 cache.paths
에 추가된 .next/cached
경로도 함께 추가해주세요. 이는 nextjs 캐시를 사용하기 위함입니다.
그리고 조금 더 수정할게요. 지금 상태로 빌드를 하게 되면 환경 변수를 읽을 수가 없 습니다. 환경 변수를 참조하려면 다음과 같이 설정해주세요.
b) 빌드 설정하기에서 설정된 .env.production
를 기준으로 작성하겠습니다.
npm run build - env | grep -e DATABASE_URL -e DATABASE_USER -e DATABASE_PASSWORD -e NEXTAUTH_SECRET -e NEXTAUTH_URL -e NEXTAUTH_URL_INTERNAL >> .env.production
가 추가되었습니다. 이것은 환경 변수에 설정된 값을 node가 읽을 수 있도록 .env.production
파일을 생성하고 빌드 하게 합니다.
그리고 cat .env.production
을 추가했는데요. 해당 행은 나중에 빌드에러가 발생하였을 때 환경 변수 체크 디버깅 용으로 추가한 것이니 패스해도 됩니다. 😉
이제 남은건 '다음'만 눌러주시면 됩니다. 😁
축하합니다. 🎉🎉
이제 남은건 배포가 될 때까지 기다리는 것 뿐이예요. 만약 도메인 네임 서비스를 사용하시고 싶으시다면 Route53을 통해서 도메인을 구매하고 Amplify
에 연결하시면 됩니다.
Q1) 빌드에서 에러가 발생했어요.
괜찮아요. 로그는 모든걸 알려줍니다.
- Amplify 사이드 바에
모든 앱
하단에 있는 독자님의 앱으로 이동합니다. X
라고 표시된 빌드 에러를 클릭하세요.- 로그를 다운로드해주세요.
- 다운로드 된 로그를 통해서 어떤 에러가 발생했는지 알 수 있습니다.
간혹, !!! Build failed
라던지, Non-Zero Exit Code detected
같은 원인을 유추하기 어려운 에러가 발생하기도 합니다. 이럴 때는 amplify.yml
에서 로그를 찍어가며 디버깅을 할 수도 있습니다.
Q2) 배포된 주소로 접속하니 Application error가 발생했어요.
Application error: a server-side exception has occurred (see the server logs for more information).
라는 에러가 발생하셨나요?
걱정하지 마세요. 로그를 확인하면 대강적인 내용을 유추해볼 수 있습니다. 다음 과정을 따라해주세요.
- AWS에서 Cloud watch를 검색합니다.
- 그리고
/aws/amplify/
로 시작하는 로그를 클릭하고 로그를 확인해봅니다.
로그 확인해보시고 문제를 해결하시면 됩니다. 👍