すべての Amazon Elastic Compute Cloud (Amazon EC2) インスタンスでカスタムスクリプトを実行する cron ジョブを作成したいと考えています。Amazon EC2 インスタンスは既存の AWS Elastic Beanstalk 環境にあります。
簡単な説明
.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-leaderonly-linux-config ファイルを使用するには、GitHub ウェブサイトの cron-leaderonly-linux.config を参照してください。専用のワーカー環境がある場合は、定期的なタスクを使用してください。
解決策
設定ファイルを作成または更新する
cron-linux.config ファイルには、files と commands の 2 つのキーがあります。files キーは、必要なファイル権限を持つ Elastic Beanstalk インスタンス上の cron ファイル (mycron と myscript.sh) の場所を指定します。commands キーは、インスタンスで実行するコマンドのリストを指定します。cron-linux.config テンプレートは、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 ファイルを作成し、1 分ごとにスクリプトを実行するように設定されています。myscript.sh スクリプトは日付を出力し、実行時に終了します。デプロイ中に cron-linux.config が適用されるたびに /etc/cron.d/mycron ファイルのバックアップが作成され、その名前は /etc/cron.d/mycron.bak になります。cron-linux.config の最後のコマンドは /etc/cron.d ディレクトリをクリーンアップし、/etc/cron.d/mycron.bak を削除します。詳細については、「設定ファイル (.ebextensions) による高度な環境カスタマイズ」を参照してください。
アプリケーションソースバンドルの作成
ウェブアプリケーションのアプリケーションソースコードに設定ファイルを追加するには、次の手順を実行します。
- アプリケーションフォルダのルートに、.ebextensions という名前のディレクトリを作成します。
- 作成または更新した cron-linux.config ファイルを .ebextensions フォルダに移動します。
- アプリケーションファイル用の ZIP フォルダを作成し、新しい設定ファイルを含めます。
次の例は、アプリケーション ZIP ファイル内の .ebextensions ディレクトリと cron-linux.config ファイルの構造を示しています。
~/my-app/
|-- .ebextensions/
| |-- cron-linux.config
| `-- other.config
|-- other application files
関連情報
Elastic Beanstalk 環境の設定
Linux サーバー上のソフトウェアをカスタマイズする
Windows サーバ上のソフトウェアをカスタマイズする