Nutzen eines benutzerdefinierten JSON-Objekts - 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.

Nutzen eines benutzerdefinierten JSON-Objekts

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 oder über den AWS Premium-Support.

Mit verschiedenen AWS OpsWorks Stacks-Aktionen können Sie benutzerdefiniertes JSON angeben, das AWS OpsWorks Stacks auf Instanzen installiert und von Rezepten verwendet werden kann.

Sie können in folgenden Situationen ein benutzerdefiniertes JSON-Objekt festlegen:

  • Beim Erstellen, Aktualisieren oder Klonen eines Stacks

    AWS OpsWorks Stacks installiert das benutzerdefinierte JSON auf allen Instances für alle nachfolgenden Lebenszyklusereignisse.

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

    AWS OpsWorks Stacks gibt das benutzerdefinierte JSON nur für dieses Ereignis an Instances weiter.

Das benutzerdefinierte JSON-Objekt muss durch ein korrekt formatiertes, gültiges JSON-Objekt dargestellt werden. Beispielsweise:

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

AWS OpsWorks Stacks speichert benutzerdefiniertes JSON an den folgenden Orten:

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

Auf Chef 11.10 und früheren Versionen für Linux wird das benutzerdefinierte JSON-Objekt auf Linux-Instances im folgenden Pfad gespeichert. Windows-Instances sind nicht verfügbar und es gibt keine Datei attribs.json. Die Protokolle werden im selben Verzeichnis gespeichert wie die JSON. Weitere Informationen zu benutzerdefinierter JSON in Chef 11.10 und früheren Versionen für Linux finden Sie unter Overriding Attributes with Custom JSON (Überschreiben von Attributen mit einem benutzerdefinierten JSON-Objekt) und Chef Logs (Chef-Protokolle).

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

In den genannten Pfaden ist run-ID eine eindeutige ID, die AWS OpsWorks Stacks jeder Chef-Ausführung auf einer Instance zuweist. hostname (Host-Name) ist der Hostname der Instance.

Verwenden Sie die Standard-Chefnode-Syntax, um mittels Chef-Rezepten auf das benutzerdefinierte JSON-Objekt 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. Sie können diese App-Einstellungen mit einem JSON-Objekt wie folgt definieren:

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

So deklarieren Sie das benutzerdefinierte JSON-Objekt für einen Stack:

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

  2. Geben Sie unter Custom Chef JSON (Benutzerdefinierte JSON-Chef-Dateien) das JSON-Objekt ein und wählen Sie dann Save (Speichern) aus.

Anmerkung

Sie können benutzerdefinierte JSON-Objekte auf Bereitstellungs-, Layer- und Stacks-Ebene deklarieren. Dies kann nützlich sein, wenn Sie ein benutzerdefiniertes JSON-Objekt nur für einzelne Bereitstellungen oder Layer bereitstellen möchten. Oder Sie möchten das auf Stack-Ebene deklarierte benutzerdefinierte JSON-Objekt temporär mit einer benutzerdefinierten JSON auf Layer-Ebene überschreiben. Wenn Sie benutzerdefinierte JSON-Objekte auf mehreren Ebenen deklarieren, werden die auf Layer- und Stack-Ebene deklarierten benutzerdefinierten JSON-Objekte von dem auf der Bereitstellungsebene deklarierten benutzerdefinierten JSON-Objekt überschrieben. Benutzerdefiniertes JSON-Objekt, das nur auf Stack-Ebene deklariert ist, wird von jeglichen, nur auf Layer-Ebene deklarierten benutzerdefinierten JSON-Objekten überschrieben.

Um mithilfe der AWS OpsWorks Stacks-Konsole benutzerdefiniertes JSON für eine Bereitstellung anzugeben, wählen Sie auf der Seite App bereitstellen die Option Erweitert aus. Geben Sie das benutzerdefinierte JSON-Objekt in das Feld Custom Chef JSON (Benutzerdefiniertes Chef JSON) ein und wählen Sie dann Save (Speichern) aus.

Um mit der AWS OpsWorks Stacks-Konsole benutzerdefiniertes JSON für eine Ebene anzugeben, wählen Sie auf der Seite „Ebenen“ die Option Einstellungen für die gewünschte Ebene aus. Geben Sie das benutzerdefinierte JSON-Objekt in das Feld Custom JSON (Benutzerdefiniertes JSON-Objekt) ein und wählen Sie dann Save (Speichern) aus.

Weitere Informationen finden Sie unter Bearbeiten der Konfiguration einer Ebene OpsWorks und Bereitstellen von Anwendungen.

Wenn Sie einen Bereitstellungs- oder Stack-Befehl ausführen, können Rezepte diese benutzerdefinierten Werte unter Verwendung der Standard-Chef-node-Syntax abrufen, über die die Werte direkt auf die Hierarchie des benutzerdefinierten JSON-Objekts abgebildet werden. Das folgende Rezept schreibt beispielsweise Meldungen zu den genannten benutzerdefinierten JSON-Werten 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']}' **********")

Dieser Ansatz kann nützlich sein, 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

Ein benutzerdefiniertes JSON-Format 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 die AWS-CLI oder die verwenden AWS SDK for Ruby, um die Daten aus dem Amazon S3 S3-Bucket auf Ihre Instance herunterzuladen.