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.
Übermitteln von Daten an Anwendungen
Wichtig
Der AWS OpsWorks Stacks Dienst hat am 26. Mai 2024 das Ende seiner Lebensdauer 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 das AWS -Support Team auf AWS re:POST
Es ist häufig nützlich, Daten wie z. B. Schlüssel-Wert-Paare an eine Anwendung auf dem Server zu übermitteln. Verwenden Sie dazu das benutzerdefinierte JSON-Objekt, um Daten zu einem Stack hinzuzufügen. AWS OpsWorks Stacks fügt die Daten für jedes Lebenszyklusereignis dem Knotenobjekt jeder Instanz hinzu.
Beachten Sie jedoch, dass die Anwendungen im Gegensatz zu den Rezepten nicht in der Lage sind, die benutzerdefinierten JSON-Daten mithilfe von Chef-Attributen abzurufen. Eine Möglichkeit zur Übermittlung von benutzerdefinierten JSON-Daten an eine oder mehrere Anwendungen ist die Implementierung eines benutzerdefinierten Rezepts, die die Daten aus dem node
-Objekt extrahiert und in eine von der Anwendung lesbare Datei schreibt. Mit dem in diesem Thema aufgeführten Beispiel wird erläutert, wie Daten in eine YAML-Datei geschrieben werden. Sie können denselben Grundansatz für andere Formate wie JSON oder XML verwenden.
Um Schlüssel-Wert-Daten an die Stack-Instances zu übermitteln, fügen Sie ein benutzerdefiniertes JSON-Objekt folgendermaßen zum Stack hinzu. Weitere Informationen zum Hinzufügen eines benutzerdefinierten JSON-Objekts zu einem Stack finden Sie unter Nutzen eines benutzerdefinierten JSON-Objekts.
{ "my_app_data": { "app1": { "key1": "value1", "key2": "value2", "key3": "value3" }, "app2": { "key1": "value1", "key2": "value2", "key3": "value3" } } }
In diesem Beispiel wird angenommen, dass Sie über zwei Anwendungen mit den Kurznamen app1
und app2
mit jeweils drei Datenwerten verfügen. Das zugehörige Rezept geht davon aus, dass Sie die zugehörigen Daten mithilfe des Kurznamens der Anwendung identifizieren; die restlichen Namen sind willkürlich. Weitere Informationen zu Kurznamen für Anwendungen finden Sie unter Einstellungen.
Das Rezept im folgenden Beispiel zeigt, wie die Daten für die einzelnen Anwendungen aus den deploy
-Attributen extrahiert und in eine .yml
-Datei gespeichert werden. Das Rezept geht davon aus, dass Ihr benutzerdefiniertes JSON-Objekt für jede Anwendung Daten enthält.
node[:deploy].each do |app, deploy| file File.join(deploy[:deploy_to], 'shared', 'config', '
app_data.yml
') do content YAML.dump(node[:my_app_data
][app].to_hash) end end
Die deploy
-Attribute enthalten ein Attribut für jede Anwendung mit deren Kurznamen. Jedes Anwendungsattribut enthält eine Reihe von Attributen mit einer Vielzahl von Informationen über die Anwendung. Dieses Beispiel verwendet das Bereitstellungsverzeichnis der Anwendung, das anhand des [:deploy][:
-Attributs definiert wird. Weitere Informationen zu app_short_name
][:deploy_to][:deploy]
finden Sie unter Bereitstellungsattribute.
Für jede Anwendung in deploy
führt das Rezept Folgendes aus:
-
Eine Datei namens
app_data.yml
wird im Unterverzeichnisshared/config
des Verzeichnisses[:deploy_to]
der Anwendung erstellt.Weitere Informationen darüber, wie AWS OpsWorks Stacks Apps installiert, finden Sie unter. Bereitstellungsrezepte
-
Sie konvertiert die benutzerdefinierten JSON-Daten der Anwendung zu YAML und schreibt die formatierten Daten in
app_data.yml
.
So übermitteln Sie Daten an eine Anwendung
-
Fügen Sie eine Anwendung zum Stack hinzu und notieren Sie deren Kurznamen. Weitere Informationen finden Sie unter Hinzufügen von Apps.
-
Fügen Sie die benutzerdefinierten JSON-Werte zusammen mit den Anwendungsdaten zu den
deploy
-Attributen hinzu, wie zuvor beschrieben. Weitere Informationen zum Hinzufügen eines benutzerdefinierten JSON-Objekts zu einem Stack finden Sie unter Nutzen eines benutzerdefinierten JSON-Objekts. -
Erstellen Sie ein Rezeptbuch und fügen Sie zu diesem ein Rezept mit dem auf dem vorgenannten Beispiel basierenden Code hinzu, der entsprechend den im benutzerdefinierten JSON-Objekt verwendeten Attributnamen modifiziert ist. Weitere Informationen zum Erstellen von Rezeptbüchern und Rezepten finden Sie unter Cookbooks und Rezepte. Wenn Sie bereits über benutzerdefinierte Rezeptbücher für diesen Stack verfügen, können Sie das Rezept auch einem vorhandenen Rezeptbuch oder den Code sogar einem vorhandenen Bereitstellungsrezept hinzufügen.
-
Installieren Sie das Rezeptbuch auf Ihrem Stack. Weitere Informationen finden Sie unter Installieren von benutzerdefinierten Rezeptbüchern.
-
Weisen Sie das Rezept dem Deploy-Lifecycle-Ereignis des App-Server-Layers zu. AWS OpsWorks Stacks führt das Rezept dann auf jeder neuen Instanz aus, nachdem diese gestartet wurde. Weitere Informationen finden Sie unter Ausführen von Rezepten.
-
Stellen Sie die Anwendung bereit, die auch Stack-Konfigurations- und Bereitstellungsattribute mit Ihren Daten installiert.
Anmerkung
Wenn die Datendateien zur Verfügung stehen müssen, bevor die Anwendung bereitgestellt wird, können Sie das Rezept auch dem Einrichtungs-Lebenszyklusereignis des Layers zuweisen, welcher unmittelbar nach Beendigung des Bootvorgangs eintritt. AWS OpsWorks Stacks hat die Bereitstellungsverzeichnisse jedoch noch nicht erstellt, daher sollte Ihr Rezept die erforderlichen Verzeichnisse explizit erstellen, bevor Sie die Datendatei erstellen. Im folgenden Beispiel wird explizit das Verzeichnis /shared/config
der Anwendung und anschließend die Datendatei in diesem Verzeichnis erstellt.
node[:deploy].each do |app, deploy| directory "#{deploy[:deploy_to]}/shared/config" do owner "deploy" group "www-data" mode 0774 recursive true action :create end file File.join(deploy[:deploy_to], 'shared', 'config', 'app_data.yml') do content YAML.dump(node[:my_app_data][app].to_hash) end end
Zum Laden der Daten können Sie beispielsweise folgenden Sinatra
#!/usr/bin/env ruby # encoding: UTF-8 require 'sinatra' require 'yaml' get '/' do YAML.load(File.read(File.join('..', '..', 'shared', 'config', 'app_data.yml'))) End
Sie können die Anwendungsdaten jederzeit durch die Aktualisierung des benutzerdefinierten JSON-Objekts wie folgt aktualisieren.
So aktualisieren Sie die Anwendungsdaten
-
Bearbeiten Sie das benutzerdefinierte JSON-Objekt, um die Daten zu aktualisieren.
-
Stellen Sie die App erneut bereit, wodurch AWS OpsWorks Stacks angewiesen wird, die Deploy-Rezepte auf den Instanzen des Stacks auszuführen. Die Rezepte greifen auf aktualisierte Stack-Konfigurations- und Bereitstellungsattribute zurück, sodass Ihr benutzerdefiniertes Rezept die Datendateien mit den gegenwärtigen Werten aktualisiert.