AWS Elastic Beanstalk
elastic beanstalk 는 docker와 kubernetes 가 합해진 존재 정도로 보면 될 듯. 조금 다른 점이 있다면, docker 는 스스로 container 라는 가상환경을 만들어서 설정하지만, elastic beanstalk 는 그 가상환경이 우리가 아는 ec2 등 aws 의 service 들인 것이다.
참고로 docker 를 beanstalk environment 에 넣을 수도 있다.
Configuring Elastic Beanstalk environments (advanced)
application source code 에 .ebextensions 폴더를 이용해서 environment 에 대한 설정을 할 수 있다.
.ebextensions
은 AWS Elastic Beanstalk configuration files
YAML
또는JSON
포맷이다.- 설정값들은 Configuration options - AWS Elastic Beanstalk 를 참고 하자.
sections
option_settings
section : Configuration options - AWS Elastic Beanstalk- Resources section
- Adding and customizing Elastic Beanstalk environment resources - AWS Elastic Beanstalk
- application 의 환경에 있는 리소스들을 커스터마이징 할 수 있게 해준다.
- 기타 section들
- server 가 launch 될때마다, Ealstic Beanstalk 는 이 section 들에 있는 명령들을 수행해서 os 나 storage 등을 준비하게 된다.
- 주로 사용하는 예제들: elastic-beanstalk-samples/configuration-files at master · awsdocs/elastic-beanstalk-samples · GitHub
- 종류
- packages: Customizing software on Linux servers - package
- sources: Customizing software on Linux servers - sources
- files: Customizing software on Linux servers - files
- users: Customizing software on Linux servers - users
- groups: Customizing software on Linux servers - groups
- commands:
- Customizing software on Linux servers - commands
- ec2 intance에서 실행된다.
- 실행시점: deploy 되기전 시점
- application 과 web server 가 setup 되기 전에, 그리고 application version file 이 추출되기 전에 실행된다.
- 실행권한 : root
- 실행순서 : command 이름의 알파벳 순서
- 실행 path: 기본적으로 root directory 에서 실행된다. 다른 directory 에서 실행할 때는
cwd
를 사용해서 working directory 를 변경하자. eb deploy
를 할 때 같이 실행된다. 이 때 주의할 것은 .config 를 변경하고 commit 을 해야 반영이 된다는 사실이다.eb ssh
로 접속 후tail -f /var/log/cfn-init-cmd.log
를 통해 설치하는 동안 log 를 확인할 수 있다.
- container_commands
- Customizing software on Linux servers - container_commands
- application source code 에 영향을 준다.
- 실행시점
- deployment process 의 뒷부분에 실행
- application과 web server 가 set up 되고, application version archive 가 추출된후, application version 이 deploy 되기 전에 실행된다.(즉 code 는 staging folder 에 upacked 되고, 최종 folder 로 복사되기 직전[ref. 1]) 그래서 application 이 배포되면, 같이 있어야 할 파일 같은 것들을 넣을때 등에 사용가능하다.
- 그래서 server 가 provision 되거나, update 될 때마다 실행된다.
leander_only
option : 한번 만 실행하게 해준다. db migrate 등 한번만 필요한 명령어에 사용하면 된다.test
option :if
문 처럼 특정 조건에서 command 를 실행하게 해준다.
commands: 11install_supervisor: test : '[ ! /etc/supervisor ] && echo "supervisor not installed" command: "pip install supervisor" ...
- 실행권한 : root
- 실행순서 : command 이름의 알파벳 순서
- 실행 path : 기본적으로 staging folder 에서 실행된다. 그렇기에 relative path 를 사용할 때는 주의해야 한다.(staging folder 의 file 들이 deploy 시에 final folder 로 옮겨지기 때문이다.)
- troubleshoot : instance logs 에서 error log 등을 확인할 수 있다. (참고: Viewing logs from Amazon EC2 instances in your Elastic Beanstalk environment - AWS Elastic Beanstalk)
- services: Customizing software on Linux servers - services
댓글 없음:
댓글 쓰기