[Sprint] 환경 변수 설정

# 학습 목표

  • 클라이언트와 서버를 서로 연결하고 노출되면 안 되는 값을 보호하기 위해 환경 변수를 설정

# 해결 과제

  • AWS CodeBuild 서비스를 통해 환경 변수를 전달할 수 있어야 합니다.
  • AWS Parameter Store 서비스와 AWS CLI를 통해 환경 변수를 전달할 수 있어야 합니다.

# 실습 자료

sprint-practice-deploy-for04


# 과제 항목별 진행 상황

클라이언트 환경 변수 설정

  • CodeBuild 환경 변수 추가
  • 파이프라인 재실행
  • 서버 연결 확인

서버 환경 변수 설정

  • EC2(Server)에 AWS CLI 설치 EC2에서 AWS 의 자원을 불러와야 되므로 아래 처럼 설치가 필요
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
aws-cli/2.11.15 Python/3.11.3 Linux/5.19.0-1023-aws exe/x86_64.ubuntu.22 prompt/off
# 설치 완료!!
  • 파라미터 스토어에서 파라미터 생성
  • 소스 저장소에서 Script 파일 편집
#/scripts/start.sh
#!/bin/bash
cd /home/ubuntu/im-sprint-practice-deploy/server

export DATABASE_USER=$(aws ssm get-parameters --region ap-northeast-2 --names DATABASE_USER --query Parameters[0].Value | sed 's/"//g')
export DATABASE_PASSWORD=$(aws ssm get-parameters --region ap-northeast-2 --names DATABASE_PASSWORD --query Parameters[0].Value | sed 's/"//g')
export DATABASE_PORT=$(aws ssm get-parameters --region ap-northeast-2 --names DATABASE_PORT --query Parameters[0].Value | sed 's/"//g')
export DATABASE_HOST=$(aws ssm get-parameters --region ap-northeast-2 --names DATABASE_HOST --query Parameters[0].Value | sed 's/"//g')

authbind --deep pm2 start app.js
  • 배포 후 정상 동작 확인

# TROUBLE SHOOTING LOG

💡 Parameter SecureString으로 넘겨 받기

원인

Password부분을 평문으로 전달할 경우 보안상의 위험이 있기 때문에 보안 문자열로 암호화를 진행하여 인자값으로 전달 진행

해결 방안

파라미터를 전달받는 쪽에서 —with-decryption 옵션을 추가 하여 복호화후 값을 받는다.

aws ssm get-parameters --region ap-northeast-2 --names DATABASE_PASSWORD --query Parameters[0].Value --with-decryption | sed 's/"//g'

# 피드백

오태경박찬규
AWS 개발자도구 서비스를 활용화여 파이프라인을 구성해보니 GitHub Action 을 사용했을 때와의 차이점도 느껴볼 수 있었고, 여러 AWS 서비스와 연계하여 트러블 슈팅도 해볼 수 있었다.github action 다음으로 자동화 도구를 새로 접해보는 기회가 되었으며, 실습때 도다른 프로세스를 조합할 것 이다.

#References

AWS CLI get-parameters Command

Leave a Comment