AWS IoT Greengrass Referenz zu -Komponentenrezepten - 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 zu -Komponentenrezepten

Das Komponentenrezept ist eine Datei, die die Details, Abhängigkeiten, Artefakte und Lebenszyklen einer Komponente definiert. Der Komponentenlebenszyklus gibt die Befehle an, die zum Installieren, Ausführen und Herunterfahren der Komponente ausgeführt werden sollen, z. B. . 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 Core-Geräten bereitgestellt werden sollen.

Im Rezept können Sie für jede Plattform, die eine Komponente unterstützt, eindeutige Abhängigkeiten und Lebenszyklen definieren. 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 verhindern, dass eine Komponente auf Geräten AWS IoT Greengrass installiert, die sie nicht unterstützen.

Jedes Rezept enthält eine Liste von Manifesten. Jedes Manifest gibt eine Reihe von Plattformanforderungen sowie den Lebenszyklus und die Artefakte an, die für Core-Geräte verwendet werden sollen, deren Plattform diese Anforderungen erfüllt. Das Core-Gerät verwendet das erste Manifest mit Plattformanforderungen, die das Gerät erfüllt. Geben Sie ein Manifest ohne Plattformanforderungen an, das jedem Core-Gerä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, die Unterabschnitte des Lebenszyklus identifizieren. Anschließend können Sie diese Auswahlschlüssel in einem Manifest angeben, um diese Abschnitte des globalen Lebenszyklus zusätzlich zum Lebenszyklus des Manifests zu verwenden. Das Core-Gerä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 Core-Gerät entspricht, führt sie die folgenden Schritte aus, um die zu verwendenden Lebenszyklusschritte zu identifizieren:

  • Wenn das ausgewählte Manifest einen Lebenszyklus definiert, verwendet das Core-Gerät diesen Lebenszyklus.

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

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

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

Wichtig

Ein Core-Gerät muss den Plattformanforderungen mindestens eines Manifests entsprechen, um die Komponente zu installieren. Wenn kein Manifest mit dem Core-Gerät übereinstimmt, installiert die AWS IoT Greengrass Core-Software die Komponente nicht und die Bereitstellung schlägt fehl.

Sie können Rezepte im JSON- oder YAML-Format definieren. Der Abschnitt Rezeptbeispiele enthält Rezepte in jedem Format.

Validierung von Rezepten

Greengrass validiert ein JSON- oder YAML-Komponentenrezept beim Erstellen einer Komponentenversion. Diese Rezeptvalidierung überprüft Ihr JSON- oder YAML-Komponentenrezept auf häufige Fehler, um potenzielle Bereitstellungsprobleme zu vermeiden. Die Validierung überprüft das Rezept auf häufige Fehler (z. B. fehlende Kommas, Klammern und Felder) und stellt sicher, dass das Rezept gut formatiert ist.

Wenn Sie eine Fehlermeldung zur Rezeptvalidierung erhalten, überprüfen Sie Ihr Rezept auf fehlende Kommas, Klammern oder Felder. Überprüfen Sie, ob Ihnen keine Felder fehlen, indem Sie sich das Rezeptformat ansehen.

Rezeptformat

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

RecipeFormatVersion

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

  • 2020-01-25

ComponentName

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

Tipps
  • Verwenden Sie das umgekehrte Domänennamenformat, um Namenskonflikte innerhalb Ihres Unternehmens zu vermeiden. Wenn Ihr Unternehmen beispielsweise Eigentümer von ist example.com und Sie an einem Energieprojekt arbeiten, können Sie Ihre Hello-World-Komponente benennencom.example.solar.HelloWorld. Dies trägt dazu bei, Kollisionen von Komponentennamen in Ihrem Unternehmen zu vermeiden.

  • 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. stellt dann Ihre Komponente anstelle der öffentlichen Komponente AWS IoT Greengrass bereit, wenn Komponenten mit einer Abhängigkeit von dieser öffentlichen Komponente bereitgestellt werden. Mit dieser Funktion können Sie das Verhalten öffentlicher Komponenten überschreiben, aber sie kann auch andere Komponenten beeinträchtigen, wenn Sie nicht beabsichtigen, eine öffentliche Komponente zu überschreiben.

ComponentVersion

