개발 일지 / / 2023. 6. 17. 19:16

CodeDeploy 자동 배포시 EC2 인스턴스의 환경변수 사용하기

프로그램을 개발하다보면 비밀번호나 개인 정보 등

노출되면 안되는 민감한 정보를 입력해야 하는 상황이 충분히 생길 수 있다.

 

시스템 어딘가에 환경변수를 선언하고

값으로는 어떤 프로그램의 실행 파일의 경로를 저장하고 호출한다면

실행 파일이 위치한 경로가 아닌곳에서도 프로그램을 실행할 수 있는 장점도 있지만

또 하나의 장점은 환경 변수의 값에 데이터를 저장하고 호출한다면
소스 코드상에선 값이 노출되지 않고 환경변수의 값을 가져와 사용할 수 있다.

 

이번 팀 프로젝트를 진행하면서

소스코드 상에서 숨기게 된 값들이 몇개 있는데

외부 API서버를 이용하기 위한 API 키부터 해서

서버에서 발급하는 JWT 토큰의 시크릿 키,

그리고 업로드된 파일이 실제 저장되는 디렉토리 경로와,

데이터 베이스에 로그인하기 위한 정보 등을

yml 환경변수에 선언하고 yml에선 시스템 환경 변수의 값을 불러와서 사용했다.

 

EC2도 리눅스 기반의 운영체제(아마존 리눅스, 우분투의 경우)가 설치된

하나의 컴퓨터이기에 환경변수를 사용할 수 있는데

EC2에서 환경변수를 선언하면 자동 배포 시에도 잘 실행될 줄 알았지만..

로그를 보니 환경변수를 찾지 못하고

빌드 파일 실행중에 에러가 발생하여 실행이 중단된다.

 

하지만 CodeDeploy를 사용하지 않는다는 선택지는 없었다..

어떤 방식으로 CI 환경을 구성하더라도

AWS의 EC2 인스턴스에서 빌드파일을 자동으로 실행시키려면

AWS의 CodeDeploy 서비스를 이용해야 한다.

물론 수동으로 실행한다면 CodeDeploy를 사용하지 않아도 되지만

매번 수동으로 실행시키기엔 자동 배포가 매우 편리해서 포기할 수가 없다..!

특히 매번 EC2 인스턴스에 파일을 전송하는 것도 번거롭다. (SCP GUI 프로그램을 이용하면 조금 낫다..)

 

아무튼 AWS(S3)에 빌드 파일이 성공적으로 전송된 후

CodeDeploy가 EC2 내부로 파일을 옮기고

지정한 경로에 있는 실행 스크립트를 실행시키게 되는데

실행 스크립트를 실행하는 사용자(CodeDeploy)의 접근 권한의 문제인건지

유효하지 않은 파일에 환경변수를 선언해서인지는 모르겠지만

환경변수를 불러오지 못해 에러가 발생한다..

 

검색을 해보니 bashrc 파일 안에 환경변수를 선언하고

bashrc에 접근하도록 실행 스크립트 안에 코드를 작성해야 한다고 한다.

/etc/bashrc 안에서 환경변수 선언 예시
실행 스크립트

이제 다시 자동 배포를 시도하면 환경변수를 제대로 불러와 서버가 에러없이 실행된다.

(나중에 알게 되었지만 linux에서 환경변수 추가 후
현재 터미널에 반영(갱신)할 때 사용되는 명령어이기도 하다.)

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유