AWS IoT Greengrass Referenz zum Komponenten-Rezept - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

AWS IoT Greengrass Referenz zum Komponenten-Rezept

Das Komponentenrezept ist eine Datei, die die Details, Abhängigkeiten, Artefakte und Lebenszyklen einer Komponente definiert. Der Komponentenlebenszyklus spezifiziert die Befehle, die ausgeführt werden müssen, um beispielsweise 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 sollen.

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 mit unterschiedlichen Anforderungen bereitzustellen. Sie können damit auch 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 nicht in einem Manifest enthalten ist. Im globalen Lebenszyklus können Sie Auswahlschlüssel verwenden, die Unterabschnitte des Lebenszyklus 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 Auswahltasten 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 zuzuordnen.

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 geht wie folgt vor, 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 Auswahltasten definiert, verwendet das Kerngerät die Abschnitte des globalen Lebenszyklus, die keine Auswahltasten haben. Dieses Verhalten entspricht einem Manifest, das die all Auswahl definiert.

Wichtig

Ein Kerngerät muss die Plattformanforderungen mindestens eines Manifests erfüllen, um die Komponente installieren zu können. Wenn kein Manifest mit dem Kerngerät übereinstimmt, installiert die AWS IoT Greengrass Core-Software die Komponente nicht und die Bereitstellung schlägt fehl.

Sie können Rezepte im YAMLFormat JSONoder definieren. Der Abschnitt mit den Rezeptbeispielen enthält Rezepte in jedem Format.

Validierung von Rezepturen

Greengrass validiert bei der Erstellung einer JSON YAML Komponentenversion ein Oder-Komponentenrezept. Bei dieser Rezeptvalidierung wird Ihr Rezept JSON oder Ihre YAML Komponentenrezeptur auf häufig auftretende Fehler überprüft, um mögliche Probleme bei der Bereitstellung zu vermeiden. 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 korrekt formuliert ist.

Wenn Sie eine Fehlermeldung bei der Rezeptvalidierung erhalten, überprüfen Sie Ihr Rezept auf fehlende Kommas, Klammern oder Felder. Vergewissern Sie sich anhand des Rezeptformats, dass Ihnen keine Felder fehlen.

Rezeptformat

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

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 für Sie AWS-Konto in jeder Region einzigartig sein.

Tipps
  • Verwenden Sie das umgekehrte Domainnamenformat, um Namenskonflikte innerhalb Ihres Unternehmens zu vermeiden. Wenn Ihr Unternehmen beispielsweise Eigentümer eines Solarenergieprojekts ist example.com und Sie daran arbeiten, können Sie Ihrer Komponente com.example.solar.HelloWorld den Namen Hello World geben. Auf diese Weise können Kollisionen bei Komponentennamen innerhalb Ihres Unternehmens vermieden werden.

  • Vermeiden Sie das aws.greengrass Präfix in Ihren Komponentennamen. AWS IoT Greengrass verwendet dieses Präfix für die öffentlichen Komponenten, die es bereitstellt. Wenn Sie denselben Namen wie eine öffentliche Komponente wählen, ersetzt Ihre Komponente diese Komponente. AWS IoT Greengrass Stellt dann Ihre Komponente anstelle der öffentlichen Komponente bereit, wenn Komponenten bereitgestellt werden, 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 einem Hauptteil. unbedeutend. Patch-Nummernsystem. Version 1.0.0 steht beispielsweise 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 die 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. JSONgibt einen Zahlentyp an, unterscheidet aber nicht zwischen Ganzzahlen und Gleitkommazahlen. Aus diesem Grund können Konfigurationswerte in Fließkommazahlen umgewandelt werden. AWS IoT Greengrass Um sicherzustellen, dass Ihre Komponente den richtigen Datentyp verwendet, empfehlen wir, numerische Konfigurationswerte als Zeichenfolgen zu definieren. Lassen Sie Ihre Komponente sie dann als Ganzzahlen oder Gleitkommazahlen analysieren. Dadurch wird sichergestellt, dass Ihre Konfigurationswerte in der Konfiguration und auf Ihrem Kerngerä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 Versionsbeschränkung im NPM-Stil, die die kompatiblen Komponentenversionen für diese Abhängigkeit definiert. Sie können eine Version oder einen Versionsbereich angeben. Weitere Informationen finden Sie im npm Semantic Version Calculator.

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 einer Rezeptur 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 mithilfe der Lambda-Launcher-Komponente eine Lambda-Funktion aus. Der ComponentSource Parameter gibt die ARN 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 Ausführen von -AWS LambdaFunktionen.

  • aws.greengrass.plugin— Die Komponente läuft in derselben Java Virtual Machine (JVM) wie der Greengrass-Kern. Wenn Sie eine Plugin-Komponente bereitstellen oder neu starten, wird der Greengrass-Nucleus 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 in Java geschriebene Komponenten AWS vorgesehen ist, die direkt mit dem Greengrass-Kern verbunden sind. Weitere Hinweise darüber, welche öffentlichen Komponenten Plugins sind, finden Sie unter. AWSVon bereitgestellte Komponenten

  • aws.greengrass.nucleus— Die Nukleus-Komponente. Weitere Informationen finden Sie unter Grüngraskern.

    Wir empfehlen nicht, diese Option in Rezepturen für Komponenten zu verwenden. Es ist für die Greengrass Nucleus-Komponente vorgesehen, die die Mindestfunktionalität der AWS IoT Greengrass Core-Software bietet.

