Я пытаюсь развернуть рабочую среду elasticbeanstalk для своего laravel приложения, используя бит eb cli, сталкивающийся с той же проблемой, что и этот вопрос (извинения, я не смог проголосовать за или прокомментировать). Я выполнил пошаговые инструкции по использованию пакета laravel - aws -dusterio. После создания новой рабочей среды (eb create -t worker) я столкнулся с этой ошибкой развертывания:
2020-07-12 12:36:31 ОШИБКА [Экземпляр: i-xxxxxxx] Команда не удалась на экземпляре. Произошла непредвиденная ошибка [ErrorCode: 0000000001]. 2020-07-12 12:36:31 INFO Выполнение команды завершено для всех экземпляров. Сводка: [Успешно: 0, Неудачно: 1]. 2020-07-12 12:37:34 ERROR Операция создания среды завершена, но с ошибками. Дополнительную информацию см. В документации по устранению неполадок.
При проверке журналов я обнаружил следующее:
init: initializing aws-sqsd 3.0.1 (2020-03-30)
init: Failed of parsing file 'cron.yaml', because: key not found: "cron" (AWS::EB::SQSD::ScheduleParser::ScheduleFileError)
at /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/schedule_parser.rb:99:in `rescue in v1_parser'
...
вызвано: key not found: "cron" (KeyError)
Файл cron.yaml помещается в основную папку / root проекта и имеет следующий вид:
version: 1
cron:
- name: "schedule"
url: "/worker/schedule"
schedule: "* * * * *"
Если я удалю cron.yaml, развертывание будет успешным, однако рабочий не получит задания, отправленные от демона sqs. Веб-приложение работает правильно и может ставить задания в очередь. Я могу ввести sh в экземпляр ec2, но не уверен, что могу сделать для устранения неполадок.
Я действительно изо всех сил пытаюсь исправить эту проблему. Спасибо за вашу помощь.
EDIT Пытаясь изолировать проблему, я создал простое приложение hello world с файлом cron.yaml. Это содержимое индекса. php
index.php
<?php echo("hello world"); ?>
Это содержимое cron.yaml
version: 1
cron:
- name: "schedule"
url: "/worker/schedule"
schedule: "* * * * *"
Шаг 1: разверните приложение eb create testworker-dev приложение успешно создано eb create -t worker приложение развернуто, но выдает ту же ошибку, что и перед синтаксическим анализом cron.yaml
init: initializing aws-sqsd 3.0.1 (2020-03-30)
2020-07-12T23:34:04Z init: Failed of parsing file 'cron.yaml', because: key not found: "cron" (AWS::EB::SQSD::ScheduleParser::ScheduleFileError)
at /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/schedule_parser.rb:99:in `rescue in v1_parser'
...
caused by: key not found: "cron" (KeyError)
at /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/schedule_parser.rb:82:in `fetch'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/schedule_parser.rb:82:in `v1_parser'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/schedule_parser.rb:59:in `load_schedule'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/schedule_parser.rb:131:in `load_schedule'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/cron.rb:26:in `initialize'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/daemon.rb:47:in `new'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/lib/aws-sqsd/daemon.rb:47:in `initialize'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/bin/aws-sqsd:34:in `new'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/bin/aws-sqsd:34:in `start'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/bin/aws-sqsd:83:in `launch'
from /opt/elasticbeanstalk/lib/ruby/lib/ruby/gems/2.6.0/gems/aws-sqsd-3.0.1/bin/aws-sqsd:111:in `<top (required)>'
from /opt/elasticbeanstalk/lib/ruby/bin/aws-sqsd:23:in `load'
from /opt/elasticbeanstalk/lib/ruby/bin/aws-sqsd:23:in `<main>'
Таким образом, проблема, похоже, не в самом коде приложения. aws -sqs выдает ошибку при синтаксическом анализе cron.yaml.