Команда Laravel возвращает другой вывод при выполнении Cron на AWS EC2 - PullRequest
0 голосов
/ 17 сентября 2018

У меня проблемы с заданиями cron в экземпляре EC2 в среде Elastic Beanstalk.

Когда я подключаюсь к экземпляру EC2 и набираю php artisan command:backup_logs с терминала, задание выполняется гладко и все работает как надо. Хотя, когда задание проходит через cron * * * * * /usr/bin/php /var/app/current/artisan command:backup_logs, в журналах возвращается следующая ошибка:

[2018-09-17 16:14:01] production.ERROR: Missing required client configuration options:

region: (string)

  A "region" configuration value is required for the "s3" service

  (e.g., "us-west-2"). A list of available public regions and endpoints can be
  found at http://docs.aws.amazon.com/general/latest/gr/rande.html. {"exception":"[object] (InvalidArgumentException(code: 0): Missing required client configuration options:

region: (string)

  A \"region\" configuration value is required for the \"s3\" service
  (e.g., \"us-west-2\"). A list of available public regions and endpoints can be
  found at http://docs.aws.amazon.com/general/latest/gr/rande.html. at /var/app/current/vendor/aws/aws-sdk-php/src/ClientResolver.php:371)
[stacktrace]
#0 /var/app/current/vendor/aws/aws-sdk-php/src/ClientResolver.php(267): Aws\\ClientResolver->throwRequired(Array)
#1 /var/app/current/vendor/aws/aws-sdk-php/src/AwsClient.php(158): Aws\\ClientResolver->resolve(Array, Object(Aws\\HandlerList))
#2 /var/app/current/vendor/aws/aws-sdk-php/src/S3/S3Client.php(261): Aws\\AwsClient->__construct(Array)
#3 /var/app/current/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php(208): Aws\\S3\\S3Client->__construct(Array)
#4 /var/app/current/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemManager.php(125): Illuminate\\Filesystem\\FilesystemManager->createS3Driver(Array)
........

выдает ошибку PRODUCTION на laravel.log, в то время как DEVELOPMENT, и искомое значение уже установлено. Как я упоминал ранее, загрузка работает нормально, когда я запускаю ее из терминала как зарегистрированный пользователь.

У меня та же проблема со всеми командами, а также, когда я хочу выполнить задания по расписанию, возникает та же ошибка.

Кто-нибудь, кто может пролить свет, пожалуйста? Большое спасибо!

Решение

Чтобы это исправить, просто создайте файл конфигурации в папке .ebextensions и вставьте следующий код YAML:

files:
  "/etc/cron.d/artisan_scheduler":
     mode: "000644"
     owner: root
     group: root
     content: |
       * * * * * ec2-user . $HOME/.bash_profile; php /var/app/current/artisan schedule:run >> /dev/null 2>&1

1 Ответ

0 голосов
/ 18 сентября 2018

Я думаю, что переменные среды S3 SDK как-то установлены для вашего текущего пользователя оболочки, из которой вы запускаете команду кустарного мастера (когда она работает нормально).Вам нужно либо проверить нужные env-переменные и добавить к ним команду cron, либо вы можете попытаться загрузить существующие переменные пользователя в команду cron.

Наиболее популярным решением, похоже, является this вопрос и предлагает вам добавить команду cron:

. $HOME/.profile;

...