View a markdown version of this page

AWS IoT Greengrass Referenz zum Komponentenrezept - AWS IoT Greengrass

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 IoT Greengrass Referenz zum Komponentenrezept

Das Komponentenrezept ist eine Datei, die die Details, Abhängigkeiten, Artefakte und Lebenszyklen einer Komponente definiert. Der Komponentenlebenszyklus spezifiziert beispielsweise die Befehle, die ausgeführt werden müssen, um die Komponente zu installieren, auszuführen und herunterzufahren. Der AWS IoT Greengrass Kern verwendet die Lebenszyklen, die Sie im Rezept definieren, um Komponenten zu installieren und auszuführen. Der AWS IoT Greengrass Service verwendet das Rezept, um die Abhängigkeiten und Artefakte zu identifizieren, die bei der Bereitstellung der Komponente auf Ihren Kerngeräten bereitgestellt werden müssen.

Im Rezept können Sie eindeutige Abhängigkeiten und Lebenszyklen für jede Plattform definieren, die eine Komponente unterstützt. Sie können diese Funktion verwenden, um eine Komponente auf Geräten mit mehreren Plattformen bereitzustellen, die unterschiedliche Anforderungen haben. Sie können dies auch verwenden, um zu AWS IoT Greengrass verhindern, dass eine Komponente auf Geräten installiert wird, die sie nicht unterstützen.

Jedes Rezept enthält eine Liste von Manifesten. Jedes Manifest spezifiziert eine Reihe von Plattformanforderungen sowie den Lebenszyklus und die Artefakte, die für Kerngeräte verwendet werden sollen, deren Plattform diese Anforderungen erfüllt. Das Kerngerät verwendet das erste Manifest mit den Plattformanforderungen, die das Gerät erfüllt. Geben Sie ein Manifest ohne Plattformanforderungen an, das einem beliebigen Kerngerät entspricht.

Sie können auch einen globalen Lebenszyklus angeben, der sich nicht in einem Manifest befindet. Im globalen Lebenszyklus können Sie Auswahlschlüssel verwenden, um Unterabschnitte des Lebenszyklus zu identifizieren. Anschließend können Sie diese Auswahlschlüssel innerhalb eines Manifests angeben, um diese Abschnitte des globalen Lebenszyklus zusätzlich zum Lebenszyklus des Manifests zu verwenden. Das Kerngerät verwendet die Auswahlschlüssel des Manifests nur, wenn das Manifest keinen Lebenszyklus definiert. Sie können die all Auswahl in einem Manifest verwenden, um Abschnitte des globalen Lebenszyklus ohne Auswahlschlüssel abzugleichen.

Nachdem die AWS IoT Greengrass Core-Software ein Manifest ausgewählt hat, das dem Kerngerät entspricht, geht sie wie folgt vor, um die zu verwendenden Lebenszyklusschritte zu identifizieren:

  • Wenn das ausgewählte Manifest einen Lebenszyklus definiert, verwendet das Kerngerät diesen Lebenszyklus.

  • Wenn das ausgewählte Manifest keinen Lebenszyklus definiert, verwendet das Kerngerät den globalen Lebenszyklus. Das Kerngerät führt die folgenden Schritte aus, um zu ermitteln, welche Abschnitte des globalen Lebenszyklus verwendet werden sollen:

    • Wenn das Manifest Auswahlschlüssel definiert, verwendet das Kerngerät die Abschnitte des globalen Lebenszyklus, die die Auswahlschlüssel des Manifests enthalten.

    • Wenn das Manifest keine Auswahlschlüssel definiert, verwendet das Kerngerät die Abschnitte des globalen Lebenszyklus, die keine Auswahlschlüssel haben. Dieses Verhalten entspricht einem Manifest, das die all Auswahl definiert.

Wichtig

Ein Kerngerät muss die Plattformanforderungen von mindestens einem Manifest erfüllen, um die Komponente zu installieren. Wenn kein Manifest dem Kerngerät entspricht, installiert die AWS IoT Greengrass Core-Software die Komponente nicht und die Bereitstellung schlägt fehl.

Sie können Rezepte im JSON - oder https://en.wikipedia.org/wiki/YAML YAML-Format definieren. Der Abschnitt mit Rezeptbeispielen enthält Rezepte in jedem Format.

Validierung von Rezepten

Greengrass validiert ein JSON- oder YAML-Komponentenrezept, wenn eine Komponentenversion erstellt wird. Bei dieser Rezeptvalidierung wird Ihr JSON- oder YAML-Komponentenrezept auf häufig auftretende Fehler überprüft, um potenziellen Bereitstellungsproblemen vorzubeugen. Bei der Validierung wird das Rezept auf häufige Fehler (z. B. fehlende Kommas, geschweifte Klammern und Felder) überprüft und sichergestellt, dass das Rezept wohlgeformt ist.

Wenn du eine Fehlermeldung bei der Rezeptvalidierung erhältst, überprüfe dein Rezept auf fehlende Kommas, geschweifte Klammern oder Felder. Vergewissern Sie sich, dass keine Felder fehlen, indem Sie sich das Rezeptformat ansehen.

Format des Rezepts

Wenn Sie ein Rezept für eine Komponente definieren, geben Sie die folgenden Informationen im Rezepturdokument an. Dieselbe Struktur gilt für Rezepte im YAML- und JSON-Format.

RecipeFormatVersion

Die Vorlagenversion für das Rezept. Wählen Sie die folgende Option:

  • 2020-01-25

ComponentName

Der Name der Komponente, die dieses Rezept definiert. Der Komponentenname muss AWS-Konto in Ihrer Region eindeutig sein.

Tipps
  • Verwenden Sie das umgekehrte Domainnamenformat, um Namenskollisionen innerhalb Ihres Unternehmens zu vermeiden. Wenn Ihr Unternehmen beispielsweise ein Solarenergieprojekt besitzt example.com und Sie daran arbeiten, können Sie Ihrer Hello World-Komponente com.example.solar.HelloWorld einen Namen geben. Auf diese Weise können Kollisionen zwischen Komponentennamen innerhalb Ihres Unternehmens vermieden werden.

  • Vermeiden Sie das aws.greengrass Präfix in Ihren Komponentennamen. AWS IoT Greengrass verwendet dieses Präfix für die öffentlichen Komponenten, die es bereitstellt. Wenn Sie denselben Namen wie eine öffentliche Komponente wählen, ersetzt Ihre Komponente diese Komponente. AWS IoT Greengrass Stellt dann Ihre Komponente anstelle der öffentlichen Komponente bereit, wenn sie Komponenten bereitstellt, die von dieser öffentlichen Komponente abhängig sind. Mit dieser Funktion können Sie das Verhalten öffentlicher Komponenten außer Kraft setzen, aber sie kann auch andere Komponenten beschädigen, wenn Sie nicht beabsichtigen, eine öffentliche Komponente zu überschreiben.

ComponentVersion

Die Version der Komponente. Der Höchstwert für die Werte Major, Minor und Patch ist 999999.

Anmerkung

AWS IoT Greengrass verwendet semantische Versionen für Komponenten. Semantische Versionen folgen einer Hauptversion. minderwertig. Patch-Nummernsystem. Beispielsweise 1.0.0 steht Version für die erste Hauptversion einer Komponente. Weitere Informationen finden Sie in der semantischen Versionsspezifikation.

ComponentDescription

(Optional) Die Beschreibung der Komponente.

ComponentPublisher

Der Herausgeber oder Autor der Komponente.

ComponentConfiguration

(Optional) Ein Objekt, das die Konfiguration oder Parameter für die Komponente definiert. Sie definieren die Standardkonfiguration, und wenn Sie dann die Komponente bereitstellen, können Sie das Konfigurationsobjekt angeben, das der Komponente zur Verfügung gestellt werden soll. Die Komponentenkonfiguration unterstützt verschachtelte Parameter und Strukturen. Dieses Objekt enthält die folgenden Informationen:

DefaultConfiguration

Ein Objekt, das die Standardkonfiguration für die Komponente definiert. Sie definieren die Struktur dieses Objekts.

Anmerkung

AWS IoT Greengrass verwendet JSON für Konfigurationswerte. JSON spezifiziert einen Zahlentyp, unterscheidet aber nicht zwischen Ganzzahlen und Gleitkommazahlen. Aus diesem Grund können Konfigurationswerte in Float-in-Werte umgewandelt werden. AWS IoT Greengrass Um sicherzustellen, dass Ihre Komponente den richtigen Datentyp verwendet, empfehlen wir, numerische Konfigurationswerte als Zeichenfolgen zu definieren. Lassen Sie sie dann von Ihrer Komponente als ganze Zahlen oder Gleitkommazahlen analysieren. Dadurch wird sichergestellt, dass Ihre Konfigurationswerte in der Konfiguration und auf Ihrem Hauptgerät denselben Typ haben.

ComponentDependencies

(Optional) Ein Wörterbuch mit Objekten, die jeweils eine Komponentenabhängigkeit für die Komponente definieren. Der Schlüssel für jedes Objekt identifiziert den Namen der Komponentenabhängigkeit. AWS IoT Greengrass installiert Komponentenabhängigkeiten, wenn die Komponente installiert wird. AWS IoT Greengrass wartet darauf, dass Abhängigkeiten beginnen, bevor die Komponente gestartet wird. Jedes Objekt enthält die folgenden Informationen:

VersionRequirement

Die semantische Versionseinschränkung im NPM-Stil, die die kompatiblen Komponentenversionen für diese Abhängigkeit definiert. Sie können eine Version oder eine Reihe von Versionen angeben. Weitere Informationen finden Sie im semantischen NPM-Versionsrechner.

DependencyType

(Optional) Der Typ dieser Abhängigkeit. Wählen Sie aus den folgenden Optionen aus.

  • SOFT — Die Komponente startet nicht neu, wenn die Abhängigkeit den Status ändert.

  • HARD — Die Komponente wird neu gestartet, wenn die Abhängigkeit den Status ändert.

Standardeinstellung: HARD.

ComponentType

(Optional) Der Typ der Komponente.

Anmerkung

Es wird nicht empfohlen, den Komponententyp in einem Rezept anzugeben. AWS IoT Greengrass legt den Typ für Sie fest, wenn Sie eine Komponente erstellen.

Bei dem Typ kann es sich um einen der folgenden Typen handeln:

  • aws.greengrass.generic— Die Komponente führt Befehle aus oder stellt Artefakte bereit.

  • aws.greengrass.lambda— Die Komponente führt eine Lambda-Funktion mithilfe der Lambda-Launcher-Komponente aus. Der ComponentSource Parameter gibt den ARN der Lambda-Funktion an, die diese Komponente ausführt.

    Es wird nicht empfohlen, diese Option zu verwenden, da sie festgelegt wird, AWS IoT Greengrass wenn Sie eine Komponente aus einer Lambda-Funktion erstellen. Weitere Informationen finden Sie unter AWS Lambda Funktionen ausführen.

  • aws.greengrass.plugin— Die Komponente läuft auf derselben Java Virtual Machine (JVM) wie der Greengrass-Nucleus. Wenn Sie eine Plugin-Komponente bereitstellen oder neu starten, wird der Greengrass-Nukleus neu gestartet.

    Plugin-Komponenten verwenden dieselbe Protokolldatei wie der Greengrass-Nukleus. Weitere Informationen finden Sie unter AWS IoT Greengrass Protokolle überwachen.

    Wir raten davon ab, diese Option in Komponentenrezepten zu verwenden, da sie für in Java geschriebene Komponenten AWS vorgesehen ist, die direkt mit dem Greengrass-Nukleus verbunden sind. Weitere Hinweise dazu, welche öffentlichen Komponenten Plugins sind, finden Sie unter. AWS-mitgelieferte Komponenten

  • aws.greengrass.nucleus— Die Kernkomponente. Weitere Informationen finden Sie unter Grüngras-Kern.

    Wir raten davon ab, diese Option in Rezepten für Komponenten zu verwenden. Sie ist für die Greengrass Nucleus-Komponente vorgesehen, die die Mindestfunktionalität der AWS IoT Greengrass Core-Software bietet.

Wird standardmäßig verwendet, aws.greengrass.generic wenn Sie eine Komponente aus einem Rezept erstellen oder aws.greengrass.lambda wenn Sie eine Komponente aus einer Lambda-Funktion erstellen.

Weitere Informationen finden Sie unter Komponententypen.

ComponentSource

(Optional) Der ARN der Lambda-Funktion, die eine Komponente ausführt.

Es wird nicht empfohlen, die Komponentenquelle in einem Rezept anzugeben. AWS IoT Greengrass legt diesen Parameter für Sie fest, wenn Sie eine Komponente aus einer Lambda-Funktion erstellen. Weitere Informationen finden Sie unter AWS Lambda Funktionen ausführen.

Manifests

Eine Liste von Objekten, die jeweils den Lebenszyklus, die Parameter und die Anforderungen der Komponente für eine Plattform definieren. Wenn ein Kerngerät die Plattformanforderungen mehrerer Manifeste erfüllt, AWS IoT Greengrass wird das erste Manifest verwendet, dem das Kerngerät entspricht. Um sicherzustellen, dass die Kerngeräte das richtige Manifest verwenden, definieren Sie zuerst die Manifeste mit strengeren Plattformanforderungen. Ein Manifest, das für alle Plattformen gilt, muss das letzte Manifest in der Liste sein.

Wichtig

Ein Kerngerät muss die Plattformanforderungen von mindestens einem Manifest erfüllen, um die Komponente zu installieren. Wenn kein Manifest dem Kerngerät entspricht, installiert die AWS IoT Greengrass Core-Software die Komponente nicht und die Bereitstellung schlägt fehl.

Jedes Objekt enthält die folgenden Informationen:

Name

(Optional) Ein benutzerfreundlicher Name für die Plattform, die dieses Manifest definiert.

Wenn Sie diesen Parameter weglassen, AWS IoT Greengrass wird ein Name aus der Plattform os und architecture erstellt.

Platform

(Optional) Ein Objekt, das die Plattform definiert, für die dieses Manifest gilt. Lassen Sie diesen Parameter weg, um ein Manifest zu definieren, das für alle Plattformen gilt.

Dieses Objekt gibt Schlüssel-Wert-Paare für die Plattform an, auf der ein Kerngerät ausgeführt wird. Wenn Sie diese Komponente bereitstellen, vergleicht die AWS IoT Greengrass Core-Software diese Schlüssel-Wert-Paare mit den Plattformattributen auf dem Kerngerät. Die AWS IoT Greengrass Core-Software definiert immer os undarchitecture, und sie kann zusätzliche Attribute definieren. Sie können benutzerdefinierte Plattformattribute für ein Kerngerät angeben, wenn Sie die Greengrass Nucleus-Komponente bereitstellen. Weitere Informationen finden Sie im Parameter platform overrides der Greengrass Nucleus-Komponente.

Für jedes Schlüssel-Wert-Paar können Sie einen der folgenden Werte angeben:

  • Ein exakter Wert, z. B. linux oder. windows Exakte Werte müssen mit einem Buchstaben oder einer Zahl beginnen.

  • *, was einem beliebigen Wert entspricht. Dies entspricht auch, wenn ein Wert nicht vorhanden ist.

  • Ein Java-style regulärer Ausdruck, wie /windows|linux/ z. B. Der reguläre Ausdruck muss mit einem Schrägstrich (/) beginnen und enden. Der reguläre Ausdruck /.+/ entspricht beispielsweise einem beliebigen Wert, der nicht leer ist.

Dieses Objekt enthält die folgenden Informationen:

runtime

Die Greengrass Nucleus Runtime für die Plattform, die dieses Manifest unterstützt. Bei der Definition mehrerer Manifeste mit der Plattform runtime werden in einem Rezept * nur die folgenden Laufzeitwerte unterstützt. aws_nucleus_lite Um ein klassisches Gerät als Ziel zu verwenden, DARF das Laufzeitfeld NICHT im Rezept angegeben werden. Zu den unterstützten Greengrass Nucleus-Laufzeiten gehören die folgenden Werte:

  • *

  • aws_nucleus_lite

os

(Optional) Der Name des Betriebssystems für die Plattform, die dieses Manifest unterstützt. Gängige Plattformen enthalten die folgenden Werte:

  • linux

  • windows

  • darwin (macOS)

architecture

(Optional) Die Prozessorarchitektur für die Plattform, die dieses Manifest unterstützt. Zu den gängigen Architekturen gehören die folgenden Werte:

  • amd64

  • arm

  • aarch64

  • x86

architecture.detail

(Optional) Die Details zur Prozessorarchitektur für die Plattform, die dieses Manifest unterstützt. Zu den allgemeinen Architekturdetails gehören die folgenden Werte:

  • arm61

  • arm71

  • arm81

key

(Optional) Ein Plattformattribut, das Sie für dieses Manifest definieren. KeyErsetzen Sie es durch den Namen des Plattformattributs. Die AWS IoT Greengrass Core-Software ordnet dieses Plattformattribut den Schlüssel-Wert-Paaren zu, die Sie in der Greengrass-Nucleus-Komponentenkonfiguration angeben. Weitere Informationen finden Sie im Parameter platform overrides der Greengrass-Nucleus-Komponente. Grüngras-Kern

Tipp

Verwenden Sie das umgekehrte Domainnamenformat, um Namenskollisionen innerhalb Ihres Unternehmens zu vermeiden. Wenn Ihr Unternehmen beispielsweise ein Radioprojekt besitzt example.com und Sie daran arbeiten, können Sie ein benutzerdefiniertes Plattformattribut com.example.radio.RadioModule benennen. Auf diese Weise können Kollisionen zwischen den Namen von Plattformattributen innerhalb Ihres Unternehmens vermieden werden.

Sie können beispielsweise ein Plattformattribut definieren, um je com.example.radio.RadioModule nachdem, welches Funkmodul auf einem Kerngerät verfügbar ist, ein anderes Manifest anzugeben. Jedes Manifest kann verschiedene Artefakte enthalten, die für unterschiedliche Hardwarekonfigurationen gelten, sodass Sie das Mindestmaß an Software auf dem Kerngerät bereitstellen müssen.

Lifecycle

Ein Objekt oder eine Zeichenfolge, die definiert, wie die Komponente auf der Plattform installiert und ausgeführt wird, die dieses Manifest definiert. Sie können auch einen globalen Lebenszyklus definieren, der für alle Plattformen gilt. Das Kerngerät verwendet den globalen Lebenszyklus nur, wenn das zu verwendende Manifest keinen Lebenszyklus angibt.

Anmerkung

Sie definieren diesen Lebenszyklus in einem Manifest. Die Lebenszyklusschritte, die Sie hier angeben, gelten nur für die Plattform, die dieses Manifest definiert. Sie können auch einen globalen Lebenszyklus definieren, der für alle Plattformen gilt.

Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:

Setenv

(Optional) Ein Wörterbuch mit Umgebungsvariablen, das allen Lifecycle-Skripten zur Verfügung gestellt werden soll. Sie können diese Umgebungsvariablen Setenv in jedem Lifecycle-Skript überschreiben.

install

(Optional) Ein Objekt oder eine Zeichenfolge, die das Skript definiert, das bei der Installation der Komponente ausgeführt werden soll. Die AWS IoT Greengrass Core-Software führt diesen Lebenszyklusschritt auch bei jedem Start der Software aus.

Wenn das install Skript mit einem Erfolgscode beendet wird, wechselt die Komponente in den INSTALLED Status.

Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als der Benutzer aus, der den Greengrass Nucleus ausführt, und nicht als der Systembenutzer, der für diese Komponente konfiguriert ist. Wenn der Nucleus als Root ausgeführt wird, werden Root-Rechte für das Skript gewährt. Standardeinstellung: false.

Skipif

(Optional) Die Überprüfung, ob das Skript ausgeführt werden soll oder nicht. Sie können festlegen, dass überprüft wird, ob sich eine ausführbare Datei im Pfad befindet oder ob eine Datei existiert. Wenn die Ausgabe wahr ist, überspringt die AWS IoT Greengrass Core-Software den Schritt. Wählen Sie eine der folgenden Prüfungen:

  • onpath runnable— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel, onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel, exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, falls /tmp/my-configuration.db vorhanden.

Timeout

(Optional) Die maximale Zeit in Sekunden, die das Skript ausführen kann, bevor die AWS IoT Greengrass Core-Software den Prozess beendet.

Standard: 120 Sekunden

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript zur Verfügung gestellt werden sollen. Diese Umgebungsvariablen überschreiben die Variablen, die Sie in angebenLifecycle.Setenv.

run

(Optional) Ein Objekt oder eine Zeichenfolge, die das Skript definiert, das beim Start der Komponente ausgeführt werden soll.

Die Komponente wechselt in den RUNNING Zustand, in dem dieser Lebenszyklusschritt ausgeführt wird. Wenn das run Skript mit einem Erfolgscode beendet wird, wechselt die Komponente in den STOPPING Status. Wenn ein shutdown Skript angegeben ist, wird es ausgeführt; andernfalls wechselt die Komponente in den FINISHED Status.

Komponenten, die von dieser Komponente abhängen, werden gestartet, wenn dieser Lebenszyklusschritt ausgeführt wird. Verwenden Sie stattdessen den startup Lebenszyklusschritt, um einen Hintergrundprozess auszuführen, z. B. einen Dienst, den abhängige Komponenten verwenden.

Wenn Sie Komponenten mit einem run Lebenszyklus bereitstellen, kann das Kerngerät die Bereitstellung als abgeschlossen melden, sobald dieses Lifecycle-Skript ausgeführt wird. Dadurch kann die Bereitstellung abgeschlossen und erfolgreich sein, selbst wenn das run Lifecycle-Skript kurz nach der Ausführung ausfällt. Wenn der Bereitstellungsstatus vom Ergebnis des Startskripts der Komponente abhängen soll, verwenden Sie stattdessen den startup Lifecycle-Schritt.

Anmerkung

Sie können nur einen startup oder einen run Lebenszyklus definieren.

Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als der Benutzer aus, der den Greengrass Nucleus ausführt, und nicht als der Systembenutzer, der für diese Komponente konfiguriert ist. Wenn der Nucleus als Root ausgeführt wird, werden Root-Rechte für das Skript gewährt. Standardeinstellung: false.

Skipif

(Optional) Die Überprüfung, ob das Skript ausgeführt werden soll oder nicht. Sie können festlegen, dass überprüft wird, ob sich eine ausführbare Datei im Pfad befindet oder ob eine Datei existiert. Wenn die Ausgabe wahr ist, überspringt die AWS IoT Greengrass Core-Software den Schritt. Wählen Sie eine der folgenden Prüfungen:

  • onpath runnable— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel, onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel, exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, falls /tmp/my-configuration.db vorhanden.

Timeout

(Optional) Die maximale Zeit in Sekunden, die das Skript ausführen kann, bevor die AWS IoT Greengrass Core-Software den Prozess beendet.

Bei diesem Lebenszyklusschritt tritt standardmäßig kein Timeout auf. Wenn Sie diesen Timeout weglassen, wird das run Skript so lange ausgeführt, bis es beendet wird.

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript zur Verfügung gestellt werden sollen. Diese Umgebungsvariablen überschreiben die Variablen, die Sie in angebenLifecycle.Setenv.

startup

(Optional) Ein Objekt oder eine Zeichenfolge, die den Hintergrundprozess definiert, der beim Start der Komponente ausgeführt werden soll.

Wird verwendetstartup, um einen Befehl auszuführen, der erfolgreich beendet werden muss, oder um den Status der Komponente so zu aktualisierenRUNNING, dass abhängige Komponenten gestartet werden können. Verwenden Sie die UpdateState IPC-Operation, um den Status der Komponente auf RUNNING oder zu setzen, ERRORED wenn die Komponente ein Skript startet, das nicht beendet wird. Sie könnten beispielsweise einen startup Schritt definieren, mit /etc/init.d/mysqld start dem der MySQL-Prozess gestartet wird.

Die Komponente wechselt in den STARTING Zustand, in dem dieser Lebenszyklusschritt ausgeführt wird. Wenn das startup Skript mit einem Erfolgscode beendet wird, wechselt die Komponente in den RUNNING Status. Dann können abhängige Komponenten gestartet werden.

Wenn Sie Komponenten mit einem startup Lebenszyklus bereitstellen, kann das Kerngerät die Bereitstellung als abgeschlossen melden, nachdem dieses Lifecycle-Skript beendet wurde oder seinen Status gemeldet hat. Mit anderen Worten, der Status der Bereitstellung gilt so lange, IN_PROGRESS bis die Startskripts aller Komponenten beendet werden oder einen Status melden.

Anmerkung

Sie können nur einen startup oder einen run Lebenszyklus definieren.

Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als der Benutzer aus, der den Greengrass Nucleus ausführt, und nicht als der Systembenutzer, der für diese Komponente konfiguriert ist. Wenn der Nucleus als Root ausgeführt wird, werden Root-Rechte für das Skript gewährt. Standardeinstellung: false.

Skipif

(Optional) Die Überprüfung, ob das Skript ausgeführt werden soll oder nicht. Sie können festlegen, dass überprüft wird, ob sich eine ausführbare Datei im Pfad befindet oder ob eine Datei existiert. Wenn die Ausgabe wahr ist, überspringt die AWS IoT Greengrass Core-Software den Schritt. Wählen Sie eine der folgenden Prüfungen:

  • onpath runnable— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel, onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel, exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, falls /tmp/my-configuration.db vorhanden.

Timeout

(Optional) Die maximale Zeit in Sekunden, die das Skript ausführen kann, bevor die AWS IoT Greengrass Core-Software den Prozess beendet.

Standard: 120 Sekunden

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript zur Verfügung gestellt werden sollen. Diese Umgebungsvariablen überschreiben die Variablen, die Sie in angebenLifecycle.Setenv.

shutdown

(Optional) Ein Objekt oder eine Zeichenfolge, die das Skript definiert, das ausgeführt werden soll, wenn die Komponente heruntergefahren wird. Verwenden Sie den Shutdown-Lebenszyklus, um Code auszuführen, den Sie ausführen möchten, wenn sich die Komponente im STOPPING Status befindet. Der Shutdown-Lebenszyklus kann verwendet werden, um einen Prozess zu stoppen, der von den startup run ODER-Skripten gestartet wurde.

Wenn Sie einen Hintergrundprozess in startenstartup, verwenden Sie den shutdown Schritt, um diesen Prozess zu beenden, wenn die Komponente heruntergefahren wird. Beispielsweise könnten Sie einen shutdown Schritt definieren, der den MySQL-Prozess mit /etc/init.d/mysqld stop beendet.

Das shutdown Skript wird ausgeführt, nachdem die Komponente den STOPPING Status erreicht hat. Wenn das Skript erfolgreich abgeschlossen wird, wechselt die Komponente in den FINISHED Status.

Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als der Benutzer aus, der den Greengrass Nucleus ausführt, und nicht als der Systembenutzer, der für diese Komponente konfiguriert ist. Wenn der Nucleus als Root ausgeführt wird, werden Root-Rechte für das Skript gewährt. Standardeinstellung: false.

Skipif

(Optional) Die Überprüfung, ob das Skript ausgeführt werden soll oder nicht. Sie können festlegen, dass überprüft wird, ob sich eine ausführbare Datei im Pfad befindet oder ob eine Datei existiert. Wenn die Ausgabe wahr ist, überspringt die AWS IoT Greengrass Core-Software den Schritt. Wählen Sie eine der folgenden Prüfungen:

  • onpath runnable— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel, onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel, exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, falls /tmp/my-configuration.db vorhanden.

Timeout

(Optional) Die maximale Zeit in Sekunden, die das Skript ausführen kann, bevor die AWS IoT Greengrass Core-Software den Prozess beendet.

Standard: 15 Sekunden.

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript zur Verfügung gestellt werden sollen. Diese Umgebungsvariablen überschreiben die Variablen, die Sie in angebenLifecycle.Setenv.

uninstall

(Optional) Ein Objekt oder eine Zeichenfolge, die das Skript definiert, das ausgeführt werden soll, wenn die Komponente dauerhaft vom Gerät entfernt wird. Die AWS IoT Greengrass Core-Software führt diesen Schritt aus, wenn eine Bereitstellung eine Komponente entfernt. Dieser Schritt wird bei Upgrades der Komponentenversion nicht ausgeführt.

Anmerkung

Für diese Funktion ist Greengrass Nucleus Version 2.17.0 oder höher erforderlich. In früheren Nucleus-Versionen führt die AWS IoT Greengrass Core-Software den Lebenszyklusschritt der Deinstallation nicht aus, wenn sie eine Komponente entfernt.

Die Komponente geht in den UNINSTALLING Zustand über, in dem dieser Lebenszyklusschritt ausgeführt wird. Wenn das Deinstallationsskript fehlschlägt oder das Zeitlimit überschritten wird, wird die Komponente trotzdem entfernt. Bei Deinstallationsfehlern schlägt die Bereitstellung nicht fehl.

Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als der Benutzer aus, der den Greengrass Nucleus ausführt, und nicht als der Systembenutzer, der für diese Komponente konfiguriert ist. Wenn der Nucleus als Root ausgeführt wird, werden Root-Rechte für das Skript gewährt. Standardeinstellung: false.

Skipif

(Optional) Die Überprüfung, ob das Skript ausgeführt werden soll oder nicht. Sie können festlegen, dass überprüft wird, ob sich eine ausführbare Datei im Pfad befindet oder ob eine Datei existiert. Wenn die Ausgabe wahr ist, überspringt die AWS IoT Greengrass Core-Software den Schritt. Wählen Sie eine der folgenden Prüfungen:

  • onpath runnable— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel, onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel, exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, falls /tmp/my-configuration.db vorhanden.

Timeout

(Optional) Die maximale Zeit in Sekunden, die das Skript ausführen kann, bevor die AWS IoT Greengrass Core-Software den Prozess beendet.

Standard: 120 Sekunden

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript zur Verfügung gestellt werden sollen. Diese Umgebungsvariablen überschreiben die Variablen, die Sie in angebenLifecycle.Setenv.

recover

(Optional) Ein Objekt oder eine Zeichenfolge, die das Skript definiert, das ausgeführt werden soll, wenn die Komponente auf einen Fehler stößt.

Dieser Schritt wird ausgeführt, wenn eine Komponente in den ERRORED Status übergeht. Wenn die Komponente ERRORED dreimal wiederholt wird, ohne dass sie erfolgreich wiederhergestellt wurde, wechselt die Komponente in den BROKEN Status. Um eine BROKEN Komponente zu reparieren, müssen Sie sie erneut bereitstellen.

Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als der Benutzer aus, der den Greengrass Nucleus ausführt, und nicht als der Systembenutzer, der für diese Komponente konfiguriert ist. Wenn der Nucleus als Root ausgeführt wird, werden Root-Rechte für das Skript gewährt. Standardeinstellung: false.

Skipif

(Optional) Die Überprüfung, ob das Skript ausgeführt werden soll oder nicht. Sie können festlegen, dass überprüft wird, ob sich eine ausführbare Datei im Pfad befindet oder ob eine Datei existiert. Wenn die Ausgabe wahr ist, überspringt die AWS IoT Greengrass Core-Software den Schritt. Wählen Sie eine der folgenden Prüfungen:

  • onpath runnable— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel, onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel, exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, falls /tmp/my-configuration.db vorhanden.

Timeout

(Optional) Die maximale Zeit in Sekunden, die das Skript ausführen kann, bevor die AWS IoT Greengrass Core-Software den Prozess beendet.

Standard: 60 Sekunden.

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript zur Verfügung gestellt werden sollen. Diese Umgebungsvariablen überschreiben die Variablen, die Sie in angebenLifecycle.Setenv.

bootstrap

(Optional) Ein Objekt oder eine Zeichenfolge, die ein Skript definiert, für das ein Neustart der AWS IoT Greengrass Core-Software oder des Core-Geräts erforderlich ist. Auf diese Weise können Sie beispielsweise eine Komponente entwickeln, die nach der Installation von Betriebssystemupdates oder Runtime-Updates einen Neustart durchführt.

Dieser Lebenszyklusschritt wird in den folgenden Fällen vor dem Schritt des Installationslebenszyklus ausgeführt, wenn die AWS IoT Greengrass Core-Software die Komponente bereitstellt:

  • Die Komponente wird zum ersten Mal auf dem Kerngerät bereitgestellt.

  • Die Komponentenversion ändert sich.

  • Das Bootstrap-Skript ändert sich als Ergebnis einer Aktualisierung der Komponentenkonfiguration.

Nachdem die AWS IoT Greengrass Core-Software den Bootstrap-Schritt für alle Komponenten abgeschlossen hat, die in einer Bereitstellung über einen Bootstrap-Schritt verfügen, wird die Software neu gestartet.

Anmerkung

Die AWS IoT Greengrass Core-Software ignoriert die Richtlinie zur Fehlerbehandlung für Bootstrap-Bereitstellungen. Wenn eine Bereitstellung, bei der Bootstrap-Lebenszyklusschritte ausgeführt werden, fehlschlägt, wird das Kerngerät auf die vorherige Konfiguration zurückgesetzt. Das Rollback erfolgt auch dann, wenn Sie die Richtlinie zur Fehlerbehandlung auf festlegen. DO_NOTHING Weitere Informationen finden Sie unter Erstellen von Bereitstellungen.

Wichtig

Sie müssen die AWS IoT Greengrass Core-Software als Systemdienst konfigurieren, um die AWS IoT Greengrass Core-Software oder das Core-Gerät neu zu starten. Wenn Sie die AWS IoT Greengrass Core-Software nicht als Systemdienst konfigurieren, wird die Software nicht neu gestartet. Weitere Informationen finden Sie unter Den Greengrass Nucleus als Systemdienst konfigurieren.

Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:

BootstrapOnRollback
Anmerkung

Wenn diese Funktion aktiviert ist, BootstrapOnRollback wird sie nur für Komponenten ausgeführt, die die Bootstrap-Lebenszyklusschritte entweder abgeschlossen haben oder versucht haben, sie als Teil einer fehlgeschlagenen Zielbereitstellung auszuführen. Diese Funktion ist für Greengrass Nucleus-Versionen 2.12.0 und höher verfügbar.

(Optional) Sie können die Bootstrap-Lebenszyklusschritte als Teil einer Rollback-Bereitstellung ausführen. Wenn Sie diese Option auf setzentrue, werden die in einer Rollback-Bereitstellung definierten Bootstrap-Lebenszyklusschritte ausgeführt. Wenn eine Bereitstellung fehlschlägt, wird die vorherige Version des Komponenten-Bootstrap-Lebenszyklus während einer Rollback-Bereitstellung erneut ausgeführt.

Standardeinstellung: false.

Script

Das auszuführende Skript. Der Exitcode dieses Skripts definiert die Neustartanweisung. Verwenden Sie die folgenden Exit-Codes:

  • 0— Starten Sie die AWS IoT Greengrass Core-Software oder das Core-Gerät nicht neu. Die AWS IoT Greengrass Core-Software wird nach dem Bootstrapping aller Komponenten immer noch neu gestartet.

  • 100— Aufforderung zum Neustart der AWS IoT Greengrass Core-Software.

  • 101— Aufforderung zum Neustart des Kerngeräts.

Die Exit-Codes 100 bis 199 sind für spezielles Verhalten reserviert. Andere Exitcodes stehen für Skriptfehler.

RequiresPrivilege

(Optional) Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als der Benutzer aus, der den Greengrass Nucleus ausführt, und nicht als der Systembenutzer, der für diese Komponente konfiguriert ist. Wenn der Nucleus als Root ausgeführt wird, werden Root-Rechte für das Skript gewährt. Standardeinstellung: false.

Timeout

(Optional) Die maximale Zeit in Sekunden, die das Skript ausführen kann, bevor die AWS IoT Greengrass Core-Software den Prozess beendet.

Standard: 120 Sekunden

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript zur Verfügung gestellt werden sollen. Diese Umgebungsvariablen überschreiben die Variablen, die Sie in angebenLifecycle.Setenv.

Selections

(Optional) Eine Liste von Auswahlschlüsseln, die Abschnitte des globalen Lebenszyklus angeben, die für dieses Manifest ausgeführt werden sollen. Im globalen Lebenszyklus können Sie Lebenszyklusschritte mit Auswahlschlüsseln auf jeder Ebene definieren, um Unterabschnitte des Lebenszyklus auszuwählen. Dann verwendet das Kerngerät die Abschnitte, die den Auswahlschlüsseln in diesem Manifest entsprechen. Weitere Informationen finden Sie in den Beispielen für den globalen Lebenszyklus.

Wichtig

Das Kerngerät verwendet die Auswahlen aus dem globalen Lebenszyklus nur, wenn dieses Manifest keinen Lebenszyklus definiert.

Sie können den all Auswahlschlüssel angeben, um Abschnitte des globalen Lebenszyklus auszuführen, die keine Auswahlschlüssel haben.

Artifacts

(Optional) Eine Liste von Objekten, die jeweils ein binäres Artefakt für die Komponente auf der Plattform definieren, die dieses Manifest definiert. Sie können beispielsweise Code oder Bilder als Artefakte definieren.

Wenn die Komponente bereitgestellt wird, lädt die AWS IoT Greengrass Core-Software das Artefakt in einen Ordner auf dem Core-Gerät herunter. Sie können Artefakte auch als Archivdateien definieren, die die Software nach dem Herunterladen extrahiert.

Sie können Rezeptvariablen verwenden, um die Pfade zu den Ordnern abzurufen, in denen die Artefakte auf dem Kerngerät installiert werden.

  • Normale Dateien — Verwenden Sie die Rezeptvariable artifacts:path, um den Pfad zu dem Ordner abzurufen, der die Artefakte enthält. Geben Sie beispielsweise {artifacts:path}/my_script.py in einem Rezept an, dass der Pfad zu einem Artefakt abgerufen werden soll, das den URI enthält. s3://amzn-s3-demo-bucket/path/to/my_script.py

  • Extrahierte Archive — Verwenden Sie die Rezeptvariable artifacts:decompressedPath, um den Pfad zu dem Ordner abzurufen, der die entpackten Archivartefakte enthält. Die AWS IoT Greengrass Core-Software extrahiert jedes Archiv in einen Ordner mit demselben Namen wie das Archiv. Geben Sie beispielsweise {artifacts:decompressedPath}/my_archive/my_script.py in einem Rezept an, um den Pfad zu my_script.py dem Archivartefakt abzurufen, das den URI s3://amzn-s3-demo-bucket/path/to/my_archive.zip enthält.

Anmerkung

Wenn Sie eine Komponente mit einem Archivartefakt auf einem lokalen Kerngerät entwickeln, haben Sie möglicherweise keinen URI für dieses Artefakt. Um Ihre Komponente mit einer Unarchive Option zu testen, die das Artefakt extrahiert, geben Sie eine URI an, bei der der Dateiname mit dem Namen Ihrer Archivartefaktdatei übereinstimmt. Sie können den URI angeben, in den Sie das Archivartefakt hochladen möchten, oder Sie können einen neuen Platzhalter-URI angeben. Um das my_archive.zip Artefakt beispielsweise während einer lokalen Bereitstellung zu extrahieren, können Sie Folgendes angeben. s3://amzn-s3-demo-bucket/my_archive.zip

Jedes Objekt enthält die folgenden Informationen:

Uri

Die URI eines Artefakts in einem S3-Bucket. Die AWS IoT Greengrass Core-Software ruft das Artefakt von dieser URI ab, wenn die Komponente installiert wird, es sei denn, das Artefakt ist bereits auf dem Gerät vorhanden. Jedes Artefakt muss in jedem Manifest einen eindeutigen Dateinamen haben.

Unarchive

(Optional) Der Typ des zu entpackenden Archivs. Wählen Sie aus den folgenden Optionen aus:

  • NONE— Die Datei ist kein Archiv zum Entpacken. Die AWS IoT Greengrass Core-Software installiert das Artefakt in einem Ordner auf dem Core-Gerät. Sie können die Rezeptvariable artifacts:path verwenden, um den Pfad zu diesem Ordner abzurufen.

  • ZIP— Die Datei ist ein ZIP-Archiv. Die AWS IoT Greengrass Core-Software extrahiert das Archiv in einen Ordner mit demselben Namen wie das Archiv. Sie können die Rezeptvariable artifacts:decompressedPath verwenden, um den Pfad zu dem Ordner abzurufen, der diesen Ordner enthält.

Standardeinstellung: NONE.

Permission

(Optional) Ein Objekt, das die Zugriffsberechtigungen definiert, die für diese Artefaktdatei festgelegt werden müssen. Sie können die Leseberechtigung und die Ausführungsberechtigung festlegen.

Anmerkung

Sie können die Schreibberechtigung nicht festlegen, da die AWS IoT Greengrass Core-Software Komponenten nicht erlaubt, Artefaktdateien im Artifact-Ordner zu bearbeiten. Um eine Artefaktdatei in einer Komponente zu bearbeiten, kopieren Sie sie an einen anderen Speicherort oder veröffentlichen Sie eine neue Artefaktdatei und stellen Sie sie bereit.

Wenn Sie ein Artefakt als Archiv zum Entpacken definieren, legt die AWS IoT Greengrass Core-Software diese Zugriffsberechtigungen für die Dateien fest, die sie aus dem Archiv entpackt. Die AWS IoT Greengrass Core-Software setzt die Zugriffsberechtigungen für den Ordner auf ALL für Read und. Execute Dadurch können Komponenten die entpackten Dateien im Ordner anzeigen. Um Berechtigungen für einzelne Dateien aus dem Archiv festzulegen, können Sie die Berechtigungen im Installationslebenszyklus-Skript festlegen.

Dieses Objekt enthält die folgenden Informationen:

Read

(Optional) Die Leseberechtigung, die für diese Artefaktdatei festgelegt werden muss. Geben Sie Folgendes an, um anderen Komponenten den Zugriff auf dieses Artefakt zu ermöglichen, z. B. Komponenten, die von dieser Komponente abhängen. ALL Wählen Sie aus den folgenden Optionen aus:

  • NONE— Die Datei ist nicht lesbar.

  • OWNER— Die Datei ist für den Systembenutzer lesbar, den Sie für die Ausführung dieser Komponente konfiguriert haben.

  • ALL— Die Datei ist für alle Benutzer lesbar.

Standardeinstellung: OWNER.

Execute

(Optional) Die Ausführungsberechtigung, die für diese Artefaktdatei festgelegt werden muss. Die Execute Erlaubnis impliziert die Read Erlaubnis. Wenn Sie beispielsweise ALL für angebenExecute, können alle Benutzer diese Artefaktdatei lesen und ausführen.

Wählen Sie aus den folgenden Optionen aus:

  • NONE— Die Datei ist nicht lauffähig.

  • OWNER— Die Datei kann von dem Systembenutzer ausgeführt werden, den Sie für die Ausführung der Komponente konfiguriert haben.

  • ALL— Die Datei kann von allen Benutzern ausgeführt werden.

Standardeinstellung: NONE.

Digest

(Read-only) Der kryptografische Digest-Hash des Artefakts. Wenn Sie eine Komponente erstellen, AWS IoT Greengrass verwendet sie einen Hash-Algorithmus, um einen Hash der Artefaktdatei zu berechnen. Wenn Sie dann die Komponente bereitstellen, berechnet der Greengrass-Nukleus den Hash des heruntergeladenen Artefakts und vergleicht den Hash mit diesem Digest, um das Artefakt vor der Installation zu verifizieren. Wenn der Hash nicht mit dem Digest übereinstimmt, schlägt die Bereitstellung fehl.

Wenn Sie diesen Parameter festlegen, AWS IoT Greengrass ersetzt er den Wert, den Sie beim Erstellen der Komponente festgelegt haben.

Algorithm

(Read-only) Der Hash-Algorithmus, der AWS IoT Greengrass verwendet wird, um den Digest-Hash des Artefakts zu berechnen.

Wenn Sie diesen Parameter festlegen, AWS IoT Greengrass ersetzt er den Wert, den Sie beim Erstellen der Komponente festgelegt haben.

Lifecycle

Ein Objekt, das definiert, wie die Komponente installiert und ausgeführt wird. Das Kerngerät verwendet den globalen Lebenszyklus nur, wenn das zu verwendende Manifest keinen Lebenszyklus angibt.

Anmerkung

Sie definieren diesen Lebenszyklus außerhalb eines Manifests. Sie können auch einen Manifest-Lebenszyklus definieren, der für die Plattformen gilt, die diesem Manifest entsprechen.

Im globalen Lebenszyklus können Sie Lebenszyklen angeben, die für bestimmte Auswahlschlüssel ausgeführt werden, die Sie in jedem Manifest angeben. Auswahlschlüssel sind Zeichenfolgen, die Abschnitte des globalen Lebenszyklus identifizieren, die für jedes Manifest ausgeführt werden sollen.

Die all Auswahltaste ist die Standardeinstellung für alle Abschnitte ohne Auswahlschlüssel. Das bedeutet, dass Sie den all Auswahlschlüssel in einem Manifest angeben können, um die Abschnitte des globalen Lebenszyklus ohne Auswahlschlüssel auszuführen. Sie müssen den all Auswahlschlüssel im globalen Lebenszyklus nicht angeben.

Wenn ein Manifest keinen Lebenszyklus oder keine Auswahlschlüssel definiert, verwendet das Kerngerät standardmäßig die all Auswahl. Das bedeutet, dass in diesem Fall das Kerngerät die Abschnitte des globalen Lebenszyklus verwendet, die keine Auswahltasten verwenden.

Dieses Objekt enthält dieselben Informationen wie der Manifest-Lebenszyklus, Sie können jedoch auf jeder Ebene Auswahlschlüssel angeben, um Unterabschnitte des Lebenszyklus auszuwählen.

Tipp

Wir empfehlen, für jeden Auswahlschlüssel nur Kleinbuchstaben zu verwenden, um Konflikte zwischen Auswahlschlüsseln und Lebenszyklusschlüsseln zu vermeiden. Lifecycle-Schlüssel beginnen mit einem Großbuchstaben.

Beispiel Beispiel für einen globalen Lebenszyklus mit Auswahlschlüsseln der obersten Ebene
Lifecycle: key1: install: SkipIf: either onpath executable or exists file Script: command1 key2: install: Script: command2 all: install: Script: command3
Beispiel Beispiel für einen globalen Lebenszyklus mit Auswahlschlüsseln auf unterster Ebene
Lifecycle: install: Script: key1: command1 key2: command2 all: command3
Beispiel Beispiel für einen globalen Lebenszyklus mit Auswahlschlüsseln auf mehreren Ebenen
Lifecycle: key1: install: SkipIf: either onpath executable or exists file Script: command1 key2: install: Script: command2 all: install: Script: key3: command3 key4: command4 all: command5

Rezeptvariablen

Rezeptvariablen enthalten Informationen aus der aktuellen Komponente und dem Kern, die Sie in Ihren Rezepten verwenden können. Beispielsweise können Sie eine Rezepturvariable verwenden, um Komponenten-Konfigurationsparameter an eine Anwendung zu übergeben, die Sie in einem Lifecycle-Skript ausführen.

Sie können Rezeptvariablen in den folgenden Abschnitten von Komponentenrezepten verwenden:

  • Lebenszyklus-Definitionen.

  • Definitionen der Komponentenkonfiguration, wenn Sie Greengrass Nucleus v2.6.0 oder höher verwenden und die Konfigurationsoption ComponentConfiguration interpolieren auf setzen. true Sie können auch Rezeptvariablen verwenden, wenn Sie Aktualisierungen der Komponentenkonfiguration bereitstellen.

Rezeptvariablen verwenden {recipe_variable} Syntax. Die geschweiften Klammern stehen für eine Rezeptvariable.

AWS IoT Greengrass unterstützt die folgenden Rezeptvariablen:

component_dependency_name:configuration:json_pointer

Der Wert eines Konfigurationsparameters für die Komponente, die dieses Rezept definiert, oder für eine Komponente, von der diese Komponente abhängt.

Sie können diese Variable verwenden, um einen Parameter für ein Skript bereitzustellen, das Sie im Lebenszyklus der Komponente ausführen.

Anmerkung

AWS IoT Greengrass unterstützt diese Rezeptvariable nur in Definitionen des Komponentenlebenszyklus.

Diese Rezeptvariable hat die folgenden Eingaben:

  • component_dependency_name— (Optional) Der Name der abzufragenden Komponentenabhängigkeit. Lassen Sie dieses Segment aus, um die Komponente abzufragen, die dieses Rezept definiert. Sie können nur direkte Abhängigkeiten angeben.

  • json_pointer— Der JSON-Zeiger auf den auszuwertenden Konfigurationswert. JSON-Zeiger beginnen mit einem / Schrägstrich. Um einen Wert in einer Konfiguration mit verschachtelten Komponenten zu identifizieren, verwenden Sie Schrägstriche (/), um die Schlüssel für jede Ebene in der Konfiguration zu trennen. Sie können eine Zahl als Schlüssel verwenden, um einen Index in einer Liste anzugeben. Weitere Informationen finden Sie in der JSON-Pointer-Spezifikation.

    AWS IoT Greengrass Core verwendet JSON-Zeiger für Rezepte im YAML-Format.

Der JSON-Zeiger kann auf die folgenden Knotentypen verweisen:

  • Ein Wertknoten. AWS IoT Greengrass Core ersetzt die Rezeptvariable durch die Zeichenkettendarstellung des Werts. Nullwerte werden in null eine Zeichenfolge konvertiert.

  • Ein Objektknoten. AWS IoT Greengrass Core ersetzt die Rezeptvariable durch die serialisierte JSON-Zeichenfolgendarstellung dieses Objekts.

  • Kein Knoten. AWS IoT Greengrass Core ersetzt die Rezeptvariable nicht.

Beispielsweise ruft die {configuration:/Message} Rezeptvariable den Wert des Message Schlüssels in der Komponentenkonfiguration ab. Die {com.example.MyComponentDependency:configuration:/server/port} Rezeptvariable ruft den Wert von port im server Konfigurationsobjekt einer Komponentenabhängigkeit ab.

component_dependency_name:artifacts:path

Der Stammpfad der Artefakte für die Komponente, die dieses Rezept definiert, oder für eine Komponente, von der diese Komponente abhängt.

Bei der Installation einer Komponente werden die Artefakte der Komponente in den Ordner AWS IoT Greengrass kopiert, den diese Variable verfügbar macht. Sie können diese Variable beispielsweise verwenden, um den Speicherort eines Skripts zu identifizieren, das im Lebenszyklus einer Komponente ausgeführt werden soll.

Der Ordner in diesem Pfad ist schreibgeschützt. Um Artefaktdateien zu ändern, kopieren Sie die Dateien an einen anderen Speicherort, z. B. in das aktuelle Arbeitsverzeichnis ($PWDoder). . Ändern Sie dann die Dateien dort.

Um ein Artefakt aus einer Komponentenabhängigkeit lesen oder ausführen zu können, muss dieses Artefakt über die Execute entsprechende Berechtigung verfügen. Read ALL Weitere Informationen finden Sie in den Artefaktberechtigungen, die Sie im Komponentenrezept definieren.

Diese Rezepturvariable hat die folgenden Eingaben:

  • component_dependency_name— (Optional) Der Name der abzufragenden Komponentenabhängigkeit. Lassen Sie dieses Segment aus, um die Komponente abzufragen, die dieses Rezept definiert. Sie können nur direkte Abhängigkeiten angeben.

component_dependency_name:artifacts:decompressedPath

Der Stammpfad der dekomprimierten Archivartefakte für die Komponente, die dieses Rezept definiert, oder für eine Komponente, von der diese Komponente abhängt.

Bei der Installation einer Komponente werden die Archivartefakte der Komponente in den Ordner AWS IoT Greengrass entpackt, den diese Variable verfügbar macht. Sie können diese Variable beispielsweise verwenden, um den Speicherort eines Skripts zu identifizieren, das im Lebenszyklus einer Komponente ausgeführt werden soll.

Jedes Artefakt wird in einen Ordner innerhalb des dekomprimierten Pfads entpackt, wobei der Ordner denselben Namen wie das Artefakt abzüglich seiner Erweiterung hat. Beispielsweise wird ein ZIP-Artefakt mit dem Namen in den Ordner entpackt. models.zip {artifacts:decompressedPath}/models

Der Ordner in diesem Pfad ist schreibgeschützt. Um Artefaktdateien zu ändern, kopieren Sie die Dateien an einen anderen Speicherort, z. B. in das aktuelle Arbeitsverzeichnis ($PWDoder). . Ändern Sie dann die Dateien dort.

Um ein Artefakt aus einer Komponentenabhängigkeit lesen oder ausführen zu können, muss dieses Artefakt über die Execute entsprechende Berechtigung verfügen. Read ALL Weitere Informationen finden Sie in den Artefaktberechtigungen, die Sie im Komponentenrezept definieren.

Diese Rezepturvariable hat die folgenden Eingaben:

  • component_dependency_name— (Optional) Der Name der abzufragenden Komponentenabhängigkeit. Lassen Sie dieses Segment aus, um die Komponente abzufragen, die dieses Rezept definiert. Sie können nur direkte Abhängigkeiten angeben.

component_dependency_name:work:path

Diese Funktion ist für Version 2.0.4 und höher der Greengrass Nucleus-Komponente verfügbar.

Der Arbeitspfad für die Komponente, die dieses Rezept definiert, oder für eine Komponente, von der diese Komponente abhängt. Der Wert dieser Rezeptvariablen entspricht der Ausgabe der $PWD Umgebungsvariablen und des Befehls pwd, wenn sie im Kontext der Komponente ausgeführt werden.

Sie können diese Rezeptvariable verwenden, um Dateien zwischen einer Komponente und einer Abhängigkeit gemeinsam zu nutzen.

Der Ordner in diesem Pfad ist für die Komponente, die dieses Rezept definiert, sowie für andere Komponenten, die unter demselben Benutzer und derselben Gruppe ausgeführt werden, lesbar und schreibbar.

Diese Rezeptvariable hat die folgenden Eingaben:

  • component_dependency_name— (Optional) Der Name der abzufragenden Komponentenabhängigkeit. Lassen Sie dieses Segment aus, um die Komponente abzufragen, die dieses Rezept definiert. Sie können nur direkte Abhängigkeiten angeben.

kernel:rootPath

Der AWS IoT Greengrass Core-Stammpfad.

iot:thingName

Diese Funktion ist für Version 2.3.0 und höher der Greengrass Nucleus-Komponente verfügbar.

Der Name der Sache mit dem Kerngerät. AWS IoT

Beispiele für Rezepte

Sie können auf die folgenden Rezeptbeispiele zurückgreifen, um Rezepte für Ihre Komponenten zu erstellen.

AWS IoT Greengrass kuratiert einen Index von Greengrass-Komponenten, den sogenannten Greengrass-Softwarekatalog. Dieser Katalog verfolgt Greengrass-Komponenten, die von der Greengrass-Community entwickelt wurden. Aus diesem Katalog können Sie Komponenten herunterladen, ändern und bereitstellen, um Ihre Greengrass-Anwendungen zu erstellen. Weitere Informationen finden Sie unter Komponenten der Gemeinschaft.

Rezept für Komponenten von Hello World

Das folgende Rezept beschreibt eine Hello World-Komponente, die ein Python-Skript ausführt. Diese Komponente unterstützt alle Plattformen und akzeptiert einen Message Parameter, der als Argument an das Python-Skript AWS IoT Greengrass übergeben wird. Dies ist das Rezept für die Hello World-Komponente im Tutorial Erste Schritte.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.HelloWorld", "ComponentVersion": "1.0.0", "ComponentDescription": "My first AWS IoT Greengrass component.", "ComponentPublisher": "Amazon", "ComponentConfiguration": { "DefaultConfiguration": { "Message": "world" } }, "Manifests": [ { "Platform": { "os": "linux" }, "Lifecycle": { "run": "python3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } }, { "Platform": { "os": "windows" }, "Lifecycle": { "run": "py -3 -u {artifacts:path}/hello_world.py {configuration:/Message}" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.HelloWorld ComponentVersion: '1.0.0' ComponentDescription: My first AWS IoT Greengrass component. ComponentPublisher: Amazon ComponentConfiguration: DefaultConfiguration: Message: world Manifests: - Platform: os: linux Lifecycle: run: | python3 -u {artifacts:path}/hello_world.py "{configuration:/Message}" - Platform: os: windows Lifecycle: run: | py -3 -u {artifacts:path}/hello_world.py "{configuration:/Message}"

Beispiel für eine Python-Laufzeitkomponente

Das folgende Rezept beschreibt eine Komponente, die Python installiert. Diese Komponente unterstützt 64-Bit-Linux-Geräte.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.PythonRuntime", "ComponentDescription": "Installs Python 3.7", "ComponentPublisher": "Amazon", "ComponentVersion": "3.7.0", "Manifests": [ { "Platform": { "os": "linux", "architecture": "amd64" }, "Lifecycle": { "install": "apt-get update\napt-get install python3.7" } } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.PythonRuntime ComponentDescription: Installs Python 3.7 ComponentPublisher: Amazon ComponentVersion: '3.7.0' Manifests: - Platform: os: linux architecture: amd64 Lifecycle: install: | apt-get update apt-get install python3.7

Komponentenrezept, das mehrere Felder spezifiziert

Das folgende Komponentenrezept verwendet mehrere Rezepturfelder.

JSON
{ "RecipeFormatVersion": "2020-01-25", "ComponentName": "com.example.FooService", "ComponentDescription": "Complete recipe for AWS IoT Greengrass components", "ComponentPublisher": "Amazon", "ComponentVersion": "1.0.0", "ComponentConfiguration": { "DefaultConfiguration": { "TestParam": "TestValue" } }, "ComponentDependencies": { "BarService": { "VersionRequirement": "^1.1.0", "DependencyType": "SOFT" }, "BazService": { "VersionRequirement": "^2.0.0" } }, "Manifests": [ { "Platform": { "os": "linux", "architecture": "amd64" }, "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git" }, "Setenv": { "environment_variable1": "variable_value1", "environment_variable2": "variable_value2" } }, "Artifacts": [ { "Uri": "s3://amzn-s3-demo-bucket/hello_world.zip", "Unarchive": "ZIP" }, { "Uri": "s3://amzn-s3-demo-bucket/hello_world_linux.py" } ] }, { "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git", "RequiresPrivilege": "true" } }, "Artifacts": [ { "Uri": "s3://amzn-s3-demo-bucket/hello_world.py" } ] } ] }
YAML
--- RecipeFormatVersion: '2020-01-25' ComponentName: com.example.FooService ComponentDescription: Complete recipe for AWS IoT Greengrass components ComponentPublisher: Amazon ComponentVersion: 1.0.0 ComponentConfiguration: DefaultConfiguration: TestParam: TestValue ComponentDependencies: BarService: VersionRequirement: ^1.1.0 DependencyType: SOFT BazService: VersionRequirement: ^2.0.0 Manifests: - Platform: os: linux architecture: amd64 Lifecycle: install: SkipIf: onpath git Script: sudo apt-get install git SetEnv: environment_variable1: variable_value1 environment_variable2: variable_value2 Artifacts: - Uri: 's3://amzn-s3-demo-bucket/hello_world.zip' Unarchive: ZIP - Uri: 's3://amzn-s3-demo-bucket/hello_world_linux.py' - Lifecycle: install: SkipIf: onpath git Script: sudo apt-get install git RequiresPrivilege: 'true' Artifacts: - Uri: 's3://amzn-s3-demo-bucket/hello_world.py'