

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.

# Erstellen von Bereitstellungen
<a name="create-deployments"></a>

Sie können eine Bereitstellung erstellen, die auf ein Ding oder eine Dinggruppe abzielt.

Wenn Sie eine Bereitstellung erstellen, konfigurieren Sie die bereitzustellenden Softwarekomponenten und die Art und Weise, wie der Bereitstellungsauftrag auf den Zielgeräten ausgeführt wird. Sie können die Bereitstellung in der JSON-Datei definieren, die Sie dem zur Verfügung stellen AWS CLI.

Das Bereitstellungsziel bestimmt die Geräte, auf denen Sie Ihre Komponenten ausführen möchten. Um die Bereitstellung auf einem Kerngerät durchzuführen, geben Sie eine Sache an. Für die Bereitstellung auf mehreren Kerngeräten geben Sie eine Dinggruppe an, die diese Geräte umfasst. Weitere Informationen zur Konfiguration von Dinggruppen finden Sie [ im *AWS IoT Entwicklerhandbuch*](https://docs.aws.amazon.com/iot/latest/developerguide/dynamic-thing-groups.html) unter [ Statische](https://docs.aws.amazon.com/iot/latest/developerguide/thing-groups.html) Dinggruppen und Dynamische Dinggruppen.

Folgen Sie den Schritten in diesem Abschnitt, um eine Bereitstellung für ein Ziel zu erstellen. Weitere Informationen zum Aktualisieren der Softwarekomponenten auf einem Ziel, das über eine Bereitstellung verfügt, finden Sie unter[Bereitstellungen überarbeiten](revise-deployments.md).

**Warnung**  
Durch den [ CreateDeployment ](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html) Vorgang können Komponenten von Kerngeräten deinstalliert werden. Wenn eine Komponente in der vorherigen Bereitstellung und nicht in der neuen Bereitstellung vorhanden ist, deinstalliert das Kerngerät diese Komponente. Um die Deinstallation von Komponenten zu vermeiden, überprüfen Sie mit [ ListDeployments ](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_ListDeployments.html) diesem Vorgang zunächst, ob für das Ziel der Bereitstellung bereits eine Bereitstellung vorhanden ist. Verwenden Sie dann den [ GetDeployment ](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetDeployment.html) Vorgang, um mit dieser vorhandenen Bereitstellung zu beginnen, wenn Sie eine neue Bereitstellung erstellen.

**Um eine Bereitstellung zu erstellen (AWS CLI)**

1. Erstellen Sie eine Datei mit dem Namen `deployment.json` und kopieren Sie dann das folgende JSON-Objekt in die Datei. {{targetArn}}Ersetzen Sie es durch den ARN des AWS IoT Dings oder der Dinggruppe, auf das die Bereitstellung abzielen soll. Die ARNs von Dingen und Dinggruppen haben das folgende Format:
   + Objekt: `arn:aws:iot:{{region}}:{{account-id}}:thing/{{thingName}}`
   + Objektgruppe: `arn:aws:iot:{{region}}:{{account-id}}:thinggroup/{{thingGroupName}}`

   ```
   {
     "targetArn": "{{targetArn}}"
   }
   ```

1. Prüfen Sie, ob das Bereitstellungsziel bereits über eine Bereitstellung verfügt, die Sie überarbeiten möchten. Gehen Sie wie folgt vor:

   1. <a name="revise-deployment-list-deployments-intro"></a>Führen Sie den folgenden Befehl aus, um die Bereitstellungen für das Bereitstellungsziel aufzulisten. {{targetArn}}Ersetzen Sie es durch den ARN der AWS IoT Zielsache oder der Dinggruppe.

      ```
      aws greengrassv2 list-deployments --target-arn {{targetArn}}
      ```

      Die Antwort enthält eine Liste mit der neuesten Bereitstellung für das Ziel. Wenn die Antwort leer ist, ist für das Ziel keine Bereitstellung vorhanden, und Sie können zu dieser wechseln[Step 3](#create-deployment-define-name-step). Andernfalls kopieren Sie das `deploymentId` aus der Antwort, um es im nächsten Schritt zu verwenden.
**Anmerkung**  <a name="revise-deployment-list-deployments-revision-note"></a>
Sie können auch eine andere Bereitstellung als die neueste Version für das Ziel überarbeiten. Geben Sie das `--history-filter ALL` Argument an, um alle Bereitstellungen für das Ziel aufzulisten. Kopieren Sie dann die ID der Bereitstellung, die Sie überarbeiten möchten.

   1. <a name="revise-deployment-get-deployment"></a>Führen Sie den folgenden Befehl aus, um die Details der Bereitstellung abzurufen. Zu diesen Details gehören Metadaten, Komponenten und Auftragskonfiguration. {{deploymentId}}Ersetzen Sie durch die ID aus dem vorherigen Schritt.

      ```
      aws greengrassv2 get-deployment --deployment-id {{deploymentId}}
      ```

      Die Antwort enthält die Details der Bereitstellung.

   1. Kopieren Sie eines der folgenden Schlüssel-Wert-Paare aus der Antwort des vorherigen Befehls in. `deployment.json` Sie können diese Werte für die neue Bereitstellung ändern.
      + `deploymentName`— Der Name der Bereitstellung.
      + `components`— Die Komponenten der Bereitstellung. Um eine Komponente zu deinstallieren, entfernen Sie sie aus diesem Objekt.
      + `deploymentPolicies`— Die Richtlinien der Bereitstellung.
      + `iotJobConfiguration`— Die Auftragskonfiguration der Bereitstellung.
      + `tags`— Die Stichwörter der Bereitstellung.

1. <a name="create-deployment-define-name-step"></a>(Optional) Definieren Sie einen Namen für die Bereitstellung. {{deploymentName}}Ersetzen Sie ihn durch den Namen der Bereitstellung.

   ```
   {
     "targetArn": "{{targetArn}}",
     "deploymentName": "{{deploymentName}}"
   }
   ```

1. Fügen Sie jede Komponente hinzu, um die Zielgeräte bereitzustellen. Fügen Sie dazu dem `components` Objekt Schlüssel-Wert-Paare hinzu, wobei der Schlüssel der Komponentenname ist und der Wert ein Objekt ist, das die Details für diese Komponente enthält. Geben Sie die folgenden Details für jede Komponente an, die Sie hinzufügen:
   + `version`— Die bereitzustellende Komponentenversion.
   + `configurationUpdate`— Das bereitzustellende [ Konfigurationsupdate](update-component-configurations.md). Das Update ist ein Patch-Vorgang, bei dem die vorhandene Konfiguration der Komponente auf jedem Zielgerät oder die Standardkonfiguration der Komponente geändert wird, falls sie auf dem Zielgerät nicht vorhanden ist. Sie können die folgenden Konfigurationsupdates angeben:
     + Reset updates (`reset`) — (Optional) Eine Liste von JSON-Zeigern, die die Konfigurationswerte definieren, die auf dem Zielgerät auf ihre Standardwerte zurückgesetzt werden sollen. Die AWS IoT Greengrass Core-Software wendet Reset-Updates an, bevor sie Merge-Updates anwendet. Weitere Informationen finden Sie unter [Updates zurücksetzen](update-component-configurations.md#reset-configuration-update).
     + Merge updates (`merge`) — (Optional) Ein JSON-Dokument, das die Konfigurationswerte definiert, die auf dem Zielgerät zusammengeführt werden sollen. Sie müssen das JSON-Dokument als Zeichenfolge serialisieren. Weitere Informationen finden Sie unter [Updates zusammenführen](update-component-configurations.md#merge-configuration-update).
   + <a name="component-run-with-config"></a>`runWith`— (Optional) Die Systemprozessoptionen, die die AWS IoT Greengrass Core-Software verwendet, um die Prozesse dieser Komponente auf dem Kerngerät auszuführen. Wenn Sie einen Parameter im `runWith` Objekt weglassen, verwendet die AWS IoT Greengrass Core-Software die Standardwerte, die Sie für die [ Greengrass-Nucleus-Komponente konfigurieren. ](greengrass-nucleus-component.md)

     Sie können jede der folgenden Optionen angeben:
     + `posixUser`— Der POSIX-Systembenutzer und optional die Gruppe, die zum Ausführen dieser Komponente auf Linux-Core-Geräten verwendet werden sollen. Der Benutzer und die Gruppe, falls angegeben, müssen auf jedem Linux-Kerngerät vorhanden sein. Geben Sie den Benutzer und die Gruppe durch einen Doppelpunkt (`:`) getrennt im folgenden Format an: `user:group`. Die Gruppe ist optional. Wenn Sie keine Gruppe angeben, verwendet die AWS IoT Greengrass Core-Software die primäre Gruppe für den Benutzer. Weitere Informationen finden Sie unter [Konfigurieren Sie den Benutzer, der die Komponenten ausführt](configure-greengrass-core-v2.md#configure-component-user).
     + `windowsUser`— Der Windows-Benutzer, der für die Ausführung dieser Komponente auf Windows-Core-Geräten verwendet werden soll. Der Benutzer muss auf jedem Windows-Core-Gerät vorhanden sein, und sein Name und sein Passwort müssen in der Credentials Manager-Instanz des LocalSystem Kontos gespeichert werden. Weitere Informationen finden Sie unter [Konfigurieren Sie den Benutzer, der die Komponenten ausführt](configure-greengrass-core-v2.md#configure-component-user).

       Diese Funktion ist für Version 2.5.0 und höher der [ Greengrass Nucleus-Komponente verfügbar. ](greengrass-nucleus-component.md)
     + `systemResourceLimits`— Die Systemressourcenbeschränkungen, die für die Prozesse dieser Komponente gelten. Sie können Systemressourcenbeschränkungen auf generische und nicht containerisierte Lambda-Komponenten anwenden. Weitere Informationen finden Sie unter [Konfigurieren Sie die Systemressourcenlimits für Komponenten](configure-greengrass-core-v2.md#configure-component-system-resource-limits).

       Sie können eine der folgenden Optionen angeben:
       + `cpus`— <a name="system-resource-limits-cpu-definition-this"></a> Die maximale CPU-Zeit, die die Prozesse dieser Komponente auf dem Kerngerät verwenden können. Die gesamte CPU-Zeit eines Core-Geräts entspricht der Anzahl der CPU-Kerne des Geräts. Auf einem Kerngerät mit 4 CPU-Kernen können Sie diesen Wert beispielsweise auf festlegen, `2` um die Prozesse dieser Komponente auf 50 Prozent der einzelnen CPU-Kerne zu beschränken. Auf einem Gerät mit einem CPU-Kern können Sie diesen Wert auf festlegen, `0.25` um die CPU-Auslastung dieser Komponente auf 25 Prozent zu beschränken. Wenn Sie diesen Wert auf eine Zahl setzen, die größer als die Anzahl der CPU-Kerne ist, begrenzt die AWS IoT Greengrass Core-Software die CPU-Auslastung der Komponente nicht.  
       + `memory`— <a name="system-resource-limits-memory-definition-this"></a> Die maximale Menge an RAM (in Kilobyte), die die Prozesse dieser Komponente auf dem Kerngerät verwenden können.  

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

      
**Example Beispiel für ein Update der Grundkonfiguration**  

   Das folgende `components` Beispielobjekt gibt an, dass eine Komponente bereitgestellt werden soll`com.example.PythonRuntime`, die einen Konfigurationsparameter mit dem Namen erwartet`pythonVersion`.

   ```
   {
     "targetArn": "{{targetArn}}",
     "deploymentName": "{{deploymentName}}",
     "components": {
       "com.example.PythonRuntime": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "merge": "{\"pythonVersion\":\"3.7\"}"
         }
       }
     }
   }
   ```  
**Example Beispiel für ein Konfigurationsupdate mit Reset- und Merge-Updates**  

   Stellen Sie sich ein Beispiel für eine industrielle Dashboard-Komponente vor`com.example.IndustrialDashboard`, die die folgende Standardkonfiguration hat.

   ```
   {
     "name": null,
     "mode": "REQUEST",
     "network": {
       "useHttps": true,
       "port": {
         "http": 80,
         "https": 443
       },
     },
     "tags": []
   }
   ```

   Das folgende Konfigurationsupdate enthält die folgenden Anweisungen:

   1. Setzen Sie die HTTPS-Einstellung auf ihren Standardwert zurück (`true`).

   1. Setzt die Liste der industriellen Tags auf eine leere Liste zurück.

   1. Führen Sie eine Liste mit industriellen Kennzeichnungen zusammen, die Temperatur- und Druckdatenströme für zwei Kessel identifizieren.

   ```
   {
     "reset": [
       "/network/useHttps",
       "/tags"
     ],
     "merge": {
       "tags": [
         "/boiler/1/temperature",
         "/boiler/1/pressure",
         "/boiler/2/temperature",
         "/boiler/2/pressure"
       ]
     }
   }
   ```

   Das folgende `components` Beispielobjekt gibt an, wie diese industrielle Dashboard-Komponente und das Konfigurationsupdate bereitgestellt werden sollen.

   ```
   {
     "targetArn": "{{targetArn}}",
     "deploymentName": "{{deploymentName}}",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     }
   }
   ```

1. (Optional) Definieren Sie Bereitstellungsrichtlinien für die Bereitstellung. Sie können konfigurieren, wann Kerngeräte eine Bereitstellung sicher anwenden können oder was zu tun ist, wenn ein Kerngerät die Bereitstellung nicht anwenden kann. Fügen Sie dazu ein `deploymentPolicies` Objekt hinzu`deployment.json`, und führen Sie dann einen der folgenden Schritte aus:

   1. (Optional) Geben Sie die Richtlinie für das Komponenten-Update an (`componentUpdatePolicy`). Diese Richtlinie definiert, ob die Bereitstellung es Komponenten ermöglicht, ein Update aufzuschieben, bis sie zur Aktualisierung bereit sind. Beispielsweise müssen Komponenten möglicherweise Ressourcen bereinigen oder wichtige Aktionen abschließen, bevor sie neu gestartet werden können, um ein Update zu installieren. Diese Richtlinie legt auch fest, wie viel Zeit Komponenten haben, um auf eine Aktualisierungsbenachrichtigung zu reagieren.

      Diese Richtlinie ist ein Objekt mit den folgenden Parametern:
      + `action`— (Optional) Ob Komponenten benachrichtigt und darauf gewartet werden sollen, dass sie melden, wenn sie zur Aktualisierung bereit sind. Wählen Sie aus den folgenden Optionen aus:
        + `NOTIFY_COMPONENTS` – Die Bereitstellung benachrichtigt jede Komponente, bevor diese Komponente gestoppt und aktualisiert wird. Komponenten können den [SubscribeToComponentUpdates](ipc-component-lifecycle.md#ipc-operation-subscribetocomponentupdates) IPC-Vorgang verwenden, um diese Benachrichtigungen zu empfangen.
        + `SKIP_NOTIFY_COMPONENTS` – Die Bereitstellung benachrichtigt die Komponenten nicht und wartet nicht darauf, dass sie sicher aktualisiert werden können.

        Standardeinstellung: `NOTIFY_COMPONENTS`.
      + `timeoutInSeconds`Die Zeit in Sekunden, die jede Komponente benötigt, um auf eine Aktualisierungsbenachrichtigung im Rahmen des [DeferComponentUpdate](ipc-component-lifecycle.md#ipc-operation-defercomponentupdate) IPC-Vorgangs zu reagieren. Wenn die Komponente innerhalb dieser Zeit nicht reagiert, wird die Bereitstellung auf dem Kerngerät fortgesetzt.

        Standard ist 60 Sekunde.

   1. (Optional) Geben Sie die Richtlinie zur Konfigurationsüberprüfung an (`configurationValidationPolicy`). Diese Richtlinie definiert, wie lange jede Komponente Zeit hat, um ein Konfigurationsupdate aus einer Bereitstellung zu validieren. Komponenten können den [SubscribeToValidateConfigurationUpdates](ipc-component-configuration.md#ipc-operation-subscribetovalidateconfigurationupdates) IPC-Vorgang verwenden, um Benachrichtigungen für ihre eigenen Konfigurationsupdates zu abonnieren. Anschließend können die Komponenten den [SendConfigurationValidityReport](ipc-component-configuration.md#ipc-operation-sendconfigurationvalidityreport) IPC-Vorgang verwenden, um der AWS IoT Greengrass Core-Software mitzuteilen, ob das Konfigurationsupdate gültig ist. Wenn das Konfigurationsupdate nicht gültig ist, schlägt die Bereitstellung fehl.

      Diese Richtlinie ist ein Objekt mit dem folgenden Parameter:
      + `timeoutInSeconds`(Optional) Die Zeit in Sekunden, die jede Komponente benötigt, um ein Konfigurationsupdate zu validieren. Wenn die Komponente innerhalb dieser Zeit nicht reagiert, wird die Bereitstellung auf dem Kerngerät fortgesetzt.

        Der Standardwert ist 30 Sekunden.

   1. (Optional) Geben Sie die Richtlinie zur Fehlerbehandlung an (`failureHandlingPolicy`). Bei dieser Richtlinie handelt es sich um eine Zeichenfolge, die definiert, ob Geräte zurückgesetzt werden sollen, falls die Bereitstellung fehlschlägt. Wählen Sie aus den folgenden Optionen aus:
      + `ROLLBACK`— Wenn die Bereitstellung auf einem Kerngerät fehlschlägt, setzt die AWS IoT Greengrass Core-Software das Kerngerät auf die vorherige Konfiguration zurück.
      + `DO_NOTHING`— Schlägt die Bereitstellung auf einem Kerngerät fehl, behält die AWS IoT Greengrass Core-Software die neue Konfiguration bei. Dies kann zu defekten Komponenten führen, wenn die neue Konfiguration nicht gültig ist.

      Standardeinstellung: `ROLLBACK`.
**Wichtig**  
Die AWS IoT Greengrass Core-Software ignoriert die Richtlinie zur Fehlerbehandlung für Bootstrap-Bereitstellungen. Eine Bootstrap-Bereitstellung aktualisiert die Greengrass Nucleus-Version oder beinhaltet eine Komponente mit einem Bootstrap-Lebenszyklusschritt. [](component-recipe-reference.md#bootstrap-lifecycle-definition) Wenn eine Bootstrap-Bereitstellung fehlschlägt, setzt die AWS IoT Greengrass Core-Software das Core-Gerät auf die vorherige Konfiguration zurück. Das Rollback erfolgt auch dann, wenn Sie die Richtlinie zur Fehlerbehandlung auf festlegen. `DO_NOTHING` Dieses Verhalten sorgt dafür, dass das Kerngerät nach einem Neustart in einem funktionierenden Zustand bleibt.

   Ihre Bereitstellung in `deployment.json` könnte dem folgenden Beispiel ähneln:

   ```
   {
     "targetArn": "{{targetArn}}",
     "deploymentName": "{{deploymentName}}",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     },
     "deploymentPolicies": {
       "componentUpdatePolicy": {
         "action": "NOTIFY_COMPONENTS",
         "timeoutInSeconds": 30
       },
       "configurationValidationPolicy": {
         "timeoutInSeconds": 60
       },
       "failureHandlingPolicy": "ROLLBACK"
     }
   }
   ```

1. (Optional) Definieren Sie, wie die Bereitstellung beendet, eingeführt oder das Timeout überschritten wird. AWS IoT Greengrass verwendet AWS IoT Core Jobs, um Bereitstellungen an zentrale Geräte zu senden, sodass diese Optionen mit den Konfigurationsoptionen für AWS IoT Core Jobs identisch sind. Weitere Informationen finden Sie im [ Entwicklerhandbuch unter Job-Rollout und Abbruch ](https://docs.aws.amazon.com/iot/latest/developerguide/job-rollout-abort.html) der *AWS IoT Konfiguration. *

   Um die Joboptionen zu definieren, fügen Sie ein `iotJobConfiguration` Objekt zu hinzu. `deployment.json` Definieren Sie dann die zu konfigurierenden Optionen.

   Ihre Bereitstellung in `deployment.json` könnte dem folgenden Beispiel ähneln:

   ```
   {
     "targetArn": "{{targetArn}}",
     "deploymentName": "{{deploymentName}}",
     "components": {
       "com.example.IndustrialDashboard": {
         "componentVersion": "1.0.0",
         "configurationUpdate": {
           "reset": [
             "/network/useHttps",
             "/tags"
           ],
           "merge": "{\"tags\":[\"/boiler/1/temperature\",\"/boiler/1/pressure\",\"/boiler/2/temperature\",\"/boiler/2/pressure\"]}"
         }
       }
     },
     "deploymentPolicies": {
       "componentUpdatePolicy": {
         "action": "NOTIFY_COMPONENTS",
         "timeoutInSeconds": 30
       },
       "configurationValidationPolicy": {
         "timeoutInSeconds": 60
       },
       "failureHandlingPolicy": "ROLLBACK"
     },
     "iotJobConfiguration": {
       "abortConfig": {
         "criteriaList": [
           {
             "action": "CANCEL",
             "failureType": "ALL",
             "minNumberOfExecutedThings": 100,
             "thresholdPercentage": 5
           }
         ]
       },
       "jobExecutionsRolloutConfig": {
         "exponentialRate": {
           "baseRatePerMinute": 5,
           "incrementFactor": 2,
           "rateIncreaseCriteria": {
             "numberOfNotifiedThings": 10,
             "numberOfSucceededThings": 5
           }
         },
         "maximumPerMinute": 50
       },
       "timeoutConfig":  {
         "inProgressTimeoutInMinutes": 5
       }
     }
   }
   ```

1. (Optional) Fügen Sie Tags (`tags`) für die Bereitstellung hinzu. Weitere Informationen finden Sie unter [Kennzeichnen Sie Ihre AWS IoT Greengrass Version 2 Ressourcen](tag-resources.md).

1. Führen Sie den folgenden Befehl aus, um die Bereitstellung von zu erstellen`deployment.json`.

   ```
   aws greengrassv2 create-deployment --cli-input-json file://deployment.json
   ```

   <a name="check-new-deployment-status"></a>Die Antwort enthält einen`deploymentId`, der diese Bereitstellung identifiziert. Sie können die Bereitstellungs-ID verwenden, um den Status der Bereitstellung zu überprüfen. Weitere Informationen finden Sie unter [Überprüfen Sie den Bereitstellungsstatus](check-deployment-status.md#check-cloud-deployment-status).