Plattform-Skript-Tools - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Plattform-Skript-Tools

In diesem Thema werden Tools beschrieben, die AWS Elastic Beanstalk für Umgebungen bereitstellt, die Amazon-Linux-Plattformen verwenden. Die Tools befinden sich in den Amazon EC2-Instances der Elastic Beanstalk-Umgebungen.

get-config

Verwenden Sie das Tool get-config, um Umgebungsvariablenwerte und andere Plattform- und Instance-Informationen abzurufen. Das Tool steht unter /opt/elasticbeanstalk/bin/get-config zur Verfügung.

get-config-Befehle

Jeder get-config-Tool-Befehl gibt einen bestimmten Typ von Informationen zurück. Verwenden Sie die folgende Syntax, um einen der Befehle des Tools auszuführen.

$ /opt/elasticbeanstalk/bin/get-config command [ options ]

Im folgenden Beispiel wird der Befehl environment ausgeführt:

$ /opt/elasticbeanstalk/bin/get-config environment -k PORT

Abhängig von dem gewählten Befehl und den gewählten Optionen gibt das Tool ein Objekt (JSON oder YAML) mit Schlüssel-Wert-Paaren oder einem einzelnen Wert zurück.

Sie können get-config testen, indem Sie SSH verwenden, um eine Verbindung zu einer EC2-Instance in Ihrer Elastic Beanstalk-Umgebung herzustellen.

Anmerkung

Wenn Sie get-config zum Testen ausführen, benötigen einige Befehle möglicherweise Stammbenutzerrechte, um auf die zugrunde liegenden Informationen zuzugreifen. Wenn Sie einen Zugriffsberechtigungsfehler erhalten, führen Sie den Befehl unter sudo erneut aus.

Sie müssen sudo nicht hinzufügen, wenn Sie das Tool in den Skripts verwenden, die Sie in Ihrer Umgebung bereitstellen. Elastic Beanstalk führt alle Ihre Skripte als Stammbenutzer aus.

In den folgenden Abschnitten werden die Befehle des Tools beschrieben.

Der Befehl get-config optionsettings gibt ein Objekt zurück, das die Konfigurationsoptionen auflistet, die für die Umgebung festgelegt und von der Plattform auf Umgebungs-Instances verwendet werden. Sie sind nach Namespace organisiert.

$ /opt/elasticbeanstalk/bin/get-config optionsettings {"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}

Um einen bestimmten Wert für die Konfigurationsoption zurückzugeben, verwenden Sie die Option --namespace (-n), um einen Namespace anzugeben, und die Option --option-name (-o), um einen Optionsnamen anzugeben.

$ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o memory_limit 256M

Der Befehl get-config environment gibt ein Objekt zurück, das eine Liste der Umgebungseigenschaften enthält. Dazu gehören sowohl benutzerkonfigurierte als auch die von Elastic Beanstalk bereitgestellten Eigenschaften.

$ /opt/elasticbeanstalk/bin/get-config environment {"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}

Beispielsweise bietet Elastic Beanstalk Umgebungseigenschaften, mit denen die Verbindung zu einer integrierten Amazon RDS-DB-Instance (zum Beispiel RDS_HOSTNAME) hergestellt werden kann. Diese RDS-Verbindungseigenschaften werden in der Ausgabe von get-config environment angezeigt. Sie werden jedoch nicht in der Ausgabe von get-config optionsettingsangezeigt. Dies liegt daran, dass sie in Konfigurationsoptionen nicht festgelegt wurden.

Wenn Sie eine bestimmte Umgebungseigenschaft zurückzugeben möchten, verwenden Sie die Option --key (-k), um einen Eigenschaftsschlüssel anzugeben.

$ /opt/elasticbeanstalk/bin/get-config environment -k TESTPROPERTY testvalue

Der Befehl get-config container gibt ein Objekt zurück, das Plattform- und Umgebungskonfigurationswerte für Umgebungs-Instances auflistet.

Das folgende Beispiel zeigt die Ausgabe des Befehls in einer Amazon Linux 2-Tomcat-Umgebung.

$ /opt/elasticbeanstalk/bin/get-config container {"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}

Um den Wert eines bestimmten Schlüssels zurückzugeben, verwenden Sie die Option --key (-k), um den Schlüssel anzugeben.

$ /opt/elasticbeanstalk/bin/get-config container -k environment_name myenv-1da84946

Der Befehl get-config addons gibt ein Objekt zurück, das Konfigurationsinformationen von Umgebungs-Add-Ons enthält. Verwenden Sie ihn, um die Konfiguration einer Amazon RDS-Datenbank abzurufen, die der Umgebung zugeordnet ist.

$ /opt/elasticbeanstalk/bin/get-config addons {"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}

Sie können das Ergebnis auf zwei Arten einschränken. Um Werte für ein bestimmtes Add-On abzurufen, geben Sie mit der Option --add-on (-a) den Namen des Add-On an.

$ /opt/elasticbeanstalk/bin/get-config addons -a rds {"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}

Um den Wert eines bestimmten Schlüssels in einem Add-On zurückzugeben, fügen Sie die Option --key (-k) hinzu, um den Schlüssel anzugeben.

$ /opt/elasticbeanstalk/bin/get-config addons -a rds -k RDS_DB_NAME ebdb

Der Befehl get-config platformconfig gibt ein Objekt zurück, das Plattformkonfigurationsinformationen enthält, die mit der Plattformversion konstant sind. Die Ausgabe ist in allen Umgebungen, in denen dieselbe Plattformversion ausgeführt wird, gleich. Das Ausgabeobjekt des Befehls verfügt über zwei eingebettete Objekte:

  • GeneralConfig – Enthält Informationen, die in den neuesten Versionen aller Amazon-Linux-2- und Amazon-Linux-2023-Plattformzweige konstant sind.

  • PlatformSpecificConfig – Enthält Informationen, die für die Plattformversion konstant sind und für diese spezifisch sind.

Das folgende Beispiel zeigt die Ausgabe des Befehls in einer Umgebung, die den Corretto 11-Plattformzweig Tomcat 8.5 verwendet.

$ /opt/elasticbeanstalk/bin/get-config platformconfig {"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}

Um den Wert eines bestimmten Schlüssels zurückzugeben, verwenden Sie die Option --key (-k), um den Schlüssel anzugeben. Diese Schlüssel sind in den beiden eingebetteten Objekten eindeutig. Sie müssen das Objekt, das den Schlüssel enthält, nicht angeben.

$ /opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir /var/app/staging/

get-config-Ausgabeoptionen

Verwenden Sie die Option --output, um das Format des Ausgabeobjekts anzugeben. Gültige Werte sind JSON (Standard) und YAML. Dies ist eine globale Option. Sie müssen es vor dem Befehlsnamen angeben.

Im folgenden Beispiel werden Werte für Konfigurationsoptionen im YAML-Format zurückgegeben.

$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings aws:elasticbeanstalk:application:environment: JDBC_CONNECTION_STRING: "" aws:elasticbeanstalk:container:tomcat:jvmoptions: JVM Options: "" Xms: 256m Xmx: 256m aws:elasticbeanstalk:environment:proxy: ProxyServer: nginx StaticFiles: - "" aws:elasticbeanstalk:healthreporting:system: SystemType: enhanced aws:elasticbeanstalk:hostmanager: LogPublicationControl: "false"

Pkg-Repo

Anmerkung

Das pkg-repo-Tool ist nicht für Umgebungen verfügbar, die auf Amazon-Linux-2023-Plattformen basieren. Sie können Paket- und Betriebssystem-Updates jedoch manuell auf eine AL2023-Instance anwenden. Weitere Informationen finden Sie unter Verwalten von Paketen und Betriebssystem-Updates im Benutzerhandbuch für Amazon Linux 2023

Unter bestimmten dringenden Umständen müssen Sie Ihre Amazon EC2-Instances möglicherweise mit einem Amazon Linux 2-Sicherheitspatch aktualisieren, der noch nicht mit den erforderlichen Elastic-Beanstalk-Plattformversionen veröffentlicht wurde. Sie können standardmäßig keine manuelle Aktualisierung für Ihre Elastic-Beanstalk-Umgebungen durchführen. Dies liegt daran, dass die Plattformversionen an eine bestimmte Version des Amazon Linux 2-Repositorys gesperrt sind. Diese Sperre stellt sicher, dass Instances unterstützte und konsistente Softwareversionen ausführen. Für dringende Fälle erlaubt das Tool pkg-repo eine Problemumgehung. Sie können Yum-Pakete in Amazon Linux 2 manuell aktualisieren, wenn Sie es in einer Umgebung installieren müssen, bevor es in einer neuen Elastic-Beanstalk-Plattformversion veröffentlicht wird.

Das Tool pkg-repo der Amazon Linux 2-Plattformen bietet die Möglichkeit, die yum Paket-Repositorys zu entsperren. Sie können dann manuell eine yum update für einen Sicherheitspatch durchführen. Umgekehrt können Sie der Aktualisierung folgen, indem Sie das Tool verwenden, um die Yum-Paket-Repositorys zu sperren, um weitere Aktualisierungen zu verhindern. Das Tool pkg-repo steht im /opt/elasticbeanstalk/bin/pkg-repo-Verzeichnis aller EC2-Instances in Ihren Elastic-Beanstalk-Umgebungen zur Verfügung.

Änderungen unter Verwendung des Tools pkg-repo werden nur in der EC2-Instance vorgenommen, in der das Tool verwendet wird. Sie wirken sich nicht auf andere Instances aus und verhindern nicht zukünftige Aktualisierungen der Umgebung. Die Beispiele später in diesem Thema erklären, wie Sie die Änderungen auf alle Instances anwenden können, indem Sie die pkg-repo-Befehle aus Skripts und Konfigurationsdateien verwenden.

Warnung

Wir empfehlen dieses Tool für die meistenBenutzer. Alle manuellen Änderungen, die auf eine Version der freigeschalteten Plattform angewendet werden, gelten als Out-of-Band. Diese Option ist nur für Benutzer unter dringenden Umständen geeignet, die die folgenden Risiken akzeptieren können:

  • Für Paketversionen können nicht garantiert werden, dass sie über alle Instances hinweg in Ihren Umgebungen konsistent sind.

  • Wir empfehlen das Tool pkg-repo für die meisten Benutzer. Sie wurden nicht auf Elastic Beanstalk unterstützten Plattformen getestet und überprüft.

Wir empfehlen dringend, Best Practices anzuwenden, die Test- und Backout-Pläne beinhalten. Um Best Practices zu erleichtern,Sie können mit der Elastic Beanstalk-Konsole und der EB CLI eine Umgebung klonen und Umgebungs-URLs austauschen. Weitere Informationen zur Verwendung dieser Vorgänge finden Sie unter BluBlue/Green-Bereitstellungen im Kapitel Managing environments (Verwalten von Umgebungen) in diesem Handbuch.

Wenn Sie vorhaben, Yum-Repository-Konfigurationsdateien manuell zu bearbeiten, führen Sie zuerst das Tool pkg-repo aus. Das Tool pkg-repo funktioniert in einer Amazon Linux 2-Umgebung mit manuell bearbeiteten Yum-Repository-Konfigurationsdateien möglicherweise nicht wie vorgesehen. Dies liegt daran, dass das Tool die Konfigurationsänderungen möglicherweise nicht erkennt.

Weitere Informationen über das Amazon Linux-Paket-Repository finden Sie unterPaket-Repository-Thema imAmazon EC2-Benutzerhandbuch für Linux-Instancesaus.

pkg-repo-Befehle

Verwenden Sie die folgende Syntax, um einen der Befehle des Tools pkg-repo auszuführen.

$ /opt/elasticbeanstalk/bin/pkg-repo command [options]

Folgende pkg-repo-Befehle müssen ausgeführt werden:

  • lock— Sperrt das yum-Paketrepositorys für eine bestimmte Version

  • unlock— Entsperrt das yum-Paketrepositorys aus einer bestimmten Version

  • status— Listet alle yum-Paket-Repositorys und ihren aktuellen Sperrstatus auf

  • help— Zeigt allgemeine Hilfe oder Hilfe für einen Befehl an

Die Optionen gelten für die folgenden Befehle:

  • lock, unlock und status — Optionen: -h, --helpoder keine (Standard).

  • help — Optionen: lock, unlock, status oder keine (Standard).

Im folgenden Beispiel wird der Befehl unlock ausgeführt:

$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock Amazon Linux 2 core package repo successfully unlocked Amazon Linux 2 extras package repo successfully unlocked

Im folgenden Beispiel wird der Befehl lock ausgeführt:

$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock Amazon Linux 2 core package repo successfully locked Amazon Linux 2 extras package repo successfully locked

Im folgenden Beispiel wird der Befehl status ausgeführt:

$ sudo /opt/elasticbeanstalk/bin/pkg-repo status Amazon Linux 2 core package repo is currently UNLOCKED Amazon Linux 2 extras package repo is currently UNLOCKED

Im folgenden Beispiel wird der help-Befehl für den lock-Befehl ausgeführt.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock

Im folgenden Beispiel wird der help-Befehl für das Tool pkg-repo ausgeführt.

$ sudo /opt/elasticbeanstalk/bin/pkg-repo help

Sie können pkg-repo testen, indem Sie SSH verwenden, um eine Verbindung zu einer Instance in Ihrer Elastic Beanstalk-Umgebung herzustellen. Eine SSH-Option ist der EB CLI eb ssh Befehl.

Anmerkung

Die Tool pkg-repo benötigt zum Ausführen Stammbenutzer-Berechtigungen. Wenn Sie einen Zugriffsberechtigungsfehler erhalten, führen Sie den Befehl unter sudo erneut aus.

Sie müssen sudo nicht hinzufügen, wenn Sie das Tool in den Skripts verwenden, die Sie in Ihrer Umgebung bereitstellen. Elastic Beanstalk führt alle Ihre Skripte als Stammbenutzer aus.

Beispiele für pkg-repo

Der vorherige Abschnitt enthält Befehlszeilenbeispiele zum Testen einer einzelnen EC2-Instance einer Elastic-Beanstalk-Umgebung. Diese Vorgehensweise kann beim Testen hilfreich sein. Es aktualisiert jedoch jeweils nur eine Instance, daher ist es nicht praktisch, Änderungen an allen Instances in einer Umgebung anzuwenden.

Ein pragmatischerer Ansatz ist die Verwendung von Plattform-Hook-Skripten oder einer .ebextensions Konfigurationsdatei, um die Änderungen auf alle Instances konsistent anzuwenden.

Im folgenden Beispiel wird pkg-repo aus einer Konfigurationsdatei im .ebextensions-Folder aufgerufen. Elastic Beanstalk führt die Befehle in der update_package.config-Datei aus, wenn Sie das Quell-Bundle der Anwendung bereitstellen.

.ebextensions └── update_package.config

Um die neueste Version des Docker-Pakets zu erhalten, gibt diese Konfiguration das Docker-Paket im yum update-Befehl an.

### update_package.config ### commands: update_package: command: | /opt/elasticbeanstalk/bin/pkg-repo unlock yum update docker -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

Bei dieser Konfiguration werden keine Pakete im yum update-Befehl angegeben. Alle verfügbaren Updates werden als Ergebnis angewendet.

### update_package.config ### commands: update_package: command: | /opt/elasticbeanstalk/bin/pkg-repo unlock yum update -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

Das folgende Beispiel ruft pkg-repo von einem Bash-Skript als Plattform-Hook auf. Elastic Beanstalk führt die update_package.sh-Skriptdatei aus, die sich in dem Unterverzeichnis prebuild befindet.

.platform └── hooks └── prebuild └── update_package.sh

Um die neueste Version des Docker-Pakets zu erhalten, gibt dieses Skript das Docker-Paket im yum update-Befehl an. Wenn der Paketname ausgelassen wird, werden alle verfügbaren Updates angewendet. Das vorherige Beispiel der Konfigurationsdatei zeigt dies.

### update_package.sh ### #!/bin/bash /opt/elasticbeanstalk/bin/pkg-repo unlock yum update docker -y /opt/elasticbeanstalk/bin/pkg-repo lock yum clean all -y rm -rf /var/cache/yum

download-source-bundle (nur Amazon Linux AMI)

Auf Amazon Linux AMI-Plattformbranchen (Vorgänger von Amazon Linux 2) bietet Elastic Beanstalk ein zusätzliches Tool, download-source-bundle. Verwenden Sie dieses, um den Quellcode Ihrer Anwendung während der Bereitstellung Ihrer Plattform herunterzuladen. Das Tool steht unter /opt/elasticbeanstalk/bin/download-source-bundle zur Verfügung.

Das Beispielskript 00-unzip.sh befindet sich auf Umgebungs-Instances im Ordner appdeploy/pre. Es demonstriert, wie download-source-bundle verwendet wird, um den Anwendungsquellcode während der Bereitstellung in den Ordner /opt/elasticbeanstalk/deploy/appsource herunterzuladen.