AWS OpsWorks Referenz für Stacks Data Bag - 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.

AWS OpsWorks Referenz für Stacks Data Bag

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.

AWS OpsWorks Stacks stellt eine Vielzahl von Einstellungen für Rezepte als Inhalt der Chef-Datentüte zur Verfügung. Diese Referenz führt die Data Bag-Inhalte auf.

Ein Data Bag ist ein Chef-Konzept. Bei einem Data Bag handelt es sich um eine globale Variable, die in Form von JSON-Daten auf einer Instance gespeichert wird. Auf die JSON-Daten wird mit Chef zugegriffen. In einer Datentasche können beispielsweise globale Variablen wie die Quell-URL einer App, der Hostname der Instanz und die VPC-ID des zugehörigen Stacks gespeichert werden. AWS OpsWorks Stacks speichert seine Datentaschen auf den Instanzen jedes Stacks. Auf Linux-Instances speichert AWS OpsWorks Stacks Datentaschen im /var/chef/runs/run-ID/data_bags Verzeichnis. Auf Windows-Instances werden Data Bags im Verzeichnis drive:\chef\runs\run-id\data_bags gespeichert. In beiden Fällen ist Run-ID eine eindeutige ID, die AWS OpsWorks Stacks jedem Chef-Lauf auf einer Instanz zuweist. Diese Verzeichnisse enthalten mehrere Data Bags (Unterverzeichnisse). Jedes Data Bag enthält null oder mehr Data Bag-Elemente. Das sind Dateien im JSON-Format, die Data Bag-Inhalte enthalten.

Anmerkung

AWS OpsWorks Stacks unterstützt keine verschlüsselten Datenbeutel. Um vertrauliche Daten in verschlüsselter Form zu speichern, wie z. B. Passwörter oder Zertifikate, empfehlen wir, diese in einem privaten S3-Bucket zu speichern. Anschließend können Sie ein benutzerdefiniertes Rezept erstellen, das zum Abrufen der Daten das Amazon SDK für Ruby verwendet. Ein Beispiel finden Sie unter Verwenden des -SDK for Ruby.

Ein Data Bag kann folgende Inhalte enthalten:

  • Zeichenfolgen nach der Ruby-Standardsyntax, mit einfachen oder doppelten Anführungszeichen (für Zeichenfolgen mit bestimmten Sonderzeichen müssen doppelte Anführungszeichen gesetzt werden). Weitere Informationen finden Sie auf der Website der Ruby-Dokumentation.

  • Boolesche Werte, also entweder true oder false (ohne Anführungszeichen).

  • Ziffern in Form von Ganzzahlen oder Dezimalzahlen wie z. B. 4 oder 2.5 (ohne Anführungszeichen).

  • Listen im Format von CSV-Werten in eckigen Klammern (ohne Anführungszeichen), wie z. B. [ '80', '443' ]

  • JSON-Objekte mit zusätzlichen Data Bag-Inhalten, wie z. B. "my-app": {"elastic_ip": null,...}.

Chef-Rezepte können mithilfe der Chef-Suchfunktion oder direkt auf Data Bags, Data Bag-Elemente und Data Bag-Inhalte zugreifen. Nachfolgend werden beide Zugriffsmethoden beschrieben (obwohl die Chef-Suchfunktion bevorzugt wird).

Um über die Chef-Suche auf eine Datentasche zuzugreifen, verwenden Sie die Suchmethode und geben Sie den gewünschten Suchindex an. AWS OpsWorks Stacks bietet die folgenden Suchindizes:

Wenn Sie den Namen des Suchindex kennen, können Sie auf die Data Bag-Inhalte dieses Suchindex zugreifen. Beispielsweise wird von folgendem Rezeptcode der Suchindex aws_opsworks_app verwendet, um die Inhalte des ersten Data Bag-Elements (die erste JSON-Datei) aus dem Data Bag aws_opsworks_app (Verzeichnis aws_opsworks_app) abzurufen. Der Code schreibt dann zwei Nachrichten in das Chef-Protokoll, die eine enthält die Data Bag-Inhalte mit dem App-Kurznamen (eine Zeichenfolge in der JSON-Datei), die andere enthält die Data Bag-Inhalte mit der App-Quell-URL (eine weitere Zeichenfolge in der JSON-Datei):

app = search("aws_opsworks_app").first Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********")

Hier geben ['shortname'] und ['app_source']['url'] die folgenden Data Bag-Inhalte in der zugehörigen JSON-Datei an:

{ ... "shortname": "mylinuxdemoapp", ... "app_source": { ... "url": "https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-nodejs.tar.gz", }, ... }

Eine Liste der suchbaren Data Bag-Inhalte finden Sie im Thema "Referenz" in diesem Abschnitt.

Sie können die Data Bag-Elemente in einem Data Bag auch schrittweise durchlaufen. Beispielsweise ist der folgende Rezeptcode identisch mit dem vorherigen Beispiel. Hier werden die einzelnen Data Bag-Elemente im Data Bag schrittweise durchlaufen, wenn mehr als ein Data Bag-Element vorhanden ist:

search("aws_opsworks_app").each do |app| Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end

Wenn Sie wissen, dass bestimmte Data Bag-Inhalte vorhanden sind, können Sie mit der folgenden Syntax nach dem entsprechenden Data Bag-Element suchen:

search("search_index", "key:value").first

Beispielsweise wird von folgendem Rezeptcode der Suchindex aws_opsworks_app verwendet, um nach dem Data Bag-Element zu suchen, das den App-Kurznamen mylinuxdemoapp enthält. Anschließend wird unter Verwendung der Data Bag-Elementinhalte eine Nachricht mit dem Kurznamen und der Quell-URL der betreffenden App in das Chef-Protokoll geschrieben:

app = search("aws_opsworks_app", "shortname:mylinuxdemoapp").first Chef::Log.info("********** For the app with the short name '#{app['shortname']}', the app's URL is '#{app['app_source']['url']}' **********")

Nur bei dem Suchindex aws_opsworks_instance können Sie mit self:true die Instance angeben, auf der das Rezept ausgeführt wird. Der folgende Rezeptcode verwendet den Inhalt des entsprechenden Datenbeutelelements, um eine Nachricht mit der von Stacks generierten ID und dem Betriebssystem der entsprechenden Instance in das Chef-Protokoll zu schreiben: AWS OpsWorks

instance = search("aws_opsworks_instance", "self:true").first Chef::Log.info("********** For instance '#{instance['instance_id']}', the instance's operating system is '#{instance['os']}' **********")

Sie können auch direkt auf Data Bags, Data Bag-Elemente und Data Bag-Inhalte zugreifen, ohne die Chef-Suchfunktion zu nutzen. Verwenden Sie dazu die Methoden data_bag und data_bag_item für den Zugriff auf Data Bags bzw. Data Bag-Elemente. Beispielsweise werden mit dem folgenden Rezeptcode die gleichen Schritte ausgeführt wie in den vorherigen Beispielen, nur wird hier direkt auf ein einzelnes Data Bag-Element zugegriffen (bzw. auf mehrere, sofern vorhanden):

# Syntax: data_bag_item("the data bag name", "the file name in the data bag without the file extension") app = data_bag_item("aws_opsworks_app", "mylinuxdemoapp") Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") data_bag("aws_opsworks_app").each do |data_bag_item| app = data_bag_item("aws_opsworks_app", data_bag_item) Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end

Von diesen beiden Methoden wird die Verwendung der Chef-Suchfunktion empfohlen. In allen zugehörigen Beispielen in diesem Handbuch wird diese Methode herangezogen.