Die Version der Komponente. Der Höchstwert für die Haupt-, Neben- und Patch-Werte ist 99999.

Anmerkung

AWS IoT Greengrass verwendet semantische Versionen für -Komponenten. Semantische Versionen folgen einem größeren Patch-Nummernsystem. Die -Version 1.0.0 stellt beispielsweise die erste Hauptversion für eine Komponente dar. 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. Wenn Sie dann die Komponente bereitstellen, können Sie das Konfigurationsobjekt angeben, das der Komponente bereitgestellt 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 gibt einen Zahlentyp an, unterscheidet jedoch nicht zwischen Ganzzahlen und Gleitkommazahlen. Infolgedessen können Konfigurationswerte in Gleitkommazahlen in konvertiert werdenAWS IoT Greengrass. Um sicherzustellen, dass Ihre Komponente den richtigen Datentyp verwendet, empfehlen wir Ihnen, numerische Konfigurationswerte als Zeichenfolgen zu definieren. Lassen Sie dann Ihre Komponente sie als Ganzzahlen oder Gleitkommazahlen analysieren. Dadurch wird sichergestellt, dass Ihre Konfigurationswerte denselben Typ in der Konfiguration und auf Ihrem Core-Gerät haben.

ComponentDependencies

(Optional) Ein Verzeichnis von 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 gestartet werden, bevor es die Komponente startet. 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 einen Bereich 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.

Der Typ kann einer der folgenden Typen sein:

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

  • aws.greengrass.lambda – Die Komponente führt eine Lambda-Funktion mit 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 von festgelegt wird, AWS IoT Greengrass wenn Sie eine Komponente aus einer Lambda-Funktion erstellen. Weitere Informationen finden Sie unter Ausführen von -AWS LambdaFunktionen.

  • aws.greengrass.plugin – Die Komponente wird in derselben Java Virtual Machine (JVM) wie der Greengrass-Kern ausgeführt. Wenn Sie eine Plugin-Komponente bereitstellen oder neu starten, wird der Greengrass-Kern neu gestartet.

    Plugin-Komponenten verwenden dieselbe Protokolldatei wie der Greengrass-Kern. Weitere Informationen finden Sie unter Überwachen von AWS IoT Greengrass Protokollen.

    Wir empfehlen nicht, diese Option in Komponentenrezepten zu verwenden, da sie für von AWSbereitgestellte Komponenten bestimmt ist, die in Java geschrieben sind und direkt mit dem Greengrass-Kern verbunden sind. Weitere Informationen darüber, welche öffentlichen Komponenten Plugins sind, finden Sie unter AWSVon bereitgestellte Komponenten.

  • aws.greengrass.nucleus – Die Kernkomponente. Weitere Informationen finden Sie unter Grüngraskern.

    Es wird nicht empfohlen, diese Option in Komponentenrezepten zu verwenden. Sie ist für die Greengrass-Kernkomponente vorgesehen, die die Mindestfunktionalität der AWS IoT Greengrass-Core-Software bietet.

Standardmäßig ist , 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 Ausführen von -AWS LambdaFunktionen.

Manifests

Eine Liste von Objekten, die jeweils den Lebenszyklus, die Parameter und die Anforderungen der Komponente für eine Plattform definieren. Wenn ein Core-Gerät den Plattformanforderungen mehrerer Manifeste entspricht, AWS IoT Greengrass verwendet das erste Manifest, dem das Core-Gerät entspricht. Um sicherzustellen, dass Core-Gerä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 Core-Gerät muss den Plattformanforderungen mindestens eines Manifests entsprechen, um die Komponente zu installieren. Wenn kein Manifest mit dem Core-Gerät übereinstimmt, 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 Anzeigename für die Plattform, die dieses Manifest definiert.

Wenn Sie diesen Parameter weglassen, AWS IoT Greengrass erstellt einen Namen von der Plattform os und architecture.

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 über die Plattform an, auf der ein Core-Gerä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 Core-Gerät. Die AWS IoT Greengrass -Core-Software definiert immer os und architectureund definiert möglicherweise zusätzliche Attribute. Sie können benutzerdefinierte Plattformattribute für ein Core-Gerät angeben, wenn Sie die Greengrass-Kernkomponente bereitstellen. Weitere Informationen finden Sie unter dem Plattformüberschreibungsparameter der Greengrass-Kernkomponente .

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

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

  • *, was einem beliebigen Wert entspricht. Dies stimmt auch überein, wenn kein Wert vorhanden ist.

  • Ein regulärer Ausdruck im Java-Stil, z. B. /windows|linux/. Der reguläre Ausdruck muss mit einem Schrägstrich () beginnen und enden/. Der reguläre Ausdruck /.+/ entspricht beispielsweise jedem nicht leeren Wert.

