Elastic Beanstalk 환경의 Amazon EC2 인스턴스에서 Cron 작업을 생성하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 4월 6일

기존 AWS Elastic Beanstalk 환경의 모든 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 사용자 지정 스크립트를 실행하는 Cron 작업을 생성하려고 합니다.

간략한 설명

Elastic Beanstalk 구성 파일(.ebextensions)을 사용하여 Elastic Beanstalk 환경의 모든 Amazon EC2 인스턴스에서 실행되는 Cron 작업을 생성할 수 있습니다. Elastic Beanstalk 애플리케이션 zip 파일에서 .ebextensions라는 이름의 디렉터리를 생성합니다. zip 파일에는 애플리케이션이 Amazon EC2 인스턴스에 배포되었을 때 실행되는 구성 파일이 포함됩니다.

참고: 다음 해결 방안의 단계에서는 Elastic Beanstalk 환경의 모든 Amazon EC2 인스턴스에서 동시에 실행되는 Cron 작업을 추가합니다. 인스턴스 하나에서만 실행되는 정기적 태스크는 웹 환경을 위한 cron-leaderonly-linux.config 파일을 사용하는 것이 좋습니다. 전용 작업자 환경을 사용하는 경우, 정기적 태스크를 사용하는 것이 좋습니다.

해결 방법

구성 파일 생성 또는 업데이트

cron-linux.config 파일에는 filescommands라는 두 가지의 키가 있습니다.

files 키는 Elastic Beanstalk 인스턴스의 myscript.sh 파일 위치와 필요한 파일 권한을 지정합니다. commands 키는 인스턴스에서 실행되는 명령 목록을 지정합니다.

AWS GitHub 리포지토리에서 cron-linux.config 템플릿을 다운로드합니다.

--또는--

다음 예시를 바탕으로 구성 파일을 생성하거나 업데이트합니다.

files:
    "/etc/cron.d/mycron":
        mode: "000644"
        owner: root
        group: root
        content: |
            * * * * * root /usr/local/bin/myscript.sh

    "/usr/local/bin/myscript.sh":
        mode: "000755"
        owner: root
        group: root
        content: |
            #!/bin/bash

            date > /tmp/date
            # Your actual script content

            exit 0

commands:
    remove_old_cron:
        command: "rm -f /etc/cron.d/mycron.bak"

참고: 구성 파일의 이름을 지정할 때 .ebextensions 디렉터리의 여러 구성 파일은 파일 이름의 알파벳 순서대로 실행되는 점을 고려하십시오. 구성 파일의 이름은 cron-linux.config로 지정할 수 있습니다.

cron-linux.config 파일은 1분마다 스크립트를 실행하도록 구성된 /etc/cron.d/mycron이라는 이름의 Cron 파일을 생성합니다. myscript.sh 스크립트는 날짜를 출력하고, 실행되고 나면 종료됩니다. 배포 중에 cron-linux.config가 적용될 때마다 /etc/cron.d/mycron 파일의 백업이 생성되는데, 이름은 /etc/cron.d/mycron.bak입니다. cron-linux.config의 마지막 명령이 /etc/cron.d/mycron.bak을 제거하여 /etc/cron.d 디렉터리를 정리합니다.

.ebextensions를 사용하는 환경을 사용자 지정하기 위한 자세한 내용은 구성 파일(.ebextensions)로 고급 환경 사용자 지정을 참조하십시오.

애플리케이션 소스 번들 생성

웹 애플리케이션의 애플리케이션 소스 코드에 구성 파일을 추가하려면 다음 단계를 완료하십시오.

1.    애플리케이션 폴더의 루트에서 .ebextensions라는 이름의 디렉터리를 생성합니다.

2.    생성하거나 업데이트한 cron-linux.config 파일을 .ebextensions 폴더로 이동합니다.

3.    새 구성 파일을 포함하여 애플리케이션 파일의 zip 폴더를 생성합니다.

다음 예시에서는 애플리케이션 zip 파일에 있는 .ebextensions 디렉터리와 cron-linux.config 파일의 구조를 보여줍니다.

|-- .ebextensions
|        |-- cron-linux.config 
|        |-- other .config files
|-- other application files