перекрестная ссылка на форумы AWS
Я разработал простой веб-сервис Python с использованием WSGI и хотел бы развернуть его в облаке AWS с помощью Elastic Beanstalk. Моя проблема в том, что я не могу сделать все параметры, указанные в конфигурации Elastic Beanstalk, правильно настроенными в облаке.
Для развертывания я использую Elastic Beanstalk CLI. Я выполнил eb init
команду и настроил необходимые параметры. После этого .elasticbeanstalk
в моем исходном дереве был создан каталог с именем . Он имеет два файла конфигурации, которые используются для развертывания, а именно config
и optionsettings
. Последний из других параметров содержит конфигурацию WSGI, которая должна обновляться /etc/httpd/conf.d/wsgi.conf
в экземплярах. После некоторых моих настроек файл имеет следующие настройки:
[AWS: elasticbeanstalk: применение: окружающая среда] DJANGO_SETTINGS_MODULE = PARAM1 = PARAM2 = PARAM4 = PARAM3 = PARAM5 = [AWS: elasticbeanstalk: Контейнер: Python] WSGIPath = handler.py NumProcesses = 2 StaticFiles = / static = NumThreads = 10 [AWS: elasticbeanstalk: Контейнер: Python: staticfiles] / статический = статический / [AWS: elasticbeanstalk: hostmanager] LogPublicationControl = false [AWS: автомасштабирование: launchconfiguration] InstanceType = t1.micro EC2KeyName = zmicier-aws [AWS: elasticbeanstalk: применение] URL проверки работоспособности приложения = [AWS: автомасштабирование: ASG] MaxSize = 10 MinSize = 1 Пользовательские зоны доступности = [AWS: elasticbeanstalk: мониторинг] Автоматически завершить нездоровые экземпляры = true [AWS: elasticbeanstalk: SNS: темы] Конечная точка уведомления = Протокол уведомлений = электронная почта
Оказывается, что не все эти параметры рассматриваются, когда я запускаю среду или обновляю ее. Таким образом, когда я обновляю NumThreads
или NumProcesses
, соответствующие параметры изменяются в wsgi.conf
соответствии с ожиданиями. Но все , что я пишу в WSGIPath
и StaticFiles
параметры, я не в состоянии автоматически изменить соответствующие значения wsgi.conf
, они остаются
Alias /static /opt/python/current/app/
WSGIScriptAlias / /opt/python/current/app/application.py
что сводит меня с ума. Более того, когда я развертываю свое приложение, используя git aws.push
и имея следующее содержимое .ebextensions/python.config
файла, ни один из указанных в нем параметров не влияет на развертывание.
option_settings: - пространство имен: aws: эластичный стебель: контейнер: python имя_опции: WSGIPath значение: mysite / wsgi.py - пространство имен: aws: эластичный стебель: контейнер: python имя_опции: NumProcesses значение: 5 - пространство имен: aws: эластичный стебель: контейнер: python имя_опции: NumThreads значение: 25 - namespace: aws :asticbeanstalk: контейнер: python: статические файлы имя_опции: / статический / значение: приложение / статическое /
Интересно, что мне нужно сделать, чтобы AWS использовал все параметры, которые я указал в конфигурации, а именно: путь WSGI и путь к моим статическим данным.
источник
Ответы:
Возможно, вы захотите взглянуть на создание контейнера Docker и его развертывание в Elastic Beanstalk. У AWS есть образец Python для этого по адресу https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/docker-singlecontainer-deploy.html#docker-singlecontainer-pythonsample и полное репозиторий github по адресу https: // github.com/aws-samples/eb-py-flask-signup/tree/docker
Это будет намного проще для локального тестирования, и у вас будет гораздо больше гибкости. Мое эмпирическое правило заключается в том, что, как только я потрачу время на борьбу со структурой, которая должна сделать мою жизнь проще, наступает время менять подход. Я бы сказал, что вы достигли этой точки.
Это также облегчит миграцию вашего приложения на что-то вроде Fargate в будущем.
источник
Рассмотрите возможность использования .ebextensions, документированных на:
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
Вы можете использовать
file:
для предоставления вашего файла конфигурации по мере необходимости на экземпляре хоста. А затем перезагрузите / перезагрузите, в случае необходимости, сcommand:
источник