Dieses Objekt enthält die folgenden Informationen:

os

(Optional) Der Name des Betriebssystems für die Plattform, die dieses Manifest unterstützt. Zu den gängigen Plattformen gehören 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 Prozessorarchitekturdetails 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. Ersetzen Sie Schlüssel durch den Namen des Plattformattributs. Die AWS IoT Greengrass -Core-Software gleicht dieses Plattformattribut mit den Schlüssel-Wert-Paaren ab, die Sie in der Greengrass-Kernkomponentenkonfiguration angeben. Weitere Informationen finden Sie unter dem Plattformüberschreibungsparameter der Greengrass-Kernkomponente .

Tipp

Verwenden Sie das umgekehrte Domänennamenformat, um Namenskonflikte innerhalb Ihres Unternehmens zu vermeiden. Wenn Ihr Unternehmen beispielsweise Eigentümer von ist example.com und Sie an einem Mobilfunkprojekt arbeiten, können Sie ein benutzerdefiniertes Plattformattribut benennencom.example.radio.RadioModule. Dies trägt dazu bei, Kollisionen von Plattformattributnamen in Ihrem Unternehmen zu vermeiden.

Sie können beispielsweise ein Plattformattribut, com.example.radio.RadioModule, definieren, um ein anderes Manifest anzugeben, das darauf basiert, welches Optionsmodul auf einem Core-Gerät verfügbar ist. Jedes Manifest kann verschiedene Artefakte enthalten, die für verschiedene Hardwarekonfigurationen gelten, sodass Sie den minimalen Softwaresatz auf dem Core-Gerät bereitstellen.

Lifecycle

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

Anmerkung

Sie definieren diesen Lebenszyklus innerhalb eines Manifests. 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 Verzeichnis von Umgebungsvariablen, die allen Lebenszyklusskripten bereitgestellt werden sollen. Sie können diese Umgebungsvariablen Setenv in jedem Lebenszyklusskript mit ü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 jedes Mal aus, wenn die Software gestartet wird.

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

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

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Sie können das Skript mit Root-Berechtigungen ausführen. Wenn Sie diese Option auf festlegentrue, führt die -AWS IoT GreengrassCore-Software dieses Lebenszyklusskript als Stamm und nicht als Systembenutzer aus, den Sie für die Ausführung dieser Komponente konfigurieren. Standardeinstellung: false.

Skipif

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

  • onpath runnable – Überprüfen Sie, ob sich eine Runnable auf dem Systempfad befindet. Verwenden Sie beispielsweise , onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file – Überprüfen Sie, ob eine Datei vorhanden ist. Verwenden Sie beispielsweise , exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, wenn vorhanden /tmp/my-configuration.db ist.

Timeout

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

Standard: 120 Sekunden

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript bereitgestellt 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 Starten der Komponente ausgeführt werden soll.

Die Komponente wechselt in den RUNNING Status , wenn dieser Lebenszyklusschritt ausgeführt wird. Wenn das run Skript mit einem Erfolgscode beendet wird, wechselt die Komponente in den -STOPPINGZustand. Wenn ein shutdownSkript angegeben ist, wird es ausgeführt. Andernfalls wechselt die Komponente in den -FINISHEDZustand.

Komponenten, die von dieser Komponente abhängen, starten, wenn dieser Lebenszyklusschritt ausgeführt wird. Um einen Hintergrundprozess auszuführen, z. B. einen Service, den abhängige Komponenten verwenden, verwenden Sie stattdessen den startup Lebenszyklusschritt.

