Ich habe einen einfachen Python-Webdienst mit WSGI entwickelt und möchte ihn mit Elastic Beanstalk in der AWS-Cloud bereitstellen. Mein Problem ist, dass ich nicht alle Optionen, die ich in der Elastic Beanstalk-Konfiguration angegeben habe, so einstellen kann, dass sie in der Cloud korrekt konfiguriert sind.
Für die Bereitstellung verwende ich das Dienstprogramm Elastic Beanstalk CLI. Ich habe eb init
Befehl ausgeführt und die erforderlichen Parameter eingerichtet. Danach .elasticbeanstalk
wurde in meinem Quellbaum ein Verzeichnis mit dem Namen erstellt. Es verfügt über zwei Konfigurationsdateien, die für die Bereitstellung verwendet werden, nämlich config
und optionsettings
. Die letztere unter den anderen Optionen enthält die WSGI-Konfiguration, die /etc/httpd/conf.d/wsgi.conf
an den Instanzen aktualisiert werden muss. Nach einigen meiner Anpassungen hat die Datei die folgenden Einstellungen:
[aws: elastischer Bohnenstiel: Anwendung: Umwelt] DJANGO_SETTINGS_MODULE = PARAM1 = PARAM2 = PARAM4 = PARAM3 = PARAM5 = [aws: elastischer Bohnenstiel: Behälter: Python] WSGIPath = handler.py NumProcesses = 2 StaticFiles = / static = NumThreads = 10 [aws: elasticbeanstalk: container: python: staticfiles] / static = static / [aws: elasticbeanstalk: hostmanager] LogPublicationControl = false [aws: autoscaling: launchconfiguration] InstanceType = t1.micro EC2KeyName = zmicier-aws [aws: elastischer Bohnenstiel: Anwendung] Application Healthcheck URL = [aws: autoscaling: asg] MaxSize = 10 MinSize = 1 Benutzerdefinierte Verfügbarkeitszonen = [aws: elastischer Bohnenstiel: Überwachung] Ungesunde Instanzen automatisch beenden = true [aws: elastischer Bohnenstiel: sns: Themen] Benachrichtigungsendpunkt = Benachrichtigungsprotokoll = E-Mail
Es stellt sich heraus, dass nicht alle diese Optionen berücksichtigt werden, wenn ich die Umgebung starte oder aktualisiere. Wenn ich also aktualisiere NumThreads
oder NumProcesses
, werden die jeweiligen Parameter wsgi.conf
wie erwartet geändert . Aber was auch immer ich in die WSGIPath
und StaticFiles
-Parameter schreibe , ich kann die jeweiligen Werte von nicht automatisch ändern wsgi.conf
, sie bleiben
Alias /static /opt/python/current/app/
WSGIScriptAlias / /opt/python/current/app/application.py
das macht mich verrückt. Wenn ich meine Anwendung mit git aws.push
und mit den folgenden .ebextensions/python.config
Dateiinhalten bereitstelle , wirkt sich keine der darin angegebenen Optionen auf die Bereitstellung aus.
option_settings: - Namespace: aws: elastischer Bohnenstiel: Container: Python Optionsname: WSGIPath Wert: mysite / wsgi.py - Namespace: aws: elastischer Bohnenstiel: Container: Python Optionsname: NumProcesses Wert: 5 - Namespace: aws: elastischer Bohnenstiel: Container: Python Optionsname: NumThreads Wert: 25 - Namespace: aws: elasticbeanstalk: container: python: staticfiles Optionsname: / static / Wert: app / static /
Ich frage mich, was ich tun soll, um AWS zu zwingen, alle in der Konfiguration angegebenen Parameter zu verwenden, nämlich den WSGI-Pfad und den Pfad zu meinen statischen Daten.