我想创建一个在所有 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 任务。如果您的定期任务只能在一个实例上运行,请使用适用于 Web 环境的 cron-leaderonly-linux.config 文件。要使用 cron-leaderonly-linux.config 文件,请参阅 GitHub 网站上的 cron-leaderonly-linux.config。如果您有专门的工作环境,请使用定期任务。
解决方案
创建或更新您的配置文件
cron-linux.config 文件中有两个键:files 和 commands。files 键指定了 Elastic Beanstalk 实例上的具有所需文件权限的 cron 文件 mycron 和 myscript.sh 的位置。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 Server 上的软件