2015-02-05 92 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"