Wenn Sie Komponenten mit einem run Lebenszyklus bereitstellen, kann das Core-Gerät die Bereitstellung melden, sobald dieses Lebenszyklusskript ausgeführt wird. Daher kann die Bereitstellung abgeschlossen und erfolgreich sein, auch wenn das run Lebenszyklusskript kurz nach der Ausführung fehlschlägt. Wenn der Bereitstellungsstatus vom Ergebnis des Startskripts der Komponente abhängen soll, verwenden Sie stattdessen den startup Lebenszyklusschritt.

Anmerkung

Sie können nur einen - startup oder -runLebenszyklus definieren.

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

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Sie können das Skript mit Root-Berechtigungen ausführen. Wenn Sie diese Option auf festlegentrue, führt die -AWS IoT GreengrassCore-Software dieses Lebenszyklusskript als Stamm und nicht als Systembenutzer aus, den Sie für die Ausführung dieser Komponente konfigurieren. Standardeinstellung: false.

Skipif

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

  • onpath runnable – Überprüfen Sie, ob sich eine Runnable auf dem Systempfad befindet. Verwenden Sie beispielsweise , onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file – Überprüfen Sie, ob eine Datei vorhanden ist. Verwenden Sie beispielsweise , exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, wenn vorhanden /tmp/my-configuration.db ist.

Timeout

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

Dieser Lebenszyklusschritt führt standardmäßig kein Timeout durch. Wenn Sie dieses Timeout weglassen, wird das run Skript ausgeführt, bis es beendet wird.

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript bereitgestellt 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 Starten der Komponente ausgeführt werden soll.

Verwenden Sie , startup um einen Befehl auszuführen, der erfolgreich beendet werden muss, oder aktualisieren Sie den Status der Komponente auf , RUNNING bevor abhängige Komponenten gestartet werden können. Verwenden Sie den UpdateState IPC-Vorgang, um den Status der Komponente auf RUNNING oder festzulegen, ERRORED wenn die Komponente ein Skript startet, das nicht beendet wird. Sie können beispielsweise einen startup Schritt definieren, der den MySQL-Prozess mit startet/etc/init.d/mysqld start.

Die Komponente wechselt in den STARTING Status , wenn dieser Lebenszyklusschritt ausgeführt wird. Wenn das startup Skript mit einem Erfolgscode beendet wird, wechselt die Komponente in den -RUNNINGZustand. Anschließend können abhängige Komponenten gestartet werden.

Wenn Sie Komponenten mit einem startup Lebenszyklus bereitstellen, kann das Core-Gerät die Bereitstellung nach dem Beenden dieses Lebenszyklusskripts als abgeschlossen melden oder seinen Status melden. Mit anderen Worten, der Status der Bereitstellung lautet , IN_PROGRESS bis die Startskripts aller Komponenten beendet werden oder einen Status melden.

Anmerkung

Sie können nur einen - startup oder -runLebenszyklus definieren.

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

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Sie können das Skript mit Root-Berechtigungen ausführen. Wenn Sie diese Option auf festlegentrue, führt die -AWS IoT GreengrassCore-Software dieses Lebenszyklusskript als Stamm und nicht als Systembenutzer aus, den Sie für die Ausführung dieser Komponente konfigurieren. Standardeinstellung: false.

Skipif

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

  • onpath runnable – Überprüfen Sie, ob sich eine Runnable auf dem Systempfad befindet. Verwenden Sie beispielsweise , onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file – Überprüfen Sie, ob eine Datei vorhanden ist. Verwenden Sie beispielsweise , exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, wenn vorhanden /tmp/my-configuration.db ist.

Timeout

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

Standard: 120 Sekunden

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript bereitgestellt 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 oder -runSkripten gestartet wird.

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

Das shutdown Skript wird ausgeführt, nachdem die Komponente in den -STOPPINGZustand übergegangen ist. Wenn das Skript erfolgreich abgeschlossen wurde, wechselt die Komponente in den FINISHED Status .

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

Script

Das auszuführende Skript.

RequiresPrivilege

(Optional) Sie können das Skript mit Root-Berechtigungen ausführen. Wenn Sie diese Option auf festlegentrue, führt die -AWS IoT GreengrassCore-Software dieses Lebenszyklusskript als Stamm und nicht als Systembenutzer aus, den Sie für die Ausführung dieser Komponente konfigurieren. Standardeinstellung: false.

