

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 Sie mit dem Lebenszyklus von Komponenten
<a name="ipc-component-lifecycle"></a>

Verwenden Sie den IPC-Service für den Komponentenlebenszyklus, um:
+ Aktualisieren Sie den Komponentenstatus auf dem Kerngerät.
+ Abonnieren Sie Updates zum Komponentenstatus.
+ Verhindern Sie, dass der Nucleus die Komponente während einer Bereitstellung unterbricht, um ein Update anzuwenden.
+ Unterbrechen Sie die Komponentenprozesse und setzen Sie sie fort.

**Topics**
+ [Minimale SDK-Versionen](#ipc-component-lifecycle-sdk-versions)
+ [Autorisierung](#ipc-component-lifecycle-authorization)
+ [UpdateState](#ipc-operation-updatestate)
+ [SubscribeToComponentUpdates](#ipc-operation-subscribetocomponentupdates)
+ [DeferComponentUpdate](#ipc-operation-defercomponentupdate)
+ [PauseComponent](#ipc-operation-pausecomponent)
+ [ResumeComponent](#ipc-operation-resumecomponent)

## Minimale SDK-Versionen
<a name="ipc-component-lifecycle-sdk-versions"></a>

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


| SDK | Mindestversion | 
| --- | --- | 
|  [AWS IoT Device SDK für Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  v1.2.10  | 
|  [AWS IoT Device SDK für Python v2](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  v1.5.3  | 
|  [AWS IoT Device SDK für C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  v1.17.0  | 
|  [AWS IoT Device SDK für v2 JavaScript ](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  v1.12.0  | 

## Autorisierung
<a name="ipc-component-lifecycle-authorization"></a>

Um andere Komponenten einer benutzerdefinierten Komponente anzuhalten oder wieder aufzunehmen, müssen Sie Autorisierungsrichtlinien definieren, die es Ihrer Komponente ermöglichen, andere Komponenten zu verwalten. Informationen zur Definition von Autorisierungsrichtlinien finden Sie unter[Autorisieren Sie Komponenten zur Ausführung von IPC-Vorgängen](interprocess-communication.md#ipc-authorization-policies).

Autorisierungsrichtlinien für das Lebenszyklusmanagement von Komponenten haben die folgenden Eigenschaften.

**IPC-Dienst-ID:** `aws.greengrass.ipc.lifecycle`


| Operation | Description | 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 wieder aufzunehmen.  |  Ein Komponentenname oder `*` um den Zugriff auf alle Komponenten zu ermöglichen.  | 
|  `*`  |  Ermöglicht einer Komponente, die von Ihnen angegebenen Komponenten anzuhalten und wieder aufzunehmen.  |  Ein Komponentenname oder `*` um den Zugriff auf alle Komponenten zu ermöglichen.  | 

### Beispiele für Autorisierungsrichtlinien
<a name="ipc-component-lifecycle-authorization-policy-examples"></a>

Anhand des folgenden Beispiels für Autorisierungsrichtlinien können Sie Autorisierungsrichtlinien für Ihre Komponenten konfigurieren.

**Example Beispiel für eine Autorisierungsrichtlinie**  
Das folgende Beispiel für eine Autorisierungsrichtlinie ermöglicht es einer Komponente, alle Komponenten anzuhalten und wieder aufzunehmen.  

```
{
  "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
<a name="ipc-operation-updatestate"></a>

Aktualisieren Sie den Status der Komponente auf dem Kerngerät.

### Anforderung
<a name="ipc-operation-updatestate-request"></a>

Die Anfrage dieser Operation hat die folgenden Parameter:

`state`  
Der festzulegende Status. Diese Aufzählung,`LifecycleState`, hat die folgenden Werte:  
+ `RUNNING`
+ `ERRORED`

### Antwort
<a name="ipc-operation-updatestate-response"></a>

Dieser Vorgang liefert in seiner Antwort keine Informationen.

### Beispiele
<a name="ipc-operation-updatestate-examples"></a>

Die folgenden Beispiele zeigen, wie dieser Vorgang in benutzerdefiniertem Komponentencode aufgerufen wird.

------
#### [ Rust ]

**Example Beispiel: Status aktualisieren**  

```
use gg_sdk::{ComponentState, Sdk};

fn main() {
    let sdk = Sdk::init();
    sdk.connect().expect("Failed to establish IPC connection");

    // Update component state to RUNNING
    sdk.update_state(ComponentState::Running)
        .expect("Failed to update component state");

    println!("Successfully updated component state to RUNNING.");
}
```

------
#### [ C ]

**Example Beispiel: Status aktualisieren**  

```
#include <gg/error.h>
#include <gg/ipc/client.h>
#include <gg/sdk.h>
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    gg_sdk_init();

    GgError err = ggipc_connect();
    if (err != GG_ERR_OK) {
        fprintf(stderr, "Failed to establish IPC connection.\n");
        exit(-1);
    }

    // Update component state to RUNNING
    err = ggipc_update_state(GG_COMPONENT_STATE_RUNNING);
    if (err != GG_ERR_OK) {
        fprintf(stderr, "Failed to update component state.\n");
        exit(-1);
    }

    printf("Successfully updated component state to RUNNING.\n");
}
```

------
#### [ C\$1\$1 (Component SDK) ]

**Example Beispiel: Status aktualisieren**  

```
#include <gg/ipc/client.hpp>
#include <iostream>

int main() {
    auto &client = gg::ipc::Client::get();

    auto error = client.connect();
    if (error) {
        std::cerr << "Failed to establish IPC connection.\n";
        exit(-1);
    }

    // Update component state to RUNNING
    error = client.update_component_state(GG_COMPONENT_STATE_RUNNING);
    if (error) {
        std::cerr << "Failed to update component state.\n";
        exit(-1);
    }

    std::cout << "Successfully updated component state to RUNNING.\n";
}
```

------

## SubscribeToComponentUpdates
<a name="ipc-operation-subscribetocomponentupdates"></a>

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

Der Nucleus sendet nur dann Aktualisierungsbenachrichtigungen, wenn die Komponenten-Update-Richtlinie der Bereitstellung vorsieht, dass Komponenten benachrichtigt werden sollen. Das Standardverhalten besteht darin, Komponenten zu benachrichtigen. Weitere Informationen finden Sie unter [Erstellen von Bereitstellungen](create-deployments.md) und unter dem [DeploymentComponentUpdatePolicy](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_DeploymentComponentUpdatePolicy.html)Objekt, das Sie angeben können, wenn Sie den [CreateDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html)Vorgang aufrufen.

**Wichtig**  
Bei lokalen Bereitstellungen werden Komponenten vor Updates nicht benachrichtigt.

<a name="ipc-subscribe-operation-note"></a>Bei diesem Vorgang handelt es sich um einen Abonnementvorgang, bei dem Sie einen Stream von Ereignisnachrichten abonnieren. Um diese Operation zu verwenden, definieren Sie einen Stream-Response-Handler mit Funktionen, die Ereignismeldungen, Fehler und das Schließen von Streams behandeln. Weitere Informationen finden Sie unter [Abonnieren Sie IPC-Event-Streams](interprocess-communication.md#ipc-subscribe-operations).

**Typ der Ereignisnachricht:** `ComponentUpdatePolicyEvents`

**Tipp**  
In einem Tutorial erfahren Sie, wie Sie eine Komponente entwickeln, die Komponenten-Updates bedingt verzögert. Weitere Informationen finden Sie unter [Tutorial: Entwickeln Sie eine Greengrass-Komponente, die Komponenten-Updates verzögert](defer-component-updates-tutorial.md).

### Anforderung
<a name="ipc-operation-subscribetocomponentupdates-request"></a>

Die Anfrage dieser Operation hat keine Parameter.

### Antwort
<a name="ipc-operation-subscribetocomponentupdates-response"></a>

Die Antwort dieser Operation enthält die folgenden Informationen:

`messages`  
Der Stream von Benachrichtigungsnachrichten. Dieses Objekt,`ComponentUpdatePolicyEvents`, enthält die folgenden Informationen:    
`preUpdateEvent`(Python:`pre_update_event`)  
(Optional) Ein Ereignis, das anzeigt, dass der Nucleus eine Komponente aktualisieren möchte. Sie können darauf antworten, indem [DeferComponentUpdate](#ipc-operation-defercomponentupdate) Sie die Aktualisierung bestätigen oder verschieben, bis Ihre Komponente für den 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`)  
Ob der Nucleus neu gestartet werden muss, um das Update zu installieren.  
`postUpdateEvent`(Python:`post_update_event`)  
(Optional) Ein Ereignis, das darauf hinweist, dass der Nucleus 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.  
Für diese Funktion ist Version 2.7.0 oder höher der Greengrass Nucleus-Komponente erforderlich.

## DeferComponentUpdate
<a name="ipc-operation-defercomponentupdate"></a>

Bestätigen oder verschieben Sie ein Komponenten-Update, das Sie mit entdecken. [SubscribeToComponentUpdates](#ipc-operation-subscribetocomponentupdates) Sie geben an, wie lange es dauern soll, bis der Nucleus erneut überprüft, ob Ihre Komponente bereit ist, mit dem Komponenten-Update fortzufahren. Sie können diesen Vorgang auch verwenden, um dem Nucleus mitzuteilen, dass Ihre Komponente für das Update bereit ist.

Wenn eine Komponente nicht auf die Benachrichtigung über das Komponenten-Update reagiert, wartet der Nucleus so lange, wie Sie in der Komponenten-Update-Richtlinie für die Installation angegeben haben. Nach diesem Timeout fährt der Nucleus mit der Bereitstellung fort. Das Standard-Timeout für Komponenten-Updates beträgt 60 Sekunden. Weitere Informationen finden Sie unter [Erstellen von Bereitstellungen](create-deployments.md) und unter dem [DeploymentComponentUpdatePolicy](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_DeploymentComponentUpdatePolicy.html)Objekt, das Sie angeben können, wenn Sie den [CreateDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html)Vorgang aufrufen.

**Tipp**  
Sie können einem Tutorial folgen, um zu erfahren, wie Sie eine Komponente entwickeln, die Komponenten-Updates bedingt verzögert. Weitere Informationen finden Sie unter [Tutorial: Entwickeln Sie eine Greengrass-Komponente, die Komponenten-Updates verzögert](defer-component-updates-tutorial.md).

### Anforderung
<a name="ipc-operation-defercomponentupdate-request"></a>

Die Anforderung dieses Vorgangs hat die folgenden Parameter:

`deploymentId`(Python:`deployment_id`)  
Die ID der AWS IoT Greengrass Bereitstellung, die verschoben werden soll.

`message`  
(Optional) Der Name der Komponente, für die Updates verschoben werden sollen.  
Standardmäßig wird der Name der Komponente verwendet, die die Anfrage stellt.

`recheckAfterMs`(Python:`recheck_after_ms`)  
Die Zeitspanne in Millisekunden, um die Aktualisierung verschoben werden soll. Der Nukleus wartet auf diese Zeit und sendet dann eine weitere`PreComponentUpdateEvent`, mit der Sie etwas entdecken können. [SubscribeToComponentUpdates](#ipc-operation-subscribetocomponentupdates)  
Geben Sie `0` an, ob Sie das Update bestätigen möchten. Dadurch wird dem Nucleus mitgeteilt, dass Ihre Komponente für das Update bereit ist.  
Der Standardwert ist null Millisekunden, was bedeutet, dass das Update bestätigt wird.

### Antwort
<a name="ipc-operation-defercomponentupdate-response"></a>

Dieser Vorgang liefert in seiner Antwort keine Informationen.

## PauseComponent
<a name="ipc-operation-pausecomponent"></a>

Diese Funktion ist für Version 2.4.0 und höher der [Greengrass](greengrass-nucleus-component.md) Nucleus-Komponente verfügbar. AWS IoT Greengrass unterstützt diese Funktion derzeit nicht auf Windows Core-Geräten. 

Unterbricht die Prozesse einer Komponente auf dem Kerngerät. Verwenden Sie den [ResumeComponent](#ipc-operation-resumecomponent)Vorgang, um eine Komponente wieder aufzunehmen.

Sie können nur generische Komponenten anhalten. Wenn Sie versuchen, einen anderen Komponententyp anzuhalten, löst dieser Vorgang eine `InvalidRequestError` aus.

**Anmerkung**  
Durch diesen Vorgang können containerisierte Prozesse wie Docker-Container nicht angehalten werden. Um einen Docker-Container anzuhalten und wieder aufzunehmen, können Sie die Befehle [docker pause und [docker](https://docs.docker.com/engine/reference/commandline/unpause/) unpause](https://docs.docker.com/engine/reference/commandline/pause/) verwenden.

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

Wenn Sie eine angehaltene Komponente neu starten oder herunterfahren, z. B. durch eine Bereitstellung, nimmt der Greengrass-Nucleus die Komponente wieder auf und führt ihren Shutdown-Lebenszyklus durch. Weitere Informationen zum Neustarten einer Komponente finden Sie unter. [RestartComponent](ipc-local-deployments-components.md#ipc-operation-restartcomponent)

**Wichtig**  
Um diesen Vorgang verwenden zu können, müssen Sie eine Autorisierungsrichtlinie definieren, die die Erlaubnis zur Verwendung dieses Vorgangs erteilt. Weitere Informationen finden Sie unter [Autorisierung](#ipc-component-lifecycle-authorization).

### Minimale SDK-Versionen
<a name="ipc-operation-pausecomponent-sdk-versions"></a>

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


| SDK | Mindestversion | 
| --- | --- | 
|  [AWS IoT Device SDK für Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  v1.4.3  | 
|  [AWS IoT Device SDK für Python v2](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  v1.6.2  | 
|  [AWS IoT Device SDK für C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  v1.13.1  | 
|  [AWS IoT Device SDK für JavaScript v2](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  v1.12.0  | 

### Anforderung
<a name="ipc-operation-defercomponentupdate-request"></a>

Die Anfrage 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](develop-greengrass-components.md#component-types).

### Antwort
<a name="ipc-operation-defercomponentupdate-response"></a>

Dieser Vorgang liefert in seiner Antwort keine Informationen.

## ResumeComponent
<a name="ipc-operation-resumecomponent"></a>

Diese Funktion ist für Version 2.4.0 und höher der [Greengrass](greengrass-nucleus-component.md) Nucleus-Komponente verfügbar. AWS IoT Greengrass unterstützt diese Funktion derzeit nicht auf Windows Core-Geräten. 

Setzt die Prozesse einer Komponente auf dem Kerngerät fort. Verwenden Sie den [PauseComponent](#ipc-operation-pausecomponent)Vorgang, um eine Komponente anzuhalten.

Sie können nur angehaltene Komponenten wieder aufnehmen. Wenn Sie versuchen, eine Komponente wieder aufzunehmen, die nicht angehalten wurde, löst dieser Vorgang eine aus. `InvalidRequestError`

**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](#ipc-component-lifecycle-authorization).

### Minimale SDK-Versionen
<a name="ipc-operation-resumecomponent-sdk-versions"></a>

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


| SDK | Mindestversion | 
| --- | --- | 
|  [AWS IoT Device SDK für Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  v1.4.3  | 
|  [AWS IoT Device SDK für Python v2](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  v1.6.2  | 
|  [AWS IoT Device SDK für C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  v1.13.1  | 
|  [AWS IoT Device SDK für JavaScript v2](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  v1.12.0  | 

### Anforderung
<a name="ipc-operation-defercomponentupdate-request"></a>

Die Anfrage dieser Operation hat die folgenden Parameter:

`componentName`(Python:`component_name`)  
Der Name der Komponente, die fortgesetzt werden soll.

### Antwort
<a name="ipc-operation-defercomponentupdate-response"></a>

Dieser Vorgang liefert in seiner Antwort keine Informationen.