Benutzerdefiniert verwenden JSON - 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.

Benutzerdefiniert verwenden JSON

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.

Mehrere AWS OpsWorks Mit Stacks-Aktionen können Sie benutzerdefinierte angebenJSON, welche AWS OpsWorks Stacks wird auf Instanzen installiert und kann von Rezepten verwendet werden.

JSONIn den folgenden Situationen können Sie Benutzerdefiniert angeben:

  • Beim Erstellen, Aktualisieren oder Klonen eines Stacks

    AWS OpsWorks Stacks installiert die benutzerdefinierte Version JSON auf allen Instanzen für alle nachfolgenden Lebenszyklusereignisse.

  • Beim Ausführen eines Bereitstellungs- oder Stack-Befehls

    AWS OpsWorks Stacks übergibt den benutzerdefinierten Wert nur für dieses Ereignis JSON an Instanzen.

Benutzerdefiniert JSON muss durch ein gültiges JSON Objekt repräsentiert und als solches formatiert werden. Beispielsweise:

{ "att1": "value1", "att2": "value2" ... }

AWS OpsWorks Stacks speichert benutzerdefinierte Daten JSON an den folgenden Speicherorten:

Auf Linux-Instances:

  • /var/chef/runs/run-ID/attribs.json

  • /var/chef/runs/run-ID/nodes/hostname.json

Auf Windows-Instances:

  • drive:\chef\runs\run-ID\attribs.json

  • drive:\chef\runs\run-ID\nodes\hostname.json

Anmerkung

In Chef 11.10 und früheren Versionen für Linux JSON befindet sich der benutzerdefinierte Code auf Linux-Instanzen im folgenden Pfad. Windows-Instanzen sind nicht verfügbar und es gibt keine attribs.json Datei. Die Protokolle werden im selben Ordner oder Verzeichnis wie die JSON gespeichert. Weitere Informationen zu Benutzerdefiniert JSON in Chef 11.10 und früheren Versionen für Linux finden Sie unter Überschreiben von Attributen mit benutzerdefinierten Protokollen JSON und Chef-Protokollen.

/var/lib/aws/opsworks/chef/hostname.json

In den vorherigen Pfaden run-ID ist eine eindeutige ID, die AWS OpsWorks Stacks weist jedem Chef zu, der auf einer Instanz ausgeführt wird, und hostname ist der Hostname der Instanz.

Verwenden Sie die node Standard-Syntax JSON von Chef, um über Chef-Rezepte auf benutzerdefinierte Rezepte zuzugreifen.

Angenommen, Sie möchten einfache Einstellungen für eine App definieren, die Sie bereitstellen möchten, beispielsweise ob die App direkt sichtbar ist und welche Vorder- und Hintergrundfarben für die App verwendet werden sollen. Angenommen, Sie definieren diese App-Einstellungen mit einem JSON Objekt wie folgt:

{ "state": "visible", "colors": { "foreground": "light-blue", "background": "dark-gray" } }

Um den Benutzerdefiniert JSON für einen Stack zu deklarieren:

  1. Wählen Sie auf der Stack-Seite Stack Settings (Stack-Einstellungen) und dann Edit (Bearbeiten) aus.

  2. Geben Sie für Custom Chef JSON das JSON Objekt ein und wählen Sie dann Speichern.

Anmerkung

Sie können Benutzerdefiniert JSON auf Bereitstellungs-, Layer- und Stack-Ebene deklarieren. Dies empfiehlt sich möglicherweise, wenn Sie möchten, dass einige benutzerdefinierte JSON Elemente nur für eine einzelne Bereitstellung oder Ebene sichtbar sind. Oder Sie möchten beispielsweise die auf Stack-Ebene JSON deklarierten benutzerdefinierten Werte vorübergehend durch die auf Layer-Ebene JSON deklarierten benutzerdefinierten Werte überschreiben. Wenn Sie JSON auf mehreren Ebenen benutzerdefiniert deklarieren, hat die auf der Bereitstellungsebene JSON deklarierte benutzerdefinierte Angabe Vorrang vor allen auf Layer- und Stack-Ebene JSON deklarierten benutzerdefinierten Werten. Benutzerdefiniert, die auf Layer-Ebene JSON deklariert wurden, überschreibt alle benutzerdefinierten, die nur auf Stack-Ebene JSON deklariert wurden.

Um das AWS OpsWorks Wählen Sie in der Stacks-Konsole auf der Seite „App bereitstellen“ die Option „Erweitert“ aus, um Benutzerdefiniert JSON für eine Bereitstellung anzugeben. Geben Sie den benutzerdefinierten Wert JSON in das JSON Feld Custom Chef ein und wählen Sie dann Speichern aus.

Um das AWS OpsWorks Wählen Sie in der Stapelkonsole die Option Benutzerdefiniert JSON für eine Ebene auf der Seite Ebenen die Option Einstellungen für die gewünschte Ebene aus. Geben Sie den benutzerdefinierten Wert JSON in das JSON Feld Benutzerdefiniert ein und wählen Sie dann Speichern aus.

Weitere Informationen erhalten Sie unter Die Konfiguration einer OpsWorks Ebene bearbeiten und Bereitstellen von Anwendungen.

Wenn Sie einen Deployment- oder Stack-Befehl ausführen, können Rezepte diese benutzerdefinierten Werte mithilfe der node Standard-Syntax von Chef abrufen, die direkt der Hierarchie im benutzerdefinierten JSON Objekt zugeordnet ist. Der folgende Rezeptcode schreibt beispielsweise Meldungen über die vorherigen benutzerdefinierten JSON Werte in das Chef-Protokoll:

Chef::Log.info("********** The app's initial state is '#{node['state']}' **********") Chef::Log.info("********** The app's initial foreground color is '#{node['colors']['foreground']}' **********") Chef::Log.info("********** The app's initial background color is '#{node['colors']['background']}' **********")

Diese Methode ist nützlich, um Daten an Rezepte zu übergeben. AWS OpsWorks Stacks fügt diese Daten der Instanz hinzu, und Rezepte können die Daten mithilfe der node Standard-Chef-Syntax abrufen.

Anmerkung

Benutzerdefiniert JSON ist auf 120 KB begrenzt. Wenn Sie mehr Kapazität benötigen, empfehlen wir, einige Daten auf Amazon Simple Storage Service (Amazon S3) zu speichern. Ihre benutzerdefinierten Rezepte können dann das AWSCLIoder das verwenden AWS SDK for Rubyum die Daten aus dem Amazon S3 S3-Bucket auf Ihre Instance herunterzuladen.