GitHub Actions에서 Elastic Beanstalk에 배포할 때 환경 변수를 설정하는 방법에는 $GITHUB_ENV
방식과 직접 Elastic Beanstalk 환경에 설정하는 방식이 있다. 이 두 방식이 어떻게 다른지, 그리고 어떤 상황에 어떤 방법이 좋은지 알아보자.
1. $GITHUB_ENV
파일에 저장하는 방식
먼저 $GITHUB_ENV
파일에 환경 변수를 저장하는 방식이다. GitHub Actions에서 echo
로 환경 변수를 $GITHUB_ENV
에 추가해두면, 이후 단계에서 바로 사용할 수 있다. 예를 들면:
- name: Set environment variables
run: |
echo "DB_URL=${{ secrets.DB_URL }}" >> $GITHUB_ENV
echo "DB_ID=${{ secrets.DB_ID }}" >> $GITHUB_ENV
이러면 GitHub Actions 워크플로우 안에서는 DB_URL
같은 변수를 참조할 수 있는데, 문제는 이 방식이 배포 후 실제 애플리케이션(Spring 등)에는 적용이 안 된다는 점이다. GitHub Actions 내부에서만 쓸 수 있는 거라, Spring 애플리케이션에서는 이 변수를 못 읽는다.
2. Elastic Beanstalk 환경에 직접 설정하는 방식
이 방식은 AWS CLI를 써서 Elastic Beanstalk 환경에 환경 변수를 직접 설정하는 것이다. 이렇게 설정하면 애플리케이션이 배포된 후에도 Spring이 바로 환경 변수를 읽을 수 있다.
- name: Update Elastic Beanstalk Environment Variables
run: |
aws elasticbeanstalk update-environment \
--application-name ShoppingMall \
--environment-name test-env \
--option-settings Namespace=aws:elasticbeanstalk:application:environment,OptionName=DB_URL,Value=${{ secrets.DB_URL }}
이렇게 하면 Elastic Beanstalk에 배포된 Spring 애플리케이션이 DB_URL
같은 환경 변수를 인식하고 가져와서 쓸 수 있다. 그래서 실제 애플리케이션에서 환경 변수를 써야 하는 경우에는 이 방법을 사용해야 한다.
요약
두 방식의 차이점 비교
항목 | $GITHUB_ENV 파일에 저장 |
Elastic Beanstalk 환경 변수 설정 |
---|---|---|
환경 변수 접근 가능 범위 | GitHub Actions 내부에서만 사용 가능 | Elastic Beanstalk 환경에서 직접 접근 가능 |
Spring 애플리케이션에서 인식 여부 | 인식되지 않음 | 인식 가능 |
설정 방식 | GitHub Actions $GITHUB_ENV에 기록 | AWS CLI로 Elastic Beanstalk 환경에 직접 설정 |
주로 사용되는 경우 | CI/CD 파이프라인 내부 작업에서만 필요할 때 | 애플리케이션 실행 환경에서 직접 참조할 때 필요 |
$GITHUB\_ENV
방식: GitHub Actions 내부에서만 환경 변수 사용 가능. Spring에서는 인식 안 됨.- Elastic Beanstalk에 직접 설정: Elastic Beanstalk 환경에서 바로 환경 변수 읽음. Spring에서도 바로 인식 가능.
결론적으로, Spring 애플리케이션이 Elastic Beanstalk에서 환경 변수를 쓰려면, AWS CLI로 환경 변수를 직접 설정하는 게 답이다. $GITHUB_ENV
방식은 CI/CD 파이프라인 안에서만 쓰고 끝낼 변수가 있을 때 적합하다.
'WIL > 웹 개발' 카테고리의 다른 글
프로토타입과 클래스 (0) | 2024.12.11 |
---|---|
WAI-ARIA: Role과 Aria-Label이란? (1) | 2024.11.19 |
Spring Boot 3 애플리케이션을 AWS Elastic Beanstalk에 배포했을 때의 Bad Gateway 문제 해결 과정 (2) | 2024.10.31 |
2024년 10월 1일 이후 Github Action과 AWS Beanstalk를 사용한 CI/CD (1) | 2024.10.29 |
JwtFilter는 어디에 배치해야 할까? (0) | 2024.10.19 |