Elastic Beanstalk 環境にある Amazon EC2 インスタンスに cron ジョブを作成する方法を教えてください。

最終更新日: 2020 年 4 月 6 日

既存の AWS Elastic Beanstalk 環境にあるすべての Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでカスタムスクリプトを実行する cron ジョブを作成したいと考えています。

簡単な説明

Elastic Beanstalk 環境にあるすべての Amazon EC2 インスタンスで実行する cron ジョブの作成には、.ebextensions と呼ばれる、Elastic Beanstalk の設定ファイルを使用します。Elastic Beanstalk アプリケーションの zip ファイル内に .ebextensionsという名前でディレクトリを作成します。この zip ファイルには、Amazon EC2 インスタンスでアプリケーションがデプロイされる際に実行される、設定ファイルが含まれています。

注: 次に示す解決手順では、Elastic Beanstalk 環境にある全ての Amazon EC2 インスタンスで実行する cron ジョブを同時に追加します。定期的に実行するタスクが、1 つのインスタンスのみにある場合は、ウェブ環境用の cron-leaderonly-linux.config ファイルの使用をご検討ください。専用のワーカー環境を使用している場合は、定期的なタスクの使用をご検討ください。

解決方法

設定ファイルの作成または更新を行う

cron-linux.config ファイルには、files および commands の 2 つのキーが記述されます。

files キーでは、Elastic Beanstalk インスタンス上の myscript.sh ファイルの場所と、必要なファイルアクセス権限が定義されます。commands キーでは、インスタンスで実行するコマンドのリストが定義されます。

cron-linux.config のテンプレートは、AWS GitHub リポジトリからダウンロードします。

– または –

次の例に示すように、設定ファイルを作成するか、既存のファイルを更新します。

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 ファイルにより、毎分スクリプトを実行するように定義された /etc/cron.d/mycron という名前の cron ファイルが作成されます。実行された myscript.sh スクリプトは、処理を終了する前に日付を出力します。デプロイ中に cron-linux.config が適用されるたびに、/etc/cron.d/mycron ファイルのバックアップが /etc/cron.d/mycron.bakという名前で作成されます。/etc/cron.d/mycron.bak は、cron-linux.config に記述されている最後のコマンドにより、クリーンアップのため、/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