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

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

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

簡単な説明

.ebextensions という Elastic Beanstalk 設定ファイルを使用すると、Elastic Beanstalk 環境内のすべての Amazon EC2 インスタンスで実行される cron ジョブを作成できます。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