AWS

[AWS] EB(Elastic Beanstalk) .ebextensions 사용하기

먹세 2021. 3. 5. 13:48

EB의 장점 :

- 서버운영 및 인프라에 대해 잘 알지 못하더라도 AWS 클라우드에서 애플리케이션 배포를 손쉽게 할 수 있다.

- 로드밸런싱, 오토스케일링, 애플리케이션 모니터링 등 주요한 여러 기능들을 자동으로 관리 해준다.

 

EB의 단점 :

- 서버 인프라에 익숙한 관리자들에게는 제한적인 관리 요소

- 신규 인프라 구성 및 커스텀에 제한적임

- 이를 커버하기 위해 커스텀을 위한 옵션을 제공하는데, .ebextensions 에 옵션을 작성하는 형태로 제공하고, 옵션을 사용하기 위해 이에 맞는 문법을 익혀야 함

.ebextensions 는 애플리케이션이 배포될때 최초에 실행되는 커맨드라고 이해하면 된다.

 

 

.ebextensions 사용방법

1. 애플리케이션의 최상위(root) 위치에 .ebextensions 폴더 생성

2. 폴더 안에 .config 파일로 옵션들을 작성한다. (숫자와 문자 순 정렬로 읽게되고, 파일이름은 임의로 정하면 된다.)

myapp

  ㄴ .ebextensions

      ㄴ 01-setup-networks.config

      ㄴ 02-setup-nodejs.config

      ㄴ 03-setup-laravel.config

 

위의 형식으로 파일 구성을 만들어준다.

 

.config 예제

commands:
  create_post_dir:
    command: mkdir /opt/elasticbeanstalk/hooks/appdeploy/post
    ignoreErrors: true
    

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/01-run-script.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #! /bin/bash
      cd /var/www/html
      
    
container_commands:
  01_install_modules:
    command: npm install --production
  02_set_ownership:
    command: chown -R root storage bootstrap/cache

위 코드 설명

commands 와 container_commands 의 차이는 실행 시점에서 차이가 있다.

commands는 웹서버가 설정되고 애플리케이션 버전이 추출되기 전에 실행되고,

container_commands 는 웹서버가 설정되고 애플리케이션 버전 아카이브의 압축이 풀린 후에 실행된다.

그러므로 chown 처럼 애플리케이션 파일 소유자 권한 등을 세팅할 때에는 container_commands로 해야 한다.

.config 파일에 sudo chown 형식으로 명령어를 실행하는 것은 불가능하기 때문에 위 처럼 hooks을 사용하여

files 옵션을 사용해서 root 권한의 파일을 생성해준 후 chown 커맨드를 날리는 형식으로 사용해야 한다.

 

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

 

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

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

docs.aws.amazon.com

 

반응형