View a markdown version of this page

Erstellen von Bereitstellungen - 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.

Erstellen von Bereitstellungen

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 unter Statische 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 unterBereitstellungen überarbeiten.

Warnung

Durch den CreateDeployment 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 diesem Vorgang zunächst, ob für das Ziel der Bereitstellung bereits eine Bereitstellung vorhanden ist. Verwenden Sie dann den GetDeployment 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. targetArnErsetzen 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" }
  2. Prüfen Sie, ob das Bereitstellungsziel bereits über eine Bereitstellung verfügt, die Sie überarbeiten möchten. Gehen Sie wie folgt vor:

    1. Führen Sie den folgenden Befehl aus, um die Bereitstellungen für das Bereitstellungsziel aufzulisten. targetArnErsetzen 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 wechselnSchritt 3. Andernfalls kopieren Sie das deploymentId aus der Antwort, um es im nächsten Schritt zu verwenden.

      Anmerkung

      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.

    2. Führen Sie den folgenden Befehl aus, um die Details der Bereitstellung abzurufen. Zu diesen Details gehören Metadaten, Komponenten und Auftragskonfiguration. deploymentIdErsetzen Sie durch die ID aus dem vorherigen Schritt.

      aws greengrassv2 get-deployment --deployment-id deploymentId

      Die Antwort enthält die Details der Bereitstellung.

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

  3. (Optional) Definieren Sie einen Namen für die Bereitstellung. deploymentNameErsetzen Sie ihn durch den Namen der Bereitstellung.

    { "targetArn": "targetArn", "deploymentName": "deploymentName" }
  4. 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. 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.

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

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

      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.

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

        Diese Funktion ist für Version 2.5.0 und höher der Greengrass Nucleus-Komponente verfügbar.

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

        Sie können eine der folgenden Optionen angeben:

        • cpus 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 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. AWS IoT Greengrass unterstützt diese Funktion derzeit nicht auf Windows-Core-Geräten.

     

    Beispiel Beispiel für ein Update der Grundkonfiguration

    Das folgende components Beispielobjekt gibt an, dass eine Komponente bereitgestellt werden sollcom.example.PythonRuntime, die einen Konfigurationsparameter mit dem Namen erwartetpythonVersion.

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

    Stellen Sie sich ein Beispiel für eine industrielle Dashboard-Komponente vorcom.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).

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

    3. 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\"]}" } } } }
  5. (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 hinzudeployment.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-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.

      • timeoutInSecondsDie Zeit in Sekunden, die jede Komponente benötigt, um auf eine Aktualisierungsbenachrichtigung im Rahmen des 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.

    2. (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-Vorgang verwenden, um Benachrichtigungen für ihre eigenen Konfigurationsupdates zu abonnieren. Anschließend können die Komponenten den 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.

    3. (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. 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" } }
  6. (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 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 } } }
  7. (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.

  8. Führen Sie den folgenden Befehl aus, um die Bereitstellung von zu erstellendeployment.json.

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

    Die Antwort enthält einendeploymentId, 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.