Я работаю над приложением 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 все работало нормально. Я не уверен, что я сделал не так?
Две вещи, которые я пытаюсь немедленно:
- Переопределить
/etc/nginx/conf.d/proxy.conf
в моем рабочем env вручную с помощью старого файла proxy.conf
, который у меня есть.
- Перезапустите nginx, чтобы увидеть, вернулись ли задания к нормальной работе
Но несколько моментов, на которые я хотел бы указать:
- Оба ENV не должны использовать одну и ту же версию Running?
- Если мой вышеуказанный подход работает, это означает, что у меня будет 2 разных прокси-файла на разных ENV. В будущем, если я разверну на своем рабочем ENV, он переопределит пользовательский. Можно ли это пропустить?
Заранее спасибо за помощь!