Standardmäßig, 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) Die ARN 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 Anforderungen der Komponente für eine Plattform definieren. Wenn ein Core-Gerät die Plattformanforderungen mehrerer Manifeste erfüllt, AWS IoT Greengrass wird das erste Manifest verwendet, dem das Core-Gerät entspricht. Um sicherzustellen, dass die Kerngeräte das richtige Manifest verwenden, definieren Sie zunächst 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 mindestens eines Manifests erfüllen, um die Komponente installieren zu können. Wenn kein Manifest mit dem Kerngerä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 benutzerfreundlicher Name für die Plattform, die dieses Manifest definiert.

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

Platform

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

Dieses Objekt spezifiziert Schlüssel-Wert-Paare für die Plattform, auf der ein Core-Gerät läuft. 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 architecture und 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 unter dem Parameter Platform Overrides der Greengrass Nucleus-Komponente.

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

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

  • *, was einem beliebigen Wert entspricht. Dies gilt auch, wenn kein Wert vorhanden ist.

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

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 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. Ersetzen key mit dem 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 unter dem Parameter Platform Overrides der Greengrass Nucleus-Komponente.

Tipp

Verwenden Sie das umgekehrte Domainnamenformat, um Namenskonflikte innerhalb Ihres Unternehmens zu vermeiden. Wenn Ihr Unternehmen beispielsweise Eigentümer eines Radioprojekts ist example.com und Sie daran arbeiten, können Sie ein benutzerdefiniertes Plattformattribut com.example.radio.RadioModule benennen. Auf diese Weise können Konflikte mit den Namen von Plattformattributen innerhalb Ihres Unternehmens vermieden werden.

Sie können beispielsweise ein Plattformattribut definierencom.example.radio.RadioModule, um ein anderes Manifest zu spezifizieren, das darauf basiert, welches Funkmodul auf einem Kerngerät verfügbar ist. Jedes Manifest kann unterschiedliche Artefakte enthalten, die für unterschiedliche Hardwarekonfigurationen gelten, sodass Sie die minimale Menge an Software auf dem Kerngerät bereitstellen.

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 spezifiziert.

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 Lebenszyklusskripten zur Verfügung gestellt wird. Sie können diese Umgebungsvariablen Setenv in jedem Lebenszyklusskript überschreiben.

install

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

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

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

Script

Das auszuführende Skript.

RequiresPrivilege

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

Skipif

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

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

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

Timeout

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

Standard: 120 Sekunden

Setenv

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

run

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

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

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

Wenn Sie Komponenten mit einem run Lebenszyklus bereitstellen, kann das Kerngerät die Bereitstellung als abgeschlossen melden, sobald dieses Lifecycle-Skript ausgeführt wird. Dadurch kann die Bereitstellung abgeschlossen und erfolgreich sein, auch wenn das run Lifecycle-Skript 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 einen run Lebenszyklus 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-Rechten ausführen. Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als Root aus und nicht als Systembenutzer, den Sie für die Ausführung dieser Komponente konfigurieren. Standardeinstellung: false.

Skipif

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

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

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

Timeout

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

Für diesen Lebenszyklusschritt gibt es standardmäßig kein Timeout. 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 zur Verfügung gestellt werden sollen. Diese Umgebungsvariablen überschreiben die Variablen, die Sie in angebenLifecycle.Setenv.

startup

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

Wird verwendetstartup, um einen Befehl auszuführen, der erfolgreich beendet oder der Status der Komponente aktualisiert werden muss, RUNNING bevor abhängige Komponenten gestartet werden können. Verwenden Sie den UpdateStateIPCVorgang, um den Status der Komponente auf RUNNING oder zu setzenERRORED, wenn die Komponente ein Skript startet, das nicht beendet wird. Sie könnten beispielsweise einen startup Schritt definieren, der den SQL Prozess Mein 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 RUNNING Status. Dann können abhängige Komponenten gestartet werden.

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

Anmerkung

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

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

Script

Das auszuführende Skript.

RequiresPrivilege

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

Skipif

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

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

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

Timeout

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

Standard: 120 Sekunden

Setenv

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

shutdown

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

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

Das shutdown Skript wird ausgeführt, nachdem die Komponente den STOPPING Status erreicht hat. Wenn das Skript erfolgreich abgeschlossen 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-Rechten ausführen. Wenn Sie diese Option auf setzentrue, führt die AWS IoT Greengrass Core-Software dieses Lifecycle-Skript als Root aus und nicht als Systembenutzer, den Sie für die Ausführung dieser Komponente konfigurieren. Standardeinstellung: false.

Skipif

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

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

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

Timeout

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

Standard: 15 Sekunden.

Setenv

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

recover

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

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

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

Script

Das auszuführende Skript.

RequiresPrivilege

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

Skipif

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

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

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

Timeout

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

Standard: 60 Sekunden.

Setenv

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

bootstrap

(Optional) Ein Objekt oder eine Zeichenfolge, die ein Skript definiert, für das die AWS IoT Greengrass Core-Software oder das Core-Gerät neu gestartet werden muss. Auf diese Weise können Sie eine Komponente entwickeln, die beispielsweise nach der Installation von Betriebssystem- 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 Core-Geräts erforderlich ist.

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

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

  • Die Version der Komponente ändert sich.

  • Das Bootstrap-Skript ändert sich als Ergebnis eines Updates 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.

Wichtig

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

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

BootstrapOnRollback
Anmerkung

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

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

Standardeinstellung: false.

Script

Das auszuführende Skript. Der Exit-Code dieses Skripts definiert die Neustart-Anweisung. 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 Bootstrap aller Komponenten immer noch neu gestartet.

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

  • 101— Anfrage zum Neustart des Core-Geräts.

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

RequiresPrivilege

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

Timeout

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

Standard: 120 Sekunden

Setenv

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

Selections

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

Wichtig

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

Sie können den all Auswahlschlüssel angeben, um Abschnitte des globalen Lebenszyklus auszuführen, für die es keine Auswahltasten gibt.

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 zu ermitteln, der die Artefakte enthält. Geben Sie beispielsweise {artifacts:path}/my_script.py in einem Rezept an, dass der Pfad zu einem Artefakt abgerufen werden soll, das den. URI s3://amzn-s3-demo-bucket/path/to/my_script.py

  • Extrahierte Archive — Verwenden Sie die decompressedPath Rezeptvariable artifacts:, 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, um den Pfad zu dem my_script.py Archivartefakt zu ermitteln, das den URIs3://amzn-s3-demo-bucket/path/to/my_archive.zip.

Anmerkung

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

Jedes Objekt enthält die folgenden Informationen:

URI

Das URI eines Artefakts in einem S3-Bucket. Die AWS IoT Greengrass Core-Software ruft das Artefakt von dort ab, URI 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 zu ermitteln.

  • ZIP— Die Datei ist ein Archiv. ZIP Die AWS IoT Greengrass Core-Software extrahiert das Archiv in einen Ordner mit demselben Namen wie das Archiv. Sie können die Variable artifacts: decompressedPath recipe 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 Artefaktordner 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 ein zu entpackendes Archiv 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 für den Ordner auf ALL für Read und fest. Execute Dadurch können Komponenten die entpackten Dateien im Ordner anzeigen. Um Berechtigungen für einzelne Dateien aus dem Archiv festzulegen, können Sie die Berechtigungen im Install-Lifecycle-Skript festlegen.

Dieses Objekt enthält die folgenden Informationen:

Read

(Optional) Die Leseberechtigung, die für diese Artefaktdatei festgelegt werden soll. Geben Sie Folgendes an, damit andere Komponenten auf dieses Artefakt zugreifen können, z. B. Komponenten, die von dieser Komponente abhängen. ALL Wählen Sie aus den folgenden Optionen aus:

  • NONE— Die Datei ist nicht lesbar.

  • OWNER— Die Datei ist für den Systembenutzer lesbar, den Sie für die Ausführung dieser Komponente 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 Execute Erlaubnis impliziert die Read Erlaubnis. Wenn Sie beispielsweise ALL for 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 kann von dem Systembenutzer ausgeführt werden, den Sie für die Ausführung der Komponente konfigurieren.

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

Standardeinstellung: NONE.

Digest

(Schreibgeschützt) 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-Kern 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 bei der Erstellung der Komponente festgelegt haben.

Algorithm

(Schreibgeschützt) Der AWS IoT Greengrass Hash-Algorithmus, mit dem der Digest-Hash des Artefakts berechnet wird.

Wenn Sie diesen Parameter festlegen, AWS IoT Greengrass ersetzt er den Wert, den Sie bei der Erstellung 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 spezifiziert.

Anmerkung

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

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

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

Wenn ein Manifest keinen Lebenszyklus oder keine Auswahlschlüssel definiert, verwendet das Kerngerät standardmäßig die all Auswahl. Das bedeutet, dass das Kerngerät in diesem Fall die Abschnitte des globalen Lebenszyklus verwendet, die keine Auswahltasten 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

Es wird empfohlen, für jede Auswahltaste 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 Auswahltasten auf unterster Ebene
Lifecycle: install: Script: key1: command1 key2: command2 all: command3
Beispiel für einen globalen Lebenszyklus mit mehreren Ebenen von Auswahlschlüsseln
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 aktuellen Kern zur Verfügung, 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 Lifecycle-Skript ausführen.

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

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 Komponentenabhängigkeit, die abgefragt werden soll. 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. JSONZeiger 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 voneinander zu trennen. Sie können eine Zahl als Schlüssel verwenden, um einen Index in einer Liste anzugeben. Weitere Informationen finden Sie in der JSONZeigerspezifikation.

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

Der JSON Zeiger kann auf die folgenden Knotentypen verweisen:

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

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

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

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

component_dependency_name:artifacts:path

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

Wenn eine Komponente installiert wird, werden die Artefakte der Komponente in den Ordner AWS IoT Greengrass kopiert, den diese Variable verfügbar macht. Sie können diese Variable verwenden, um beispielsweise 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 zu lesen oder auszuführen, müssen die entsprechenden Execute Rechte Read oder Rechte für das Artefakt vorliegen. ALL 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 Komponentenabhängigkeit, die abgefragt werden soll. 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, werden die Archivartefakte der Komponente in den Ordner AWS IoT Greengrass entpackt, den diese Variable verfügbar macht. Sie können diese Variable verwenden, um beispielsweise den Speicherort eines Skripts zu identifizieren, das im Lebenszyklus einer Komponente ausgeführt werden soll.

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

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

Um ein Artefakt aus einer Komponentenabhängigkeit zu lesen oder auszuführen, müssen die entsprechenden Execute Rechte Read oder Rechte für das Artefakt vorliegen. ALL 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 Komponentenabhängigkeit, die abgefragt werden soll. 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 Version 2.0.4 und höher der Greengrass Nucleus-Komponente verfügbar.

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

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, und für andere Komponenten, die unter demselben Benutzer und derselben Gruppe ausgeführt werden, lesbar und beschreibbar.

Diese Rezeptvariable hat die folgenden Eingaben:

  • component_dependency_name— (Optional) Der Name der Komponentenabhängigkeit, die abgefragt werden soll. 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 Version 2.3.0 und höher der Greengrass Nucleus-Komponente verfügbar.

Der Name der Sache des Kerngeräts. AWS IoT

Beispiele für Rezepte

Anhand der folgenden Rezeptbeispiele können Sie Rezepte für Ihre Komponenten erstellen.

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

Rezept für die Komponenten von Hello World

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

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

Beispiel für eine Python-Laufzeitkomponente

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

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

Komponentenrezept, das mehrere Felder spezifiziert

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