# 학습 목표
- 클라이언트와 서버를 서로 연결하고 노출되면 안 되는 값을 보호하기 위해 환경 변수를 설정
# 해결 과제
- AWS CodeBuild 서비스를 통해 환경 변수를 전달할 수 있어야 합니다.
- AWS Parameter Store 서비스와 AWS CLI를 통해 환경 변수를 전달할 수 있어야 합니다.
# 실습 자료
# 과제 항목별 진행 상황
클라이언트 환경 변수 설정
- 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 다음으로 자동화 도구를 새로 접해보는 기회가 되었으며, 실습때 도다른 프로세스를 조합할 것 이다. |