我想要建立一個 Cron 任務,在所有 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行自訂指令碼。Amazon EC2 執行個體位於現有的 AWS Elastic Beanstalk 環境中。
簡短說明
使用 Elastic Beanstalk 組態檔案 (稱為 .ebextensions) 來建立在 Elastic Beanstalk 環境中的所有 Amazon EC2 執行個體上執行的 Cron 任務。在 Elastic Beanstalk 應用程式 zip 檔案中,建立名為 .ebextensions 的目錄。zip 檔案包含將應用程式部署至 Amazon EC2 執行個體時執行的組態檔案。
**注意:**範例中的步驟是在 Elastic Beanstalk 環境中的所有 Amazon EC2 執行個體上同時執行的 Cron 任務。如果您只要在一個執行個體上執行定期任務,請為 Web 環境使用 cron-leaderonly-linux.config 檔案。若要使用 cron-leaderonly-linux-config 檔案,請參閱 GitHub 網站上的 cron-leaderonly-linux.config。如果您有專屬工作者環境,請使用定期任務。
解決方案
建立或更新您的組態檔案
cron-linux.config 檔案中有兩個索引鍵:files 和 commands。files 索引鍵指定 Elastic Beanstalk 執行個體上的 mycron 和 myscript.sh 等 Cron 檔案位置和必要的檔案權限。commands 索引鍵指定要在執行個體上執行的命令清單。從 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 檔案會建立名為 /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 目錄並移除 /etc/cron.d/mycron.bak。如需詳細資訊,請參閱使用組態檔案 (.ebextensions) 進行進階環境自訂。
建立應用程式來源套件組合
若要將組態檔案新增至 Web 應用程式的應用程式原始程式碼,請完成以下步驟:
- 在應用程式資料夾的根目錄中,建立名為 .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 伺服器上自訂軟體