Ich führe einen einzelnen Docker Container auf Elastic Beanstalk unter Verwendung seiner Single Container Docker Configuration, und versuche, die Anwendung stdout an CloudWatch mit der awslogs logging driver zu senden.Elastic Beanstalk Einzelner Container Docker - benutze awslogs logging driver
EB sucht nach einer Dockerrun.aws.json-Datei für die Konfiguration des Containers, aber soweit ich sehen kann, gibt es keine Option, um awslogs als Protokolltreiber des Containers zu verwenden (oder andere Flags zum docker run
Befehl für diese Angelegenheit).
Ich habe versucht, das Eindringen in den docker run
Befehl zur Verfügung gestellt, die Antwort mit here, indem Sie eine Datei .ebextensions/01-commands.config
mit Inhalt hinzufügen:
commands:
add_awslogs:
command: 'sudo sed -i "s/docker run -d/docker run --log-driver=awslogs --log-opt awslogs-region=eu-west-2 --log-opt awslogs-group=dockerContainerLogs -d/" /opt/elasticbeanstalk/hooks/appdeploy/enact/00run.sh'
Dies funktioniert, in dem Sinne, dass sie den Lauf Skript ändern und Protokolle zeigen in CloudWatch.
Aber die EB-Anwendung stirbt. Der Container ist aktiv, antwortet jedoch nicht auf Anforderungen.
finde ich den folgenden Fehler in den Container Protokolle:
"Protokolle" Befehl nur für "json-Datei" unterstützt wird, und "journald" logging Treiber (GOT: awslogs)
Ich finde Antworten auf ähnliche Fragen in Bezug auf ECS (nicht EB), die vorschlägt, ECS_AVAILABLE_LOGGING_DRIVERS mit awslogs anzufügen. Aber ich finde diese Konfigurationseinstellung nicht in EB.
Irgendwelche Gedanken?