如何在 Elastic Beanstalk 环境中在 Amazon EC2 实例上创建 cron 任务?

2 分钟阅读
0

我想创建一个在所有 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 文件中有两个键:filescommandsfiles 键指定了 Elastic Beanstalk 实例上的具有所需文件权限的 cron 文件 mycronmyscript.sh 的位置。commands 键指定要在实例上运行的命令列表。从 AWS 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.bakcron-linux.config 中的最后一个命令清理 /etc/cron.d 目录并删除 /etc/cron.d/mycron.bak。有关更多信息,请参阅使用配置文件 (.ebextensions) 进行高级环境自定义

创建应用程序源包

要将配置文件添加到 Web 应用程序的应用程序源代码中,请完成以下步骤:

  1. 在应用程序文件夹的根目录中,创建一个名为 .ebextensions 的目录。
  2. 将您创建或更新的 cron-linux.config 文件移动到 .ebextensions 文件夹。
  3. 为应用程序文件创建一个 zip 文件夹,并添加这个新的配置文件。

此示例显示了应用程序 zip 文件中 .ebextensions 目录的结构和 cron-linux.config 文件:

|-- .ebextensions|        |-- cron-linux.config
|        |-- other .config files
|-- other application files

相关信息

配置 Elastic Beanstalk 环境

自定义 Linux 服务器上的软件

自定义 Windows Server 上的软件

AWS 官方
AWS 官方已更新 8 个月前