Skipif

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

  • onpath runnable – Überprüfen Sie, ob sich eine Runnable auf dem Systempfad befindet. Verwenden Sie beispielsweise , onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file – Überprüfen Sie, ob eine Datei vorhanden ist. Verwenden Sie beispielsweise , exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, wenn vorhanden /tmp/my-configuration.db ist.

Timeout

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

Standard: 15 Sekunden.

Setenv

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

recover

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

Dieser Schritt wird ausgeführt, wenn eine Komponente in den -ERROREDZustand wechselt. Wenn die Komponente ERRORED dreimal wird, ohne erfolgreich wiederherzustellen, wechselt die Komponente in den BROKEN Zustand . 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) Sie können das Skript mit Root-Berechtigungen ausführen. Wenn Sie diese Option auf festlegentrue, führt die -AWS IoT GreengrassCore-Software dieses Lebenszyklusskript als Stamm und nicht als Systembenutzer aus, den Sie für die Ausführung dieser Komponente konfigurieren. Standardeinstellung: false.

Skipif

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

  • onpath runnable – Überprüfen Sie, ob sich eine Runnable auf dem Systempfad befindet. Verwenden Sie beispielsweise , onpath python3 um diesen Lebenszyklusschritt zu überspringen, wenn Python 3 verfügbar ist.

  • exists file – Überprüfen Sie, ob eine Datei vorhanden ist. Verwenden Sie beispielsweise , exists /tmp/my-configuration.db um diesen Lebenszyklusschritt zu überspringen, wenn vorhanden /tmp/my-configuration.db ist.

Timeout

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

Standard: 60 Sekunden.

Setenv

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

bootstrap

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

Anmerkung

Um Updates oder Abhängigkeiten zu installieren, für deren Neustart die AWS IoT Greengrass Core-Software oder das Gerät nicht erforderlich ist, verwenden Sie den Installationslebenszyklus .

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

  • Die Komponente wird zum ersten Mal auf dem Core-Gerät bereitgestellt.

  • Die Komponentenversion ändert sich.

  • Das Bootstrap-Skript ändert sich aufgrund einer Komponentenkonfigurationsaktualisierung.

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

Wichtig

Sie müssen die AWS IoT Greengrass Core-Software als Systemservice 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 Systemservice 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 nur für Komponenten ausgeführt, die die Bootstrap-Lebenszyklusschritte als Teil einer fehlgeschlagenen Zielbereitstellung abgeschlossen haben oder versucht haben, diese auszuführen. Diese Funktion ist für Greengrass-Kernversionen 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 festlegentrue, werden die Bootstrap-Lebenszyklusschritte ausgeführt, die in einer Rollback-Bereitstellung definiert sind. 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 Beendigungscode dieses Skripts definiert die Neustartanweisung. Verwenden Sie die folgenden Beendigungscodes:

  • 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 Bootstrap aller Komponenten immer noch neu gestartet.

  • 100 – Anforderung zum Neustart der AWS IoT Greengrass Core-Software.

  • 101 – Anforderung zum Neustart des Core-Geräts.

Die Ausgangscodes 100 bis 199 sind für spezielles Verhalten reserviert. Andere Beendigungscodes stellen Skriptfehler dar.

RequiresPrivilege

(Optional) Sie können das Skript mit Root-Berechtigungen ausführen. Wenn Sie diese Option auf festlegentrue, führt die -AWS IoT GreengrassCore-Software dieses Lebenszyklusskript als Stamm und nicht als Systembenutzer aus, den Sie für die Ausführung dieser Komponente konfigurieren. Standardeinstellung: false.

Timeout

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

Standard: 120 Sekunden

Setenv

(Optional) Das Wörterbuch der Umgebungsvariablen, die dem Skript bereitgestellt 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 Core-Gerät die Abschnitte, die den Auswahlschlüsseln in diesem Manifest entsprechen. Weitere Informationen finden Sie in den globalen Lebenszyklusbeispielen .

Wichtig

Das Core-Gerä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 Core-Gerät installiert werden.

  • Normale Dateien – Verwenden Sie die Rezeptvariable Artefakte:Pfad, um den Pfad zu dem Ordner abzurufen, der die Artefakte enthält. Geben Sie beispielsweise {artifacts:path}/my_script.py in einem Rezept an, um den Pfad zu einem Artefakt mit dem URI abzurufens3://DOC-EXAMPLE-BUCKET/path/to/my_script.py.

  • Extrahierte Archive – Verwenden Sie die Rezeptvariableartefakte:decompressedPath, um den Pfad zu dem Ordner abzurufen, der die extrahierten 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, zu dem der Pfad my_script.py im Archivartefakt abgerufen werden soll, das den URI hats3://DOC-EXAMPLE-BUCKET/path/to/my_archive.zip.

Anmerkung

Wenn Sie eine Komponente mit einem Archivartefakt auf einem lokalen Core-Gerä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 einen URI an, bei dem 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 angebens3://DOC-EXAMPLE-BUCKET/my_archive.zip.

Jedes Objekt enthält die folgenden Informationen:

URI

Der URI eines Artefakts in einem S3-Bucket. Die AWS IoT Greengrass Core-Software ruft das Artefakt von diesem 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 Archivs, das entpackt werden soll. 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 Artefakte:Pfad 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 Rezeptvariableartefakte: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 sollen. 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 es Komponenten nicht erlaubt, Artefaktdateien im Ordner Artefakte 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 legt die Zugriffsberechtigungen des Ordners ALL für Read und auf festExecute. Auf diese Weise 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 Installationslebenszyklusskript festlegen.

Dieses Objekt enthält die folgenden Informationen:

Read

(Optional) Die Leseberechtigung, die für diese Artefaktdatei festgelegt werden soll. Um anderen Komponenten den Zugriff auf dieses Artefakt zu ermöglichen, z. B. Komponenten, die von dieser Komponente abhängen, geben Sie anALL. 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 konfigurieren.

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

Standardeinstellung: OWNER.

Execute

(Optional) Die Ausführungsberechtigung, die für diese Artefaktdatei festgelegt werden soll. Die -ExecuteBerechtigung impliziert die -ReadBerechtigung. 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 kann nicht ausgeführt werden.

  • OWNER – Die Datei wird vom Systembenutzer ausgeführt, den Sie für die Ausführung der Komponente konfigurieren.

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

Standardeinstellung: NONE.

Digest

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

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

Algorithm

(Nur Lesen) Der Hash-Algorithmus, den AWS IoT Greengrass verwendet, um den Digest-Hash des Artefakts zu berechnen.

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

Lifecycle

Ein Objekt, das definiert, wie die Komponente installiert und ausgeführt wird. Das Core-Gerä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.

Der all Auswahlschlüssel ist der Standardwert für jeden Abschnitt 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 Core-Gerät standardmäßig die all Auswahl. Das bedeutet, dass das Core-Gerät in diesem Fall die Abschnitte des globalen Lebenszyklus verwendet, die keine Auswahlschlüssel verwenden.

Dieses Objekt enthält dieselben Informationen wie der Manifest-Lebenszyklus . Sie können jedoch Auswahlschlüssel auf jeder Ebene 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. Lebenszyklusschlüssel beginnen mit einem Großbuchstaben.

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 für einen globalen Lebenszyklus mit Auswahlschlüsseln der unteren Ebene
Lifecycle: install: Script: key1: command1 key2: command2 all: command3
Beispiel für einen globalen Lebenszyklus mit mehreren Auswahlschlüsselebenen
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 stellen Informationen aus der aktuellen Komponente und dem Kern bereit, die Sie in Ihren Rezepten verwenden können. Sie können beispielsweise eine Rezeptvariable verwenden, um Komponentenkonfigurationsparameter an eine Anwendung zu übergeben, die Sie in einem Lebenszyklusskript ausführen.

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

Rezeptvariablen verwenden die Syntax {recipe_variable} . Die geschweiften Klammern geben eine Rezeptvariable an.

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 Komponentenlebenszyklus ausführen.

Anmerkung

AWS IoT Greengrass unterstützt diese Rezeptvariable nur in Komponentenlebenszyklusdefinitionen.

Diese Rezeptvariable hat die folgenden Eingaben:

  • component_dependency_name – (Optional) Der Name der abzufragenden Komponentenabhängigkeit. Lassen Sie dieses Segment weg, 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 verschachtelten Komponentenkonfiguration 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-Zeigerspezifikation .

    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 Zeichenfolgendarstellung des Werts. Nullwerte werden in null als 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.

Die {configuration:/Message} Rezeptvariable ruft beispielsweise 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.

Wenn eine Komponente installiert wird, AWS IoT Greengrass kopiert die Artefakte der Komponente in den Ordner, den diese Variable verfügbar macht. Sie können diese Variable verwenden, um den Speicherort eines Skripts zu identifizieren, das beispielsweise im Komponentenlebenszyklus 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. das aktuelle Arbeitsverzeichnis ($PWD oder .). Ändern Sie dann die Dateien dort.

Um ein Artefakt aus einer Komponentenabhängigkeit zu lesen oder auszuführen, muss die - Read oder -ExecuteBerechtigung dieses Artefakts seinALL. Weitere Informationen finden Sie in den Artefaktberechtigungen, die Sie im Komponentenrezept definieren.

Diese Rezeptvariable hat die folgenden Eingaben:

  • component_dependency_name – (Optional) Der Name der abzufragenden Komponentenabhängigkeit. Lassen Sie dieses Segment weg, 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.

Wenn eine Komponente installiert wird, AWS IoT Greengrass entpackt die Archivartefakte der Komponente in den Ordner, den diese Variable verfügbar macht. Sie können diese Variable verwenden, um den Speicherort eines Skripts zu identifizieren, das beispielsweise im Komponentenlebenszyklus 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 models.zip entpackt ein ZIP-Artefakt mit dem Namen in den {artifacts:decompressedPath}/models Ordner .

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

Um ein Artefakt aus einer Komponentenabhängigkeit zu lesen oder auszuführen, muss die - Read oder -ExecuteBerechtigung dieses Artefakts seinALL. Weitere Informationen finden Sie in den Artefaktberechtigungen, die Sie im Komponentenrezept definieren.

Diese Rezeptvariable hat die folgenden Eingaben:

  • component_dependency_name – (Optional) Der Name der abzufragenden Komponentenabhängigkeit. Lassen Sie dieses Segment weg, 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 v2.0.4 und höher der Greengrass-Kernkomponente 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 lesbar und beschreibbar für die Komponente, die dieses Rezept definiert, und für andere Komponenten, die als derselbe Benutzer und dieselbe Gruppe ausgeführt werden.

Diese Rezeptvariable hat die folgenden Eingaben:

  • component_dependency_name – (Optional) Der Name der abzufragenden Komponentenabhängigkeit. Lassen Sie dieses Segment weg, 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 v2.3.0 und höher der Greengrass-Kernkomponente verfügbar.

Der Name des AWS IoT Objekts des Core-Geräts.

Beispiele für Rezepte

Sie können auf die folgenden Rezeptbeispiele verweisen, um Ihnen beim Erstellen von Rezepten für Ihre Komponenten zu helfen.

AWS IoT Greengrass kuratiert einen Index von Greengrass-Komponenten, der als Greengrass Software Catalog bezeichnet wird. Dieser Katalog verfolgt Greengrass-Komponenten, die von der Greengrass-Community entwickelt wurden. In diesem Katalog können Sie Komponenten herunterladen, ändern und bereitstellen, um Ihre Greengrass-Anwendungen zu erstellen. Weitere Informationen finden Sie unter Komponenten der Gemeinschaft.

Hello-World-Komponentenrezept

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 übergibt. 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 angibt

Das folgende Komponentenrezept verwendet mehrere Rezeptfelder.

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://DOC-EXAMPLE-BUCKET/hello_world.zip", "Unarchive": "ZIP" }, { "URI": "s3://DOC-EXAMPLE-BUCKET/hello_world_linux.py" } ] }, { "Lifecycle": { "install": { "Skipif": "onpath git", "Script": "sudo apt-get install git", "RequiresPrivilege": "true" } }, "Artifacts": [ { "URI": "s3://DOC-EXAMPLE-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://DOC-EXAMPLE-BUCKET/hello_world.zip' Unarchive: ZIP - URI: 's3://DOC-EXAMPLE-BUCKET/hello_world_linux.py' - Lifecycle: install: Skipif: onpath git Script: sudo apt-get install git RequiresPrivilege: 'true' Artifacts: - URI: 's3://DOC-EXAMPLE-BUCKET/hello_world.py'