Schritt 2.5: Bereitstellen einer App - AWS OpsWorks

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.

Schritt 2.5: Bereitstellen einer App

Wichtig

Das Tool AWS OpsWorks Stacks Der Dienst hat am 26. Mai 2024 das Ende seiner Nutzungsdauer erreicht und wurde sowohl für neue als auch für bestehende Kunden deaktiviert. Wir empfehlen Kunden dringend, ihre Workloads so bald wie möglich auf andere Lösungen zu migrieren. Wenn Sie Fragen zur Migration haben, wenden Sie sich an AWS Support Team ein AWS Re:post oder durch AWS Premium-Support.

Bei der IIS Installation wird ein C:\inetpub\wwwroot Verzeichnis für den Code Ihrer Anwendung und die zugehörigen Dateien erstellt. Als nächstes installieren Sie eine App in diesem Verzeichnis. In diesem Beispiel installieren Sie eine statische HTML Homepage,default.html, inC:\inetpub\wwwroot. Sie können den allgemeinen Ansatz problemlos erweitern, um komplexere Szenarien zu behandeln, wie ASP z. NETAnwendungen.

Sie können die Anwendungsdateien in Ihr Rezeptbuch aufnehmen und sie über install.rb in C:\inetpub\wwwroot kopieren. Beispiele für diese Vorgehensweise finden Sie unter Beispiel 6: Erstellen von Dateien. Dieser Ansatz ist allerdings nicht sonderlich flexibel oder effizient. Es empfiehlt sich daher in der Regel, die Bereitstellung von Rezeptbüchern und Anwendungen zu trennen.

Die bevorzugte Lösung besteht darin, ein separates Bereitstellungsrezept zu implementieren, das den Code der Anwendung und die zugehörigen Dateien aus einem Repository — einem beliebigen Repository, nicht nur dem Cookbook-Repository — abruft und es auf jeder Serverinstanz installiert. IIS So wird die Bereitstellung von Rezeptbüchern und Anwendungen sauber getrennt, sodass Sie beim Aktualisieren von Anwendungen das Bereitstellungsrezept erneut ausführen können, ohne das Rezeptbuch aktualisieren zu müssen.

In diesem Thema wird gezeigt, wie Sie ein einfaches Bereitstellungsrezept implementieren, das auf Ihrem Server bereitgestellt wird. default.htm IIS Sie können diese Beispiel einfach auf komplexere Anwendungen übertragen.

Erstellen der Anwendung und Speichern in einem Repository

Sie können für Ihre Anwendungen ein beliebiges Repository verwenden. Der Einfachheit halber wird default.htm in diesem Beispiel in einem öffentlichen S3-Bucket gespeichert.

So erstellen Sie die Anwendung
  1. Erstellen Sie ein Verzeichnis namens iis-application in einem lokalen Verzeichnis auf Ihrem Computer.

  2. Fügen Sie eine Datei default.htm zu iis-application mit dem folgenden Inhalt hinzu:

    <!DOCTYPE html> <html> <head> <title>IIS Example</title> </head> <body> <h1>Hello World!</h1> </body> </html>
  3. Erstellen Sie einen S3-Bucket, laden Sie default.htm ihn in den Bucket hoch und zeichnen Sie ihn URL für die spätere Verwendung auf. Machen Sie die Datei der Einfachheit halber öffentlich.

    Anmerkung

    Dies ist eine äußerst einfache Anwendung, die Grundprinzipien lassen sich jedoch einfach auf Anwendungen für die Produktion ausweiten.

    • Bei komplexeren Anwendungen mit mehreren Dateien ist es in der Regel einfacher, ein ZIP-Archiv von iis-application zu erstellen und dieses auf Ihren S3-Bucket hochzuladen.

      Diese ZIP-Datei können Sie dann herunterladen und den Inhalt in das entsprechende Verzeichnis extrahieren. So müssen Sie weder mehrere Dateien herunterladen noch eine Verzeichnisstruktur nachbilden.

    • Bei Produktionsanwendungen sollten Sie Ihre Dateien privat halten. Ein Beispiel, wie Sie mit einem Rezept Dateien aus einem privaten S3-Bucket herunterladen, finden Sie unter Verwenden von SDK for Ruby auf einem AWS OpsWorks Stapelt die Windows-Instanz.

    • Sie können Anwendungen in jedem geeigneten Repository speichern.

      In der Regel laden Sie die Anwendung mithilfe eines öffentlichen Repositorys herunterAPI. In diesem Beispiel wird Amazon S3 verwendetAPI. Wenn Sie Ihre Anwendung beispielsweise auf speichern GitHub, können Sie den verwenden GitHub API.

Implementieren eines Rezepts für die Bereitstellung der Anwendung

Fügen Sie ein Rezept namens deploy.rb dem Verzeichnis iis-cookbook recipes hinzu, mit folgendem Inhalt.

chef_gem "aws-sdk-s3" do compile_time false action :install end ruby_block "download-object" do block do require 'aws-sdk-s3' #1 # Aws.config[:ssl_ca_bundle] = 'C:\ProgramData\Git\bin\curl-ca-bundle.crt' Aws.use_bundled_cert! #2 query = Chef::Search::Query.new app = query.search(:aws_opsworks_app, "type:other").first s3region = app[0][:environment][:S3REGION] s3bucket = app[0][:environment][:BUCKET] s3filename = app[0][:environment][:FILENAME] #3 s3_client = Aws::S3::Client.new(region: s3region) s3_client.get_object(bucket: s3bucket, key: s3filename, response_target: 'C:\inetpub\wwwroot\default.htm') end action :run end

In diesem SDKBeispiel wird Ruby v2 verwendet, um die Datei herunterzuladen. Jedoch AWS OpsWorks Stacks installiert dies nicht SDK auf Windows-Instanzen, daher beginnt das Rezept mit der chef_gemRessource, die diese Aufgabe erledigt.

Anmerkung

Die Ressource chef_gem installiert Gems in der Chef-eigenen Ruby-Version. Dies ist die Version, die in Rezepten verwendet wird. Wenn Sie ein Gem für eine systemweite Ruby-Version installieren möchten, verwenden Sie die Ressource gem_package.

Der Großteil des Rezepts ist eine ruby_blockRessource, die einen Block mit Ruby-Code ausführt, der das SDK für Ruby zum Herunterladen default.htm verwendet. Der Code im ruby_block lässt sich in folgende Bereiche unterteilen, die den durchnummerierten Kommentaren im Codebeispiel entsprechen.

1: Angeben eines Zertifikat-Bundles

Amazon S3 verwendetSSL, sodass Sie ein entsprechendes Zertifikat benötigen, um Objekte aus einem S3-Bucket herunterzuladen. SDKfür Ruby v2 ist kein Zertifikatspaket enthalten, daher müssen Sie eines bereitstellen und das konfigurieren, SDK damit Ruby es verwenden kann. AWS OpsWorks Stacks installiert ein Zertifikatspaket nicht direkt, aber es installiert Git, das ein Zertifikatspaket (curl-ca-bundle.crt) enthält. Der Einfachheit halber wird in diesem Beispiel das SDK für Ruby konfiguriert, für das das Git-Zertifikatspaket verwendet werden soll. SSL Sie können auch Ihr eigenes Paket installieren und es SDK entsprechend konfigurieren.

2: Abrufen der Repository-Daten

Um ein Objekt von Amazon S3 herunterzuladen, benötigen Sie die AWS Region, den Bucket-Namen und den Schlüsselnamen. Wie nachfolgend beschrieben werden in diesem Beispiel diese Informationen bereitgestellt, indem eine Reihe von Umgebungsvariablen der Anwendung zugeordnet werden. Wenn Sie eine App bereitstellen, AWS OpsWorks Stacks fügt dem Knotenobjekt der Instanz eine Reihe von Attributen hinzu. Diese Attribute bestehen aus einer Hash-Tabelle, die die Anwendungskonfiguration einschließlich der Umgebungsvariablen enthält. Die App-Attribute für diese Anwendung sehen im JSON Format etwa wie folgt aus.

{ "app_id": "8f71a9b5-de7f-451c-8505-3f35086e5bb3", "app_source": { "password": null, "revision": null, "ssh_key": null, "type": "other", "url": null, "user": null }, "attributes": { "auto_bundle_on_deploy": true, "aws_flow_ruby_settings": {}, "document_root": null, "rails_env": null }, "data_sources": [{"type": "None"}], "domains": ["iis_example_app"], "enable_ssl": false, "environment": { "S3REGION": "us-west-2", "BUCKET": "windows-example-app", "FILENAME": "default.htm" }, "name": "IIS-Example-App", "shortname": "iis_example_app", "ssl_configuration": { "certificate": null, "private_key": null, "chain": null }, "type": "other", "deploy": true }

Die Umgebungsvariablen der Anwendung werden im Attribut [:environment] gespeichert. Um diese abzurufen, verwenden Sie eine Chef-Suchanfrage, mit der Sie die Hash-Tabelle der Anwendung abrufen, die im Knoten aws_opsworks_app gespeichert ist. Diese Anwendung hat den Typ other, die Anfrage sucht also nach Anwendungen dieses Typs. Das Rezept nutzt die Tatsache, dass sich auf dieser Instance nur eine Anwendung befindet. Die gewünschte Hash-Tabelle ist also einfach app[0]. Der Einfachheit halber weist das Rezept dann die Region-, Bucket- und Dateinamen Variablen zu.

Weitere Informationen zur Verwendung der Chef-Suche finden Sie unter Abrufen von Attributwerten mit der Chef-Suche.

3: Herunterladen der Datei

Im dritten Teil des Rezepts wird ein S3-Client-Objekt erstellt und mit der Methode get_object die Datei default.htm in das Verzeichnis C:\inetpub\wwwroot der Instance heruntergeladen.

Anmerkung

Ein Rezept ist eine Ruby-Anwendung, der Ruby-Code muss sich also nicht unbedingt in einem ruby_block befinden. Der Code im Text des Rezepts wird jedoch zuerst ausgeführt. Danach werden die Ressourcen der Reihe nach abgearbeitet. Wenn Sie in diesem Beispiel den Download-Code in den Rezepttext einfügen, schlägt dies fehl, da die chef_gem Ressource den SDK für Ruby noch nicht installiert hätte. Der Code in der ruby_block Ressource wird ausgeführt, wenn die Ressource ausgeführt wird, nachdem die chef_gem Ressource SDK für Ruby installiert hat.

Aktualisieren der Rezeptbücher der Instance

AWS OpsWorks Stacks installiert automatisch benutzerdefinierte Kochbücher auf neuen Instanzen. Sie arbeiten jedoch mit einer bestehenden Instance und müssen Ihr Rezeptbuch daher manuell aktualisieren.

So aktualisieren Sie die Rezeptbücher der Instance
  1. Erstellen Sie ein .zip-Archiv von iis-cookbook und laden Sie es in den S3-Bucket hoch.

    Dadurch wird das bestehende Kochbuch überschrieben, aber das URL bleibt gleich, sodass Sie die Stack-Konfiguration nicht aktualisieren müssen.

  2. Wenn Ihre Instance nicht online ist, starten Sie sie neu.

  3. Wenn die Instance online ist, wählen Sie im Navigationsbereich Stack und dann Run Command (Befehl ausführen) aus.

  4. Wählen Sie für Command (Befehl) Update Custom Cookbooks (Benutzerdefinierte Rezeptbücher aktualisieren) aus. Mit diesem Befehl installieren Sie das aktualisierte Rezeptbuch auf der Instance.

  5. Wählen Sie Update Custom Cookbooks (Benutzerdefinierte Rezeptbücher aktualisieren) aus. Die Ausführung dieses Befehls kann einige Minuten dauern.

Fügen Sie das Rezept zur benutzerdefinierten Ebene hinzu IIS

Wie auch bei install.rb ist die bevorzugte Methode für die Bereitstellung, deploy.rb dem entsprechenden Lebenszyklusereignis zuzuweisen. Rezepte zur Bereitstellung werden normalerweise dem Ereignis "Bereitstellung" zugewiesen und zusammenfassend als Bereitstellungsrezepte bezeichnet. Allein durch die Zuweisung zum Ereignis "Bereitstellung" wird das Ereignis noch nicht ausgelöst. Stattdessen geschieht Folgendes:

  • Für neue Instanzen AWS OpsWorks Stacks führt die Deploy-Rezepte automatisch aus, nachdem die Setup-Rezepte abgeschlossen sind, sodass neue Instanzen automatisch über die aktuelle Anwendungsversion verfügen.

  • Bei Online-Instances verwenden Sie einen Bereitstellungsbefehl, um neue oder aktualisierte Anwendungen manuell zu installieren.

    Über diesen Befehl wird ein Bereitstellungsereignis auf den Instances des Stack ausgelöst, das wiederum die Bereitstellungsrezepte ausführt.

So weisen Sie deploy.rb dem Ereignis "Bereitstellung" des Layers zu
  1. Wählen Sie im Navigationsbereich Ebenen und dann unter Ebene IISExample die Option Rezepte aus.

  2. Fügen Sie unter Custom Chef Recipes (Benutzerdefinierte Chef-Rezepte) die Zeichenfolge iis-cookbook::deploy dem Rezeptfeld Deploy (Bereitstellen) hinzu und wählen Sie + aus, um der Ebene das Rezept hinzuzufügen.

  3. Wählen Sie Save (Speichern) aus, um die neue Konfiguration zu speichern. Die benutzerdefinierten Bereitstellungsrezepte sollten nun iis-cookbook::deploy enthalten.

Hinzufügen einer Anwendung

Die letzte Aufgabe besteht darin, dem Stack eine App hinzuzufügen, die Ihre Anwendung in der AWS OpsWorks Stacks-Umgebung. Eine App enthält Metadaten wie den Anzeigenamen der Anwendung sowie die Daten, die Sie zum Herunterladen der App aus dem Repository benötigen.

So fügen Sie dem Stack die App hinzu
  1. Wählen Sie im Navigationsbereich Apps (Anwendungen) und dann Add an app (Anwendung hinzufügen) aus.

  2. Konfigurieren Sie die App mit den folgenden Einstellungen.

    • Name — ich IIS-Example-App

    • Repository-TypAndere

    • Umgebungsvariablen — Fügen Sie die folgenden drei Umgebungsvariablen hinzu:

      • S3REGION— Die Region des Buckets (in diesem Fallus-west-1).

      • BUCKET— Der Bucket-Name, z. windows-example-app B.

      • FILENAME— Der Dateiname:default.htm.

  3. Akzeptieren Sie Standardwerte für die übrigen Einstellungen und wählen Sie dann Add App (Anwendung hinzufügen) aus, um dem Stack die Anwendung hinzuzufügen.

Anmerkung

In diesem Beispiel werden die Download-Daten über Umgebungsvariablen bereitgestellt. Ein alternativer Ansatz besteht darin, einen S3-Archive-Repository-Typ zu verwenden und die Dateien bereitzustellenURL. AWS OpsWorks Stacks fügt die Informationen zusammen mit optionalen Daten wie Ihren AWS Anmeldeinformationen zum app_source Attribut der App hinzu. Ihr Bereitstellungsrezept muss die Attribute URL aus den App-Attributen abrufen und analysieren, um die Region, den Bucket-Namen und den Dateinamen zu extrahieren.

Bereitstellen der App und Öffnen der Anwendung

AWS OpsWorks Stacks stellt Apps automatisch für neue Instanzen bereit, nicht jedoch für Online-Instanzen. Da Ihre Instance bereits online ist, müssen Sie die App manuell bereitstellen.

So stellen Sie die App bereit
  1. Wählen Sie im Navigationsbereich Apps (Anwendungen) und dann in der Spalte Actions (Aktionen) der Anwendung deploy (Bereitstellen) aus.

  2. Command (Befehl) muss auf Deploy (Bereitstellen) eingestellt sein. Wählen Sie Deploy (Bereitstellen) rechts unten auf der Seite Deploy App (App bereitstellen). Die Ausführung dieses Befehls kann einige Minuten dauern.

    Nachdem die Bereitstellung abgeschlossen wurde, kehren Sie zur Seite Apps zurück. Die Anzeige Status zeigt in grüner Schrift successful (Erfolgreich) an und neben dem Namen der Anwendung wird die erfolgreiche Bereitstellung durch ein grünes Häkchen dargestellt.

Anmerkung

Windows-Apps haben grundsätzlich den App-Typ Other (Sonstige). Durch die Bereitstellung der App geschieht daher Folgendes:

  • Die Anwendungsdaten werden wie zuvor beschrieben den Stack-Konfigurations- und Bereitstellungsattributen hinzugefügt.

  • Es wird ein Bereitstellungsereignis auf den Instances des Stacks ausgelöst, durch das Ihre benutzerdefinierten Bereitstellungsrezepte ausgeführt werden.

Anmerkung

Weitere Informationen zur Fehlerbehebung bei fehlgeschlagenen Bereitstellungen oder Anwendungen finden Sie unter Debuggen von Rezepten.

Die App ist jetzt installiert. Um sie zu öffnen, wählen Sie Instances (Instances) im Navigationsbereich und dann die öffentliche IP-Adresse der Instance aus. Dadurch wird eine HTTP Anfrage an die Instanz gesendet, und Sie sollten in Ihrem Browser etwa Folgendes sehen.

Text displaying "Hello World!" in large, bold font against a white background.