2015-02-05 1 views
0

У меня есть приложение с эластичным Beanstalk и мне нужно создать cronjob, что выполнить задачу в рельсахМожете ли вы запустить cronjob с Amazon SQS?

rake "sitemap:generate" 

и мне интересно, если я могу сделать это с Amazon SQS, кто-нибудь знает, как это сделать?

Я пытался сделать кронтаб, но он не работает в Beanstalk ...

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 в Elastic Beanstalk?

спасибо.

ответ

1

Вы можете выполнить задачу рейка в crontab в Elastic Beanstalk следующим образом.

  • Возможно, вам потребуется доступ к настройкам, установленным в вашем профиле. Если вы поместите следующее в сценарий оболочки, такой как generate_map.sh, он будет включать конфигурацию, используемую вашим приложением (это может быть излишним для вашего приложения). Поместите этот файл сценария в корень вашего приложения.

    #!/bin/bash 
    source /etc/profile 
    cd /var/app/current 
    rake sitemap:generate 
    
  • Поместите cronjob вы хотите запустить в текстовый файл (например, file_with_cron_commands.txt) в вашем проекте в каталоге .ebextensions. Например, если вы хотите, чтобы ваша задача выполнялась каждую минуту, этот файл будет содержать следующую строку. Не забудьте оставить пустую строку в конце текстового файла.

    * * * * * root cd /var/app/current ; sh generate_map.sh 
    
  • В файле .config, используйте команду контейнер, чтобы скопировать его в соответствующий каталог вкладки хрон и установить права доступа на него.

    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"