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
'AWS' 카테고리의 다른 글
[AWS] EC2 Linux 서버 한국표준시간으로 변경하기 (0) | 2021.03.10 |
---|---|
[AWS] Lightsail 서버에 접근 IP 설정하기 (0) | 2021.03.09 |
[AWS] S3 권한 설정 하기 (IAM) (0) | 2021.03.09 |
[AWS] EB(Elastic Beanstalk) 에 SSH로 접속하기 (0) | 2021.03.04 |
[AWS] EB(Elastic Beanstalk)에서 Log 파일 작성 시 퍼미션 오류 날때 (0) | 2021.03.03 |