AWS 빌드 시 환경변수 읽는 시점 변경기
AWS 빌드 시 환경변수 읽는 시점 변경기

AWS 빌드 시 환경변수 읽는 시점 변경기

작성자
이태용이태용
카테고리
Next.Js
태그
aws
bug fix docs
notion image
사이드 프로젝트 진행중인 내 빌드 루트는 Git -> Github -> AWS CI/CD CodePipeline이다. 하지만, Next.js v13에서 환경변수 관한 버그들을 나도 직면하게 되었다. 내 경우는 내 디렉토리 env를 gitignore로 숨기면 AWS CodeBuild 빌드 시 환경변수를 못 읽어 오는 이슈가 있었다.
 

해결 방법

  1. gitignore 미설정으로 디렉토리 환경변수 노출
  1. 환경변수를 AWS에 저장
1번은 굳이 말할 필요가 없으니 2번을 택했다.
 

AWS CodeBuild에 환경변수 저장

별도로 CodeBuild에 환경변수를 저장해서 빌드 시에 저장해둔 환경변수를 읽도록 하는 방법이 있다. 이 방법을 하려면 AWS buildspec을 다뤄야하는데 나는 초기에 CodePipeline 구축할 때 buildspec.yml을 내 디렉토리에 만들어두었다.
pre_build: commands: - echo NEXT_PUBLIC_API_URL= ${NEXT_PUBLIC_API_URL} >> .env.production - echo NEXT_PUBLIC_KAKAOTALK_REST_API_KEY= ${NEXT_PUBLIC_KAKAOTALK_REST_API_KEY} >> .env.production - yarn build: commands: - yarn run build - yarn next export
 
프리 빌드로 AWS에 저장된 환경변수를 읽도록 하였고, 이후 빌드가 진행된다. 진행되면 이렇게 찍히면서 env가 읽어진다.
notion image
 

하지만,

AWS 환경 변수 유형이 일반 텍스트, 파라미터, Secrets Manager 이렇게 세 가지가 있다. 나는 이중에서 일반 텍스트로 환경 변수를 저장했는데, 일반 텍스트는 콘솔에 해당 값이 그대로 찍힌다는 얘기를 주워들었다. 맞는 얘기인지는 모르겠지만, 나중에 시간이 된다면 검토 후 Secrets Manager로 변경해야겠다.
 
Next.js @v13 directory env to aws secret manager
https://stackoverflow.com/questions/76082529/how-can-we-load-secret-environmental-variables-throught-aws-secret-manager-in-ne
 

댓글

guest