AWS

[AWS] crontab을 활용하여 S3로 로그 백업하기 (Elastic Beanstalk)

먹세 2021. 3. 26. 15:01

.ebextensions/06-setup-crontab.config

파일 생성 후 아래와 같이 작성 & 배포 한다.

commands:
  01_create_post_dir:
    command: mkdir /opt/elasticbeanstalk/hooks/appdeploy/post
    ignoreErrors: true
 
  02_crontab_setup:
    command: sudo bash -c 'cat <(crontab -l) <(echo "*/20 * * * * sudo sh /opt/elasticbeanstalk/hooks/appdeploy/post/03-run-script.sh") | crontab -'

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/03-run-script.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
      #! /bin/bash
      aws s3 cp /var/app/current/storage/logs s3://s3domain.com/logs/`date +%F`/$(hostname -s)/ --recursive

 

03-run-script.sh 파일을 생성하고 logs 파일들을 s3로 복사해서 업로드 시키는 코드를 작성한다.

02_crontab_setup 은 20분마다 03-run-script.sh 를 실행시키는 작업을 crontab에 한줄로 등록한다.

 

elastic beanstalk 에서 load balancer 사용중이라서

배포시 머신이 변경될 때 마다 s3/logs 폴더 안에 날짜별로 해당 머신의 로그파일들을 올릴수 있게 했다.

 

위처럼 load balancer로 EC2 머신 4개 운영 시 각각의 머신 hostname 별로 저장된다.

반응형