2015-02-05 96 views
0

我有我与弹性青苗应用程序,我需要创建一个运行轨道你可以用Amazon SQS运行cronjob吗?

rake "sitemap:generate" 

任务一个cronjob,我不知道如果我能与Amazon SQS做到这一点,任何人都知道该怎么做?

我试图做一个crontab,但它不能在豆茎工作...

files: 
    "/tmp/cron_job.sh": 
    mode: "000777" 
    content: | 
     #!/usr/bin/env bash 
     */2 * * * * cd /var/app/current/ && RACK_ENV=production bundle exec rake sitemap:generate 
    encoding: plain 


container_commands: 
    01_delete_cron_jobs: 
    command: "crontab -r -u ec2-user || exit 0" 
    02_add_cron_jobs: 
    command: "crontab /tmp/cron_job.sh -u ec2-user" 
    leader_only: true 

是否有另一种方式来做到在弹性魔豆一个cronjob?

谢谢。

回答

1

您可以按如下方式在Elastic Beanstalk的crontab中运行rake任务。

  • 您可能需要访问配置文件中设置的配置。如果将以下内容放入像generate_map.sh这样的shell脚本中,它将包含您的应用程序正在使用的配置(这可能对您的应用程序过度)。将此脚本文件放入应用程序的根目录中。

    #!/bin/bash 
    source /etc/profile 
    cd /var/app/current 
    rake sitemap:generate 
    
  • 把你想要在一个文本文件(如file_with_cron_commands.txt)在.ebextensions目录项目运行的cronjob。例如,如果您希望您的任务每分钟运行一次,该文件将包含下面的行。 请确保在文本文件的末尾留出空白行。

    * * * * * root cd /var/app/current ; sh generate_map.sh 
    
  • 在你的config文件,使用容器命令将其复制到适当的cron标签目录,并在其上设置权限。

    container_commands: 
        01_run_my_gen_map_cron: 
        command: "cat .ebextensions/file_with_cron_commands.txt > /etc/cron.d/my_genmap_cron && chmod 644 /etc/cron.d/my_genmap_cron"