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
allAuswahl 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
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.comund Sie daran arbeiten, können Sie Ihrer Hello World-Komponentecom.example.solar.HelloWorldeinen Namen geben. Auf diese Weise können Kollisionen zwischen Komponentennamen innerhalb Ihres Unternehmens vermieden werden. -
Vermeiden Sie das
aws.greengrassPrä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.0steht 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. DerComponentSourceParameter 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.genericwenn Sie eine Komponente aus einem Rezept erstellen oderaws.greengrass.lambdawenn 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
osundarchitectureerstellt. -
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
osundarchitecture, 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.
linuxoder.windowsExakte 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
runtimewerden in einem Rezept*nur die folgenden Laufzeitwerte unterstützt.aws_nucleus_liteUm 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-KernTipp
Verwenden Sie das umgekehrte Domainnamenformat, um Namenskollisionen innerhalb Ihres Unternehmens zu vermeiden. Wenn Ihr Unternehmen beispielsweise ein Radioprojekt besitzt
example.comund Sie daran arbeiten, können Sie ein benutzerdefiniertes Plattformattributcom.example.radio.RadioModulebenennen. 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.RadioModulenachdem, 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
Setenvin 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
installSkript mit einem Erfolgscode beendet wird, wechselt die Komponente in denINSTALLEDStatus.Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:
Script-
Das auszuführende Skript.
RequiresPrivilege-
(Optional) Wenn Sie diese Option auf setzen
true, 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— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel,runnableonpath python3um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist. -
exists— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel,fileexists /tmp/my-configuration.dbum diesen Lebenszyklusschritt zu überspringen, falls/tmp/my-configuration.dbvorhanden.
-
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 angeben
Lifecycle.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
RUNNINGZustand, in dem dieser Lebenszyklusschritt ausgeführt wird. Wenn dasrunSkript mit einem Erfolgscode beendet wird, wechselt die Komponente in denSTOPPINGStatus. Wenn einshutdownSkript angegeben ist, wird es ausgeführt; andernfalls wechselt die Komponente in denFINISHEDStatus.Komponenten, die von dieser Komponente abhängen, werden gestartet, wenn dieser Lebenszyklusschritt ausgeführt wird. Verwenden Sie stattdessen den
startupLebenszyklusschritt, um einen Hintergrundprozess auszuführen, z. B. einen Dienst, den abhängige Komponenten verwenden.Wenn Sie Komponenten mit einem
runLebenszyklus 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 dasrunLifecycle-Skript kurz nach der Ausführung ausfällt. Wenn der Bereitstellungsstatus vom Ergebnis des Startskripts der Komponente abhängen soll, verwenden Sie stattdessen denstartupLifecycle-Schritt.Anmerkung
Sie können nur einen
startupoder einenrunLebenszyklus definieren.Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:
Script-
Das auszuführende Skript.
RequiresPrivilege-
(Optional) Wenn Sie diese Option auf setzen
true, 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— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel,runnableonpath python3um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist. -
exists— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel,fileexists /tmp/my-configuration.dbum diesen Lebenszyklusschritt zu überspringen, falls/tmp/my-configuration.dbvorhanden.
-
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
runSkript 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 angeben
Lifecycle.Setenv.
-
startup -
(Optional) Ein Objekt oder eine Zeichenfolge, die den Hintergrundprozess definiert, der beim Start der Komponente ausgeführt werden soll.
Wird verwendet
startup, 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 aufRUNNINGoder zu setzen,ERROREDwenn die Komponente ein Skript startet, das nicht beendet wird. Sie könnten beispielsweise einenstartupSchritt definieren, mit/etc/init.d/mysqld startdem der MySQL-Prozess gestartet wird.Die Komponente wechselt in den
STARTINGZustand, in dem dieser Lebenszyklusschritt ausgeführt wird. Wenn dasstartupSkript mit einem Erfolgscode beendet wird, wechselt die Komponente in denRUNNINGStatus. Dann können abhängige Komponenten gestartet werden.Wenn Sie Komponenten mit einem
startupLebenszyklus 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_PROGRESSbis die Startskripts aller Komponenten beendet werden oder einen Status melden.Anmerkung
Sie können nur einen
startupoder einenrunLebenszyklus definieren.Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:
Script-
Das auszuführende Skript.
RequiresPrivilege-
(Optional) Wenn Sie diese Option auf setzen
true, 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— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel,runnableonpath python3um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist. -
exists— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel,fileexists /tmp/my-configuration.dbum diesen Lebenszyklusschritt zu überspringen, falls/tmp/my-configuration.dbvorhanden.
-
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 angeben
Lifecycle.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
STOPPINGStatus befindet. Der Shutdown-Lebenszyklus kann verwendet werden, um einen Prozess zu stoppen, der von denstartuprunODER-Skripten gestartet wurde.Wenn Sie einen Hintergrundprozess in starten
startup, verwenden Sie denshutdownSchritt, um diesen Prozess zu beenden, wenn die Komponente heruntergefahren wird. Beispielsweise könnten Sie einenshutdownSchritt definieren, der den MySQL-Prozess mit/etc/init.d/mysqld stopbeendet.Das
shutdownSkript wird ausgeführt, nachdem die Komponente denSTOPPINGStatus erreicht hat. Wenn das Skript erfolgreich abgeschlossen wird, wechselt die Komponente in denFINISHEDStatus.Dieses Objekt oder diese Zeichenfolge enthält die folgenden Informationen:
Script-
Das auszuführende Skript.
RequiresPrivilege-
(Optional) Wenn Sie diese Option auf setzen
true, 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— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel,runnableonpath python3um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist. -
exists— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel,fileexists /tmp/my-configuration.dbum diesen Lebenszyklusschritt zu überspringen, falls/tmp/my-configuration.dbvorhanden.
-
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 angeben
Lifecycle.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
UNINSTALLINGZustand ü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 setzen
true, 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— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel,runnableonpath python3um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist. -
exists— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel,fileexists /tmp/my-configuration.dbum diesen Lebenszyklusschritt zu überspringen, falls/tmp/my-configuration.dbvorhanden.
-
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 angeben
Lifecycle.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
ERROREDStatus übergeht. Wenn die KomponenteERROREDdreimal wiederholt wird, ohne dass sie erfolgreich wiederhergestellt wurde, wechselt die Komponente in denBROKENStatus. Um eineBROKENKomponente 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 setzen
true, 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— Prüfen Sie, ob sich ein Runnable im Systempfad befindet. Verwenden Sie zum Beispiel,runnableonpath python3um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist. -
exists— Prüfen Sie, ob eine Datei existiert. Verwenden Sie zum Beispiel,fileexists /tmp/my-configuration.dbum diesen Lebenszyklusschritt zu überspringen, falls/tmp/my-configuration.dbvorhanden.
-
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 angeben
Lifecycle.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.
Anmerkung
Verwenden Sie den Installationszyklus, um Updates oder Abhängigkeiten zu installieren, für die kein Neustart der AWS IoT Greengrass Core-Software oder des Geräts erforderlich ist.
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_NOTHINGWeitere 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,
BootstrapOnRollbackwird 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 setzen
true, 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 setzen
true, 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 angeben
Lifecycle.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
allAuswahlschlü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.pyin 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.pyin einem Rezept an, um den Pfad zumy_script.pydem Archivartefakt abzurufen, das den URIs3://amzn-s3-demo-bucket/path/to/my_archive.zipenthä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
UnarchiveOption 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 dasmy_archive.zipArtefakt beispielsweise während einer lokalen Bereitstellung zu extrahieren, können Sie Folgendes angeben.s3://amzn-s3-demo-bucket/my_archive.zipJedes 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
ALLfürReadund.ExecuteDadurch 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.
ALLWä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
ExecuteErlaubnis impliziert dieReadErlaubnis. Wenn Sie beispielsweiseALLfü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
allAuswahltaste ist die Standardeinstellung für alle Abschnitte ohne Auswahlschlüssel. Das bedeutet, dass Sie denallAuswahlschlüssel in einem Manifest angeben können, um die Abschnitte des globalen Lebenszyklus ohne Auswahlschlüssel auszuführen. Sie müssen denallAuswahlschlüssel im globalen Lebenszyklus nicht angeben.Wenn ein Manifest keinen Lebenszyklus oder keine Auswahlschlüssel definiert, verwendet das Kerngerät standardmäßig die
allAuswahl. 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 onpathexecutableor existsfileScript: command1 key2: install: Script: command2 all: install: Script: command3Beispiel Beispiel für einen globalen Lebenszyklus mit Auswahlschlüsseln auf unterster Ebene
Lifecycle: install: Script: key1: command1 key2: command2 all: command3Beispiel Beispiel für einen globalen Lebenszyklus mit Auswahlschlüsseln auf mehreren Ebenen
Lifecycle: key1: install: SkipIf: either onpathexecutableor existsfileScript: 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.
trueSie 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
nulleine 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 desMessageSchlüssels in der Komponentenkonfiguration ab. Die{com.example.MyComponentDependency:configuration:/server/port}Rezeptvariable ruft den Wert vonportimserverKonfigurationsobjekt 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
Executeentsprechende Berechtigung verfügen.ReadALLWeitere 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}/modelsDer 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
Executeentsprechende Berechtigung verfügen.ReadALLWeitere 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
$PWDUmgebungsvariablen und des Befehlspwd, 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.
Themen
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.
Beispiel für eine Python-Laufzeitkomponente
Das folgende Rezept beschreibt eine Komponente, die Python installiert. Diese Komponente unterstützt 64-Bit-Linux-Geräte.
Komponentenrezept, das mehrere Felder spezifiziert
Das folgende Komponentenrezept verwendet mehrere Rezepturfelder.