Не найден ключ cron.yaml "cron" при развертывании простого приложения hello world - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь развернуть рабочую среду 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.

...