Interagieren mit dem Komponentenlebenszyklus - 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.

Interagieren mit dem Komponentenlebenszyklus

Verwenden Sie den Komponentenlebenszyklus-IPK-Service, um:

  • Aktualisieren Sie den Komponentenstatus auf dem Core-Gerät.

  • Abonnieren Sie Aktualisierungen des Komponentenstatus.

  • Verhindern Sie, dass der Kern die Komponente stoppt, um während einer Bereitstellung ein Update anzuwenden.

  • Pausieren und Fortsetzen von Komponentenprozessen.

SDK-Mindestversionen

In der folgenden Tabelle sind die Mindestversionen von aufgeführtAWS IoT Device SDK, die Sie für die Interaktion mit dem Komponentenlebenszyklus verwenden müssen.

Autorisierung

Um andere Komponenten von einer benutzerdefinierten Komponente aus anzuhalten oder fortzusetzen, müssen Sie Autorisierungsrichtlinien definieren, die es Ihrer Komponente ermöglichen, andere Komponenten zu verwalten. Informationen zum Definieren von Autorisierungsrichtlinien finden Sie unter Autorisieren Sie Komponenten zur Ausführung von Vorgängen IPC.

Autorisierungsrichtlinien für die Verwaltung des Komponentenlebenszyklus haben die folgenden Eigenschaften.

IPC-Service-ID: aws.greengrass.ipc.lifecycle

Operation Beschreibung Ressourcen

aws.greengrass#PauseComponent

Ermöglicht einer Komponente, die von Ihnen angegebenen Komponenten anzuhalten.

Ein Komponentenname oder , * um den Zugriff auf alle Komponenten zu ermöglichen.

aws.greengrass#ResumeComponent

Ermöglicht einer Komponente, die von Ihnen angegebenen Komponenten fortzusetzen.

Ein Komponentenname oder , * um den Zugriff auf alle Komponenten zu ermöglichen.

*

Ermöglicht einer Komponente, die von Ihnen angegebenen Komponenten anzuhalten und fortzusetzen.

Ein Komponentenname oder , * um den Zugriff auf alle Komponenten zu ermöglichen.

Beispiele für Autorisierungsrichtlinien

Sie können auf das folgende Beispiel für eine Autorisierungsrichtlinie verweisen, um Ihnen bei der Konfiguration von Autorisierungsrichtlinien für Ihre Komponenten zu helfen.

Beispiel für eine Autorisierungsrichtlinie

Die folgende Beispiel-Autorisierungsrichtlinie ermöglicht es einer Komponente, alle Komponenten anzuhalten und fortzusetzen.

{ "accessControl": { "aws.greengrass.ipc.lifecycle": { "com.example.MyLocalLifecycleComponent:lifecycle:1": { "policyDescription": "Allows access to pause/resume all components.", "operations": [ "aws.greengrass#PauseComponent", "aws.greengrass#ResumeComponent" ], "resources": [ "*" ] } } } }

UpdateState

Aktualisieren Sie den Status der Komponente auf dem Core-Gerät.

Anforderung

Die Anforderung dieser Operation hat die folgenden Parameter:

state

Der Status, der festgelegt werden soll. Diese Aufzählung, LifecycleState, hat die folgenden Werte:

  • RUNNING

  • ERRORED

Antwort

Dieser Vorgang liefert keine Informationen in seiner Antwort.

SubscribeToComponentUpdates

Abonnieren Sie , um Benachrichtigungen zu erhalten, bevor die AWS IoT Greengrass -Core-Software eine Komponente aktualisiert. Die Benachrichtigung gibt an, ob der Kern im Rahmen des Updates neu gestartet wird oder nicht.

Der -Kern sendet Aktualisierungsbenachrichtigungen nur, wenn die Richtlinie zur Komponentenaktualisierung der Bereitstellung angibt, Komponenten zu benachrichtigen. Das Standardverhalten besteht darin, Komponenten zu benachrichtigen. Weitere Informationen finden Sie unter Erstellen von Bereitstellungen und das -DeploymentComponentUpdatePolicyObjekt, das Sie beim Aufrufen der -CreateDeploymentOperation angeben können.

Wichtig

Lokale Bereitstellungen benachrichtigen Komponenten nicht vor Aktualisierungen.

Dieser Vorgang ist ein Abonnementvorgang, bei dem Sie einen Stream von Ereignisnachrichten abonnieren. Um diesen Vorgang zu verwenden, definieren Sie einen Stream-Antwort-Handler mit Funktionen, die Ereignismeldungen, Fehler und Stream-Schließung verarbeiten. Weitere Informationen finden Sie unter Abonnieren Sie IPC Event-Streams.

Typ der Ereignisnachricht: ComponentUpdatePolicyEvents

Tipp

Sie können einem Tutorial folgen, um zu erfahren, wie Sie eine Komponente entwickeln, die Komponentenaktualisierungen bedingt verzögert. Weitere Informationen finden Sie unter Tutorial: Entwickeln einer Greengrass-Komponente, die Komponentenaktualisierungen verzögert.

Anforderung

Die Anforderung dieser Operation hat keine Parameter.

Antwort

Die Antwort dieser Operation enthält die folgenden Informationen:

messages

Der Stream von Benachrichtigungen. Dieses Objekt, ComponentUpdatePolicyEvents, enthält die folgenden Informationen:

preUpdateEvent (Python: pre_update_event)

(Optional) Ein Ereignis, das angibt, dass der Kern eine Komponente aktualisieren möchte. Sie können mit der -DeferComponentUpdateOperation antworten, um das Update zu bestätigen oder zu verschieben, bis Ihre Komponente zum Neustart bereit ist. Dieses Objekt, PreComponentUpdateEvent, enthält die folgenden Informationen:

deploymentId (Python: deployment_id)

Die ID der AWS IoT Greengrass Bereitstellung, die die Komponente aktualisiert.

isGgcRestarting (Python: is_ggc_restarting)

Gibt an, ob der Kern neu gestartet werden muss, um das Update anzuwenden.

postUpdateEvent (Python: post_update_event)

(Optional) Ein Ereignis, das angibt, dass der Kern eine Komponente aktualisiert hat. Dieses Objekt, PostComponentUpdateEvent, enthält die folgenden Informationen:

deploymentId (Python: deployment_id)

Die ID der AWS IoT Greengrass Bereitstellung, die die Komponente aktualisiert hat.

Anmerkung

Diese Funktion erfordert v2.7.0 oder höher der Greengrass-Kernkomponente.

DeferComponentUpdate

Bestätigen oder verschieben Sie eine Komponentenaktualisierung, die Sie mit entdeckenSubscribeToComponentUpdates. Sie geben die Wartezeit an, bevor der Kern erneut prüft, ob Ihre Komponente bereit ist, die Komponentenaktualisierung fortzusetzen. Sie können diese Operation auch verwenden, um dem Kern mitzuteilen, dass Ihre Komponente für die Aktualisierung bereit ist.

Wenn eine Komponente nicht auf die Benachrichtigung zur Komponentenaktualisierung reagiert, wartet der Kern die Zeit, die Sie in der Richtlinie zur Komponentenaktualisierung der Bereitstellung angeben. Nach diesem Timeout fährt der Kern mit der Bereitstellung fort. Das Standard-Timeout für Komponentenaktualisierungen beträgt 60 Sekunden. Weitere Informationen finden Sie unter Erstellen von Bereitstellungen und das -DeploymentComponentUpdatePolicyObjekt, das Sie beim Aufrufen der -CreateDeploymentOperation angeben können.

Tipp

Sie können einem Tutorial folgen, um zu erfahren, wie Sie eine Komponente entwickeln, die Komponentenaktualisierungen bedingt verzögert. Weitere Informationen finden Sie unter Tutorial: Entwickeln einer Greengrass-Komponente, die Komponentenaktualisierungen verzögert.

Anforderung

Die Anforderung dieser Operation hat die folgenden Parameter:

deploymentId (Python: deployment_id)

Die ID der zu verschiebenden AWS IoT Greengrass Bereitstellung.

message

(Optional) Der Name der Komponente, für die Updates verschoben werden sollen.

Standardmäßig ist der Name der Komponente, die die Anforderung stellt.

recheckAfterMs (Python: recheck_after_ms)

Die Zeit in Millisekunden, für die die Aktualisierung verschoben werden soll. Der Kern wartet diese Zeit und sendet dann ein weiteres PreComponentUpdateEvent, das Sie mit erkennen könnenSubscribeToComponentUpdates.

Geben Sie an0, um die Aktualisierung zu bestätigen. Dadurch wird dem Kern mitgeteilt, dass Ihre Komponente für das Update bereit ist.

Der Standardwert ist null Millisekunden, was bedeutet, dass die Aktualisierung bestätigt wird.

Antwort

Dieser Vorgang liefert keine Informationen in seiner Antwort.

PauseComponent

Diese Funktion ist für v2.4.0 und höher der Greengrass-Kernkomponente verfügbar. unterstützt diese Funktion derzeit AWS IoT Greengrass nicht auf Windows-Kerngeräten.

Pausiert die Prozesse einer Komponente auf dem Core-Gerät. Um eine Komponente fortzusetzen, verwenden Sie die -ResumeComponentOperation.

Sie können nur generische Komponenten pausieren. Wenn Sie versuchen, einen anderen Komponententyp anzuhalten, löst dieser Vorgang eine ausInvalidRequestError.

Anmerkung

Dieser Vorgang kann keine containerisierten Prozesse wie Docker-Container anhalten. Um einen Docker-Container anzuhalten und fortzusetzen, können Sie die Befehle Docker anhalten und Docker anhalten verwenden.

Dieser Vorgang unterbricht keine Komponentenabhängigkeiten oder Komponenten, die von der Komponente abhängen, die Sie pausieren. Beachten Sie dieses Verhalten, wenn Sie eine Komponente anhalten, die eine Abhängigkeit einer anderen Komponente ist, da bei der abhängigen Komponente Probleme auftreten können, wenn ihre Abhängigkeit angehalten wird.

Wenn Sie eine angehaltene Komponente neu starten oder herunterfahren, z. B. durch eine Bereitstellung, nimmt der Greengrass-Kernus die Komponente wieder auf und führt ihren Lebenszyklus zum Herunterfahren aus. Weitere Informationen zum Neustarten einer Komponente finden Sie unter RestartComponent.

Wichtig

Um diese Operation verwenden zu können, müssen Sie eine Autorisierungsrichtlinie definieren, die die Berechtigung zur Verwendung dieser Operation erteilt. Weitere Informationen finden Sie unter Autorisierung.

SDK-Mindestversionen

In der folgenden Tabelle sind die Mindestversionen von aufgeführtAWS IoT Device SDK, die Sie zum Anhalten und Fortsetzen von Komponenten verwenden müssen.

Anforderung

Die Anforderung dieser Operation hat die folgenden Parameter:

componentName (Python: component_name)

Der Name der Komponente, die angehalten werden soll. Dabei muss es sich um eine generische Komponente handeln. Weitere Informationen finden Sie unter Komponententypen.

Antwort

Dieser Vorgang liefert keine Informationen in seiner Antwort.

ResumeComponent

Diese Funktion ist für v2.4.0 und höher der Greengrass-Kernkomponente verfügbar. unterstützt diese Funktion derzeit AWS IoT Greengrass nicht auf Windows-Kerngeräten.

Setzt die Prozesse einer Komponente auf dem Core-Gerät fort. Um eine Komponente anzuhalten, verwenden Sie die -PauseComponentOperation.

Sie können nur angehaltene Komponenten fortsetzen. Wenn Sie versuchen, eine Komponente fortzusetzen, die nicht angehalten wurde, löst dieser Vorgang eine ausInvalidRequestError.

Wichtig

Um diesen Vorgang verwenden zu können, müssen Sie eine Autorisierungsrichtlinie definieren, die die entsprechende Berechtigung erteilt. Weitere Informationen finden Sie unter Autorisierung.

SDK-Mindestversionen

In der folgenden Tabelle sind die Mindestversionen von aufgeführtAWS IoT Device SDK, die Sie zum Anhalten und Fortsetzen von Komponenten verwenden müssen.

Anforderung

Die Anforderung dieser Operation hat die folgenden Parameter:

componentName (Python: component_name)

Der Name der Komponente, die fortgesetzt werden soll.

Antwort

Dieser Vorgang liefert keine Informationen in seiner Antwort.