Verwenden der Elastic Beanstalk-Ruby-Plattform - AWS Elastic Beanstalk

Verwenden der Elastic Beanstalk-Ruby-Plattform

Bei der Ruby-Plattform von AWS Elastic Beanstalk handelt es sich um eine Reihe von Umgebungskonfigurationen für Ruby-Webanwendungen, die hinter einem nginx-Proxy-Server unter einem Puma-Anwendungsserver ausgeführt werden können. Jede Plattformvariante entspricht einer Version von Ruby.

Wenn Sie RubyGems verwenden, können Sie durch das Einbinden einer Gemfile-Datei in das Quell-Bundle die Pakete während der Bereitstellung installieren.

Ihre Anwendung läuft möglicherweise unter einem anderen Anwendungsserver, z. B. Passenger. Sie können eine Procfile-Datei verwenden, um einen anderen Anwendungsserver zu starten, und eine, Gemfile-Datei, um ihn zu installieren. Details hierzu finden Sie unter Konfigurieren der Anwendung mit einer Procfile-Datei.

Anmerkung

Wenn Sie eine Amazon Linux AMI-Ruby-Plattformversion (vor Amazon Linux 2) verwenden, beachten Sie bitte, dass Elastic Beanstalk zwei Varianten dieser Versionen anbietet – mit Puma und mit Passenger. Wenn die Anwendung den Passenger-Anwendungsserver benötigt, können Sie die entsprechende Passenger-Plattformversion verwenden und müssen keine zusätzliche Konfiguration vornehmen.

Elastic Beanstalk bietet Konfigurationsoptionen, mit denen sich die auf den Amazon Elastic Compute Cloud (Amazon EC2)-Instances in der Elastic Beanstalk-Umgebung ausgeführte Software anpassen lässt. Sie können die für Ihre Anwendung erforderlichen Umgebungsvariablen konfigurieren, die Protokollrotation an Amazon S3 aktivieren und die Ordner in der Anwendungsquelle, die statische Dateien enthalten, den vom Proxy-Server verwendeten Pfaden zuordnen. Die Plattform verfügt auch über einige allgemeine Umgebungsvariablen für Rails und Rack, die eine einfache Erkennung und Nutzung ermöglichen.

In der Elastic Beanstalk-Konsole sind Konfigurationsoptionen für das Ändern der Konfiguration einer ausgeführten Umgebung verfügbar. Um zu verhindern, dass die Umgebungskonfiguration beim Beenden verloren geht, können Sie gespeicherte Konfigurationen verwenden, um Ihre Einstellungen zu speichern und sie später für eine andere Umgebung zu übernehmen.

Zum Speichern der Einstellungen im Quellcode können Sie Konfigurationsdateien einschließen. Die Einstellungen in Konfigurationsdateien werden jedes Mal verwendet, wenn Sie eine Umgebung erstellen oder Ihre Anwendung bereitstellen. Mit Konfigurationsdateien können Sie auch Pakete installieren, Skripts ausführen und andere Instance-Anpassungen bei Bereitstellungen vornehmen.

Die in der Elastic Beanstalk-Konsole angewendeten Einstellungen überschreiben die entsprechenden Einstellungen in Konfigurationsdateien, wenn vorhanden. So sind Standardeinstellungen in Konfigurationsdateien möglich, die Sie mit umgebungsspezifischen Einstellungen in der Konsole überschreiben können. Für weitere Informationen zur Rangfolge und zu anderen Methoden zum Ändern der Einstellungen siehe Konfigurationsoptionen.

Details zu den verschiedenen Möglichkeiten für das Erweitern einer Linux-basierten Elastic Beanstalk-Plattform finden Sie unter Erweitern von Elastic Beanstalk-Linux-Plattformen.

Konfigurieren Ihrer Ruby-Umgebung

Mit der Elastic Beanstalk-Konsole können Sie die Protokollrotation für Amazon S3 aktivieren und Variablen konfigurieren, die die Anwendung in der Umgebung lesen kann.

So greifen Sie auf die Softwarekonfigurationseinstellungen für die Umgebung zu

  1. Öffnen Sie die Elastic-Beanstalk-Konsole und wählen Sie in der Liste Regions (Regionen) Ihre AWS-Region aus.

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

  3. Wählen Sie im Navigationsbereich Configuration (Konfiguration) aus.

  4. Wählen Sie in der Software-Konfigurationskategorie Edit (Bearbeiten) aus.

Protokolloptionen

Im Abschnitt Log options (Protokolloptionen) sind zwei Einstellungen vorhanden:

  • Instance profile (Instance-Profil) – Gibt das Instance-Profil an, das zum Zugriff auf den entsprechenden Amazon S3-Bucket der Anwendung berechtigt ist.

  • Enable log file rotation to Amazon S3 (Protokolldateirotation für Amazon S3 aktivieren) – Gibt an, ob die Protokolldateien für die Amazon EC2-Instances der Anwendung in den der Anwendung zugeordneten Amazon S3-Bucket kopiert werden sollen.

Statische Dateien

Um die Leistung zu verbessern, können Sie im Abschnitt Static files (Statische Dateien) den Proxy-Server so konfigurieren, dass er statische Dateien (z. B. HTML oder Bilder) aus Verzeichnissen innerhalb Ihrer Webanwendung bereitstellt. Legen Sie für jedes Verzeichnis den virtuellen Pfad zum Verzeichnis-Mapping fest. Wenn der Proxy-Server eine Anfrage nach einer Datei unter dem angegebenen Pfad erhält, stellt er die Datei direkt bereit, anstatt die Anfrage an Ihre Anwendung weiterzuleiten.

Weitere Informationen zum Konfigurieren statischer Dateien mit der Elastic Beanstalk-Konsole finden Sie unter Bereitstellen von statischen Dateien.

Standardmäßig ist der Proxy-Server in einer Ruby-Umgebung so konfiguriert, dass er statische Dateien wie folgt bereitstellt:

  • Dateien impublic-Ordner werden vom /public-Pfad und vom Domänenstamm bedient (/-Pfad).

  • Dateien impublic/assetsUnterordner werden vom /assets-Pfad bedient.

Die Funktionsweise wird anhand der Funktionsweise der Standardkonfiguration deutlich:

  • Wenn beispielsweise die Anwendungsquelle eine Datei mit dem Namen logo.png im Ordner public enthält, leitet der Proxy-Server sie von subdomain.elasticbeanstalk.com/public/logo.png und subdomain.elasticbeanstalk.com/logo.png an die Benutzer weiter.

  • Wenn beispielsweise die Anwendungsquelle eine Datei mit dem Namen logo.png assets im public-Ordner enthält, leitet der Proxy-Server sie von subdomain.elasticbeanstalk.com/assets/logo.png weiter.

Sie können zusätzliche Zuordnungen für statische Dateien konfigurieren. Weitere Informationen finden Sie unter Namespaces der Ruby-Konfigurationen an späterer Stelle in diesem Thema.

Anmerkung

Bei Plattformversionen vor Rubin 2.7 AL2 Version 3.3.7 unterstützt die standardmäßige Elastic Beanstalk nginx-Proxy-Server-Konfiguration das Bereitstellen statischer Dateien aus dem Domänenstamm (subdomain.elasticbeanstalk.com/) nicht. Diese Plattformversion wurde am 21. Oktober 2021 veröffentlicht. Weitere Informationen finden Sie unter Neue Plattformversionen - Ruby in den AWS Elastic BeanstalkVersionshinweisen.

Umgebungseigenschaften

Im Bereich Environment Properties (Umgebungseigenschaften) können Sie die Einstellungen für die Umgebungskonfiguration der Amazon EC2-Instances angeben, auf denen die Anwendung ausgeführt wird. Umgebungseigenschaften werden als Schlüssel/Wert-Paare an die Anwendung weitergeleitet.

Die Ruby-Plattform definiert folgende Eigenschaften für die Umgebungskonfiguration:

  • BUNDLE_WITHOUT – Eine durch Doppelpunkt getrennte Liste mit Gruppen, die bei der Installation von Abhängigkeiten aus einer Gemfile-Datei ignoriert werden sollen.

  • BUNDLER_DEPLOYMENT_MODE – Auf true gesetzt (Standardeinstellung), um Abhängigkeiten im Bereitstellungsmodus mit Bundler zu installieren. Auf false gesetzt, um die bundle install im Entwicklungsmodus auszuführen.

    Anmerkung

    Diese Umgebungseigenschaft ist in den Versionen der Amazon Linux AMI Ruby-Plattform (Vorgänger von Amazon Linux 2) nicht definiert.

  • RAILS_SKIP_ASSET_COMPILATION – Setzen Sie den Wert auf true, damit rake assets:precompile während der Bereitstellung nicht ausgeführt wird.

  • RAILS_SKIP_MIGRATIONS – Setzen Sie den Wert auf true, damit rake db:migrate während der Bereitstellung nicht ausgeführt wird.

  • RACK_ENV – Geben Sie die Umgebungsphase für Rack an. Beispiel: development, production oder test.

Innerhalb der Ruby-Umgebung, die in Elastic Beanstalk ausgeführt wird, können Sie über das Objekt ENV auf Umgebungsvariablen zugreifen. Beispielsweise können Sie mit folgendem Code eine Eigenschaft mit dem Namen API_ENDPOINT als Variable lesen:

endpoint = ENV['API_ENDPOINT']

Weitere Informationen finden Sie unter Umgebungseigenschaften und andere Softwareeinstellungen.

Namespaces der Ruby-Konfigurationen

Mithilfe einer Konfigurationsdatei können Sie im Rahmen der Bereitstellung Konfigurationsoptionen festlegen und andere Instance-Konfigurationsaufgaben durchführen. Konfigurationsoptionen können durch den Elastic Beanstalk-Service oder die verwendete Plattform definiert und in Namespaces organisiert werden.

Sie können mithilfe des Namespace aws:elasticbeanstalk:environment:proxy:staticfiles den Umgebungsproxy so konfigurieren, dass statische Dateien bereitgestellt werden. Sie definieren Zuordnungen von virtuellen Pfaden zu Anwendungsverzeichnissen.

Die Ruby-Plattform definiert keine plattformspezifischen Namespaces. Stattdessen werden Umgebungseigenschaften für häufig verwendete Rails- und Rack-Optionen definiert.

Die folgende Konfigurationsdatei gibt eine Option für statische Dateien an, mit der das Verzeichnis staticimages dem Pfad /images zuordnet wird und die einzelnen plattformdefinierten Umgebungseigenschaften und eine zusätzliche Umgebungseigenschaft mit dem Namen LOGGING festlegt werden.

Beispiel .ebextensions/ruby-settings.config

option_settings: aws:elasticbeanstalk:environment:proxy:staticfiles: /images: staticimages aws:elasticbeanstalk:application:environment: BUNDLE_WITHOUT: test BUNDLER_DEPLOYMENT_MODE: true RACK_ENV: development RAILS_SKIP_ASSET_COMPILATION: true RAILS_SKIP_MIGRATIONS: true LOGGING: debug
Anmerkung

Die Umgebungseigenschaft BUNDLER_DEPLOYMENT_MODE und der Namespace aws:elasticbeanstalk:environment:proxy:staticfiles sind auf Amazon Linux AMI Ruby-Plattformvarianten (Vorgänger von Amazon Linux 2) nicht definiert.

Elastic Beanstalk bietet zahlreiche Konfigurationsoptionen für die Anpassung Ihrer Umgebung. Neben den Konfigurationsdateien können Sie die Konfigurationsoptionen auch unter Verwendung der Konsole, gespeicherter Konfigurationen, der EB CLI oder der AWS CLI einrichten. Weitere Informationen finden Sie unter Konfigurationsoptionen.