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
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.
Themen
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
-
Erstellen Sie ein Verzeichnis namens
iis-application
in einem lokalen Verzeichnis auf Ihrem Computer. -
Fügen Sie eine Datei
default.htm
zuiis-application
mit dem folgenden Inhalt hinzu:<!DOCTYPE html> <html> <head> <title>IIS Example</title> </head> <body> <h1>Hello World!</h1> </body> </html>
-
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_gem
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_block
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 Knotenaws_opsworks_app
gespeichert ist. Diese Anwendung hat den Typother
, 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 einfachapp[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 Dateidefault.htm
in das VerzeichnisC:\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
-
Erstellen Sie ein
.zip
-Archiv voniis-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.
-
Wenn Ihre Instance nicht online ist, starten Sie sie neu.
-
Wenn die Instance online ist, wählen Sie im Navigationsbereich Stack und dann Run Command (Befehl ausführen) aus.
-
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.
-
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
-
Wählen Sie im Navigationsbereich Ebenen und dann unter Ebene IISExample die Option Rezepte aus.
-
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. -
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
-
Wählen Sie im Navigationsbereich Apps (Anwendungen) und dann Add an app (Anwendung hinzufügen) aus.
-
Konfigurieren Sie die App mit den folgenden Einstellungen.
-
Name — ich
IIS-Example-App
-
Repository-Typ — Andere
-
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
.
-
-
-
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
-
Wählen Sie im Navigationsbereich Apps (Anwendungen) und dann in der Spalte Actions (Aktionen) der Anwendung deploy (Bereitstellen) aus.
-
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.