AWS Beanstalk - рабочая среда не обрабатывает фоновые задания после принудительного изменения конфигурации SSL в nginx - PullRequest
0 голосов
/ 08 мая 2018

Я работаю над приложением Ruby on Rails, и оно развернуто на AWS Beanstalk . У моего приложения Beanstalk есть две среды:

- Web Env
  - config:
    - Ruby 2.4.3
    - Rails 5.1.4
    - Puma as App server
    - Nginx as Web Server
    - Uses active_elastic_job

- Worker Env
  - config:
    - Ruby 2.4.3
    - Rails 5.1.4
    - Puma as App server
    - Nginx as Web server
    - Uses Amazon - SQS
    - Uses active_elastic_job

Оба Envs используют один и тот же репо / кодовую базу, и мое приложение было полностью настроено.

На прошлой неделе я узнал, что мое приложение не принудительно перенаправляет на https. Хотя я смог получить доступ к своему сайту с помощью https, но при доступе через http или при прямом доступе через доменное имя я не перенаправил меня на защищенный сайт.

Я сталкивался с этой ссылкой https://gist.github.com/petelacey/e35c98f9a35063a89fa9 и после развертывания этого файла с помощью .ebextensions в Web Env теперь я могу перенаправить на https --- До здесь нет проблем

Но когда я попытался развернуть ту же Работающую версию на моем Worker Env , мои фоновые задания перестали работать

Чтобы устранить это, я ssh ввел в мою рабочую среду и проверил следующие файлы:

/var/log/nginx/error.log - Ничего подозрительного не найдено

/var/log/puma/puma.log - Ничего подозрительного не найдено

/var/log/aws-sqsd/default.log - я вижу много http-err

/var/log/amazon/ssm/errors.log

2018-05-08 11:28:19 ERROR [HandleAwsError @ awserr.go.48] [instanceID=i-YYYYYYYYYY] [MessagingDeliveryService] [Association] error when calling AWS APIs. error details - AccessDeniedException: User: arn:aws:sts::XXXXXXXXXX:assumed-role/role/i-YYYYYYYYYY is not authorized to perform: ssm:ListInstanceAssociations on resource: arn:aws:ec2:us-east-1:XXXXXXXXXX:instance/i-YYYYYYYYYY
  status code: 400, request id: 4395976a-c594-4286-a0d5-d5e7d2eb2eb8
2018-05-08 11:28:19 ERROR [HandleAwsError @ awserr.go.48] [instanceID=i-YYYYYYYYYY] [MessagingDeliveryService] [Association] error when calling AWS APIs. error details - AccessDeniedException: User: arn:aws:sts::XXXXXXXXXX:assumed-role/aws-elasticbeanstalk-ec2-role/i-YYYYYYYYYY is not authorized to perform: ssm:ListAssociations on resource: arn:aws:ssm:us-east-1:XXXXXXXXXX:*
  status code: 400, request id: d4a45576-3d66-4d2f-8144-bcfffd2933d7
2018-05-08 11:28:19 ERROR [ProcessAssociation @ processor.go.157] [instanceID=i-YYYYYYYYYY] [MessagingDeliveryService] [Association] Unable to load instance associations, unable to retrieve associations unable to retrieve associations AccessDeniedException: User: arn:aws:sts::XXXXXXXXXX:assumed-role/aws-elasticbeanstalk-ec2-role/i-YYYYYYYYYY is not authorized to perform: ssm:ListAssociations on resource: arn:aws:ssm:us-east-1:XXXXXXXXXX:*
  status code: 400, request id: d4a45576-3d66-4d2f-8144-bcfffd2933d7

До проката этого прокси-файла nginx все работало нормально. Я не уверен, что я сделал не так?

Две вещи, которые я пытаюсь немедленно:

  1. Переопределить /etc/nginx/conf.d/proxy.conf в моем рабочем env вручную с помощью старого файла proxy.conf, который у меня есть.
  2. Перезапустите nginx, чтобы увидеть, вернулись ли задания к нормальной работе

Но несколько моментов, на которые я хотел бы указать:

  1. Оба ENV не должны использовать одну и ту же версию Running?
  2. Если мой вышеуказанный подход работает, это означает, что у меня будет 2 разных прокси-файла на разных ENV. В будущем, если я разверну на своем рабочем ENV, он переопределит пользовательский. Можно ли это пропустить?

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 08 мая 2018

Я получил решение для этого.Мой друг сказал мне, чтобы обработать это следующим образом:

ШАГ: 1 внутри config/environments/production.rb

изменить config.force_ssl = true на config.force_ssl = 'web'.eql?(ENV.fetch('EB_ENV', 'web'))

ШАГ: 2 Определите EB_ENV переменную среды как web для Web ENV или worker / как хотите для Рабочий ENV

Спасибо друг!Очень ценится.

...