본문 바로가기
Skills/DevOps

#2 AWS Elastic Beanstalk 기반 CI/CD 블루그린 배포 - Procfile, .ebextensions

by Hoseok 2023. 5. 22.
728x90
반응형

 

AWS Elastic Beanstalk

 

Procfile

웹 애플리케이션을 실행하기 위한 명령어를 정의하는 파일. 

Procfile은 프로세스 형식으로 작성한다.

<프로세스 유형>: <명령어>


<프로세스 유형>

실행하려는 프로세스의 유형.


<명령어>

해당 프로세스를 실행하기 위한 명령어.


장점: 애플리케이션의 각 프로세스를 독립적으로 관리, 실행이 가능하다.

 

* Procfile은 애플리케이션의 루트 디렉토리에 위치해야 한다.

 

Procfile 코드:

springapp: appstart

 

 

.ebextensions

 

https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/ebextensions.html

 

구성 파일(.ebextensions)을 사용하여 고급 환경 사용자 지정 - AWS Elastic Beanstalk

새 구성 파일을 개발하거나 테스트할 때 기본 애플리케이션을 실행하는 정리된 환경을 시작하고 여기에 배포합니다. 구성 파일의 형식을 잘못 지정하면 새 환경 시작이 복구 불가능하게 실패할

docs.aws.amazon.com

 

.ebextensions는 AWS Elastic Beanstalk에서 환경 구성을 위해 사용되는 파일이다.

 

구성파일은 .config 파일 확장명의 yaml 파일으로 구성하면 된다.

 

숫자-이름.config 형태의 파일로 만들면 되고,

 

AWS Elastic Beanstalk가 파일을 읽는 순서는 숫자, 문자 순 정렬로 읽게 되며,

 

파일 이름은 정해진 형식이 없으므로, 임의로 지으면 된다.

 

요구사항 정리

 

1. 모든 구성 파일은 애플리케이션의 루트 디렉토리에 .ebextensions라는 단일 폴더에 저장한다.

 

2. 구성 파일의 확장명은 .config 이여야 한다.

 

3. 구성 파일은 yaml이나 json 형태를 따라야 한다.

 

4. 각 구성 파일에는 각 키를 한 번만 사용해야 한다. 

 

 

* 자세한 예시는 아래의 공식 문서 레파지토리를 참조하면 된다.

https://github.com/awsdocs/elastic-beanstalk-samples/tree/master/configuration-files

 

00-makeFiles.config 코드:

files:
    "/sbin/appstart":
        mode: "000755"
        owner: webapp
        group: webapp
        content: |
            #!/usr/bin/env bash
            JAR_PATH=/var/app/current/application.jar

            # run app
            java -Dspring.profiles.active=prod -Dfile.encoding=UTF-8 -jar $JAR_PATH

 

.config 파일은 설정 파일이므로, root 권한이 아닌 사용자 권한으로 실행된다.

 

즉, .config 파일 내에서 권한이 필요한 명령어를 직접 실행하는 것은 불가능하다.

 

그러므로, files 옵션을 사용해서 root 권한으로 실행되는 파일을 생성하고, 해당 파일을 hooks 내에서 실행하여

 

명령어를 수행하는 방식을 사용하게 된다.

 

sbin은 root 권한을 가진 사용자만 이용할 수 있는 디렉토리를 의미한다.

 

mode

 

mode는 000755 이므로

 

소유자에게 읽기(4), 쓰기(2), 실행(1) 권한.

그룹에게 읽기(4), 실행(1) 권한.

기타 사용자에게 읽기(4), 실행(1) 권한.

 

을 의미한다.

 

content

 

/sbin/appstart 파일에 쓰여질 내용을 정의하는 부분이다.

 

| 는 Multiline Block Scalar라고 하는데, yaml 파일에서 여러 줄로 이어지는 값을 나타내는 문법.

| 를 통해 여러 줄로 구성된 스크립트를 작성할 수 있다.

 

application-prod.yml파일, UTF-8 인코딩, $JAR_PATH 경로의 JAR 파일을 실행한다는 내용을 담고 있다.

 

 

728x90
반응형