AWS Elastic Beanstalk每当失败时都没有文件或目录/ var / app / ondeck

时间:2017-03-24 05:52:00

标签: ruby-on-rails amazon-web-services cron elastic-beanstalk whenever

我试图添加每当gem运行ElasticBeanstalk并在eb-activity.log中收到此错误时停止我的部署。

Test for Command cron_01_set_leader 
Activity execution failed, because: [Errno 2] No such file or directory: 
'/var/app/ondeck' (ElasticBeanstalk::ExternalInvocationError)

我有点迷失为什么我无法进入'/ var / app / ondeck'或为什么文件夹var / app / ondeck还不存在。

当我进入我的EC2实例时,我可以确认没有ondeck文件夹 ls /var/app/仅显示current。我的猜测虽然是EB删除ondeck文件夹一旦上传到当前。

这是我的cron.config设置

#.ebextensions/cron.config
 files:
  /opt/elasticbeanstalk/hooks/appdeploy/post/10_reload_cron.sh:
    mode: "00700"
    owner: root
    group: root
    content: |
      #!/usr/bin/env bash
      . /opt/elasticbeanstalk/support/envvars
      cd $EB_CONFIG_APP_CURRENT
      bundle exec setup_cron
container_commands:
  cron_01_set_leader:
    test: test ! -f /opt/elasticbeanstalk/support/.cron-setup-complete
    cwd: /var/app/ondeck
    command: bundle exec create_cron_leader --no-update
    leader_only: true
  cron_02_write_cron_setup_complete_file:
    cwd: /opt/elasticbeanstalk/support
    command: touch .cron-setup-complete

这可能是权限问题,我该如何进一步调试此问题?

1 个答案:

答案 0 :(得分:2)

容器命令的默认目录始终是应用程序的暂存目录,因此您不需要使用cwd:指令设置工作目录。我的Node.js应用程序有一个暂存目录,例如/ tmp / deployment / application。

这应该可以解决问题:

container_commands:
  cron_01_set_leader:
    test: test ! -f /opt/elasticbeanstalk/support/.cron-setup-complete
    command: bundle exec create_cron_leader --no-update
    leader_only: true
  cron_02_write_cron_setup_complete_file:
    cwd: /opt/elasticbeanstalk/support
    command: touch .cron-setup-complete