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 Objekt oder eine Objektgruppe abzielt.

Wenn Sie eine Bereitstellung erstellen, konfigurieren Sie die bereitzustellenden Softwarekomponenten und wie der Bereitstellungsauftrag auf Zielgeräten bereitgestellt wird. Sie können die Bereitstellung in der JSON-Datei definieren, die Sie dem bereitstellenAWS CLI.

Das Bereitstellungsziel bestimmt die Geräte, auf denen Sie Ihre Komponenten ausführen möchten. Um auf einem Core-Gerät bereitzustellen, geben Sie ein Objekt an. Um auf mehreren Core-Geräten bereitzustellen, geben Sie eine Objektgruppe an, die diese Geräte enthält. Weitere Informationen zum Konfigurieren von Objektgruppen finden Sie unter Statische Objektgruppen und Dynamische Objektgruppen im AWS IoT -Entwicklerhandbuch.

Führen Sie die Schritte in diesem Abschnitt aus, um eine Bereitstellung für ein Ziel zu erstellen. Weitere Informationen zum Aktualisieren der Softwarekomponenten auf einem Ziel mit einer Bereitstellung finden Sie unter Überarbeiten von Bereitstellungen.

Warnung

Die -CreateDeploymentOperation kann Komponenten von -Core-Geräten deinstallieren. Wenn eine Komponente in der vorherigen Bereitstellung vorhanden ist und nicht in der neuen Bereitstellung, deinstalliert das Core-Gerät diese Komponente. Um die Deinstallation von Komponenten zu vermeiden, verwenden Sie zunächst die -ListDeploymentsOperation, um zu überprüfen, ob das Ziel für die Bereitstellung bereits über eine vorhandene Bereitstellung verfügt. Verwenden Sie dann die -GetDeploymentOperation, um mit dieser vorhandenen Bereitstellung zu beginnen, wenn Sie eine neue Bereitstellung erstellen.

So erstellen Sie eine Bereitstellung (AWS CLI)
  1. Erstellen Sie eine Datei mit dem Namen deployment.jsonund kopieren Sie dann das folgende JSON-Objekt in die Datei . Ersetzen Sie targetArn durch den ARN des AWS IoT Objekts oder der Objektgruppe, das/die für die Bereitstellung bestimmt werden soll. Objekt- und Objektgruppen-ARNs 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. Überprüfen Sie, ob das Bereitstellungsziel über eine vorhandene 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. Ersetzen Sie targetArn durch den ARN des AWS IoT Zielobjekts oder der Objektgruppe.

      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, verfügt das Ziel über keine vorhandene Bereitstellung, und Sie können mit fortfahrenSchritt 3. Andernfalls kopieren Sie die deploymentId aus der Antwort, um sie im nächsten Schritt zu verwenden.

      Anmerkung

      Sie können auch eine andere Bereitstellung als die neueste Revision 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. Ersetzen Sie deploymentId 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 Tags der Bereitstellung.

  3. (Optional) Definieren Sie einen Namen für die Bereitstellung. Ersetzen Sie deploymentName 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 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 Komponentenversion, die bereitgestellt werden soll.

    • configurationUpdate – Das Konfigurationsupdate, das bereitgestellt werden soll. Das Update ist ein Patch-Vorgang, der die vorhandene Konfiguration der Komponente auf jedem Zielgerät oder die Standardkonfiguration der Komponente ändert, wenn sie nicht auf dem Zielgerät vorhanden ist. Sie können die folgenden Konfigurationsaktualisierungen angeben:

      • Updates zurücksetzen (reset) – (Optional) Eine Liste von JSON-Zeigern, die die Konfigurationswerte definieren, die auf dem Zielgerät auf ihre Standardwerte zurückgesetzt werden sollen. In der AWS IoT Greengrass-Core-Software werden Reset-Updates vor Merge-Updates angewendet. Weitere Informationen finden Sie unter Updates zurücksetzen.

      • Aktualisierungen zusammenführen (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 Core-Gerät auszuführen. Wenn Sie einen Parameter im -runWithObjekt weglassen, verwendet die AWS IoT Greengrass Core-Software die Standardwerte, die Sie für die Greengrass-Kernkomponente konfigurieren.

      Sie können eine 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-Core-Gerä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 zum Ausführen 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-Instance des LocalSystem Kontos gespeichert werden. Weitere Informationen finden Sie unter Konfigurieren Sie den Benutzer, der die Komponenten ausführt.

        Diese Funktion ist für v2.5.0 und höher der Greengrass-Kernkomponente verfügbar.

      • systemResourceLimits – Die Systemressourcenlimits, die auf die Prozesse dieser Komponente angewendet werden sollen. Sie können Systemressourcenlimits 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:

        • cpusDie maximale CPU-Zeit, die die Prozesse dieser Komponente auf dem Core-Gerät verwenden können. Die gesamte CPU-Zeit eines Core-Geräts entspricht der Anzahl der CPU-Kerne des Geräts. Auf einem Core-Gerät mit 4 CPU-Kernen können Sie diesen Wert beispielsweise auf setzen, 2 um die Prozesse dieser Komponente auf eine Auslastung von 50 Prozent jedes CPU-Kerns zu beschränken. Auf einem Gerät mit 1 CPU-Kern können Sie diesen Wert auf setzen, 0.25 um die Prozesse dieser Komponente auf eine CPU-Auslastung von 25 Prozent zu beschränken. Wenn Sie diesen Wert auf eine Zahl festlegen, die größer als die Anzahl der CPU-Kerne ist, schränkt die AWS IoT Greengrass Core-Software die CPU-Auslastung der Komponente nicht ein.

        • memoryDie maximale Menge an RAM (in Kilobyte), die die Prozesse dieser Komponente auf dem Core-Gerät verwenden können.

        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.

     

    Beispiel für ein grundlegendes Konfigurationsupdate

    Das folgende components Beispielobjekt gibt an, eine Komponente, com.example.PythonRuntime, bereitzustellen, die einen Konfigurationsparameter namens erwartetpythonVersion.

    { "targetArn": "targetArn", "deploymentName": "deploymentName", "components": { "com.example.PythonRuntime": { "componentVersion": "1.0.0", "configurationUpdate": { "merge": "{\"pythonVersion\":\"3.7\"}" } } } }
    Beispiel für eine Konfigurationsaktualisierung mit Reset- und Zusammenführungsaktualisierungen

    Betrachten Sie ein Beispiel für eine Komponente des industriellen Dashboards, com.example.IndustrialDashboard, die die folgende Standardkonfiguration hat.

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

    Das folgende Konfigurationsupdate gibt die folgenden Anweisungen an:

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

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

    3. Führen Sie eine Liste von industriellen Tags zusammen, die Temperatur- und Druckdatenströme für zwei Boiler 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, diese Komponente und Konfiguration des industriellen Dashboards bereitzustellen.

    { "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 -Core-Geräte eine Bereitstellung sicher anwenden können oder was zu tun ist, wenn ein -Core-Gerät die Bereitstellung nicht anwenden kann. Fügen Sie dazu ein deploymentPolicies Objekt zu hinzu deployment.jsonund führen Sie dann einen der folgenden Schritte aus:

    1. (Optional) Geben Sie die Richtlinie zur Komponentenaktualisierung an (componentUpdatePolicy). Diese Richtlinie definiert, ob die Bereitstellung es Komponenten ermöglicht, ein Update aufschieben, bis sie zum Aktualisieren bereit sind. Komponenten müssen beispielsweise möglicherweise Ressourcen bereinigen oder kritische Aktionen abschließen, bevor sie neu gestartet werden können, um ein Update anzuwenden. Diese Richtlinie definiert auch die Zeit, die Komponenten haben, um auf eine Aktualisierungsbenachrichtigung zu reagieren.

      Diese Richtlinie ist ein Objekt mit den folgenden Parametern:

      • action – (Optional) Gibt an, ob Komponenten benachrichtigt werden sollen und darauf gewartet werden soll, dass sie gemeldet werden, wenn sie für die 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 die SubscribeToComponentUpdates IPC-Operation verwenden, um diese Benachrichtigungen zu erhalten.

        • 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 mit der DeferComponentUpdate IPC-Operation auf eine Aktualisierungsbenachrichtigung zu reagieren. Wenn die Komponente nicht innerhalb dieser Zeit reagiert, wird die Bereitstellung auf dem Core-Gerät fortgesetzt.

        Der Standardwert ist 60 Sekunden.

    2. (Optional) Geben Sie die Richtlinie zur Konfigurationsvalidierung an (configurationValidationPolicy). Diese Richtlinie definiert, wie lange jede Komponente hat, um eine Konfigurationsaktualisierung aus einer Bereitstellung zu validieren. Komponenten können die SubscribeToValidateConfigurationUpdates IPC-Operation verwenden, um Benachrichtigungen für ihre eigenen Konfigurationsaktualisierungen zu abonnieren. Anschließend können Komponenten die SendConfigurationValidityReport IPC-Operation 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 zum Validieren einer Konfigurationsaktualisierung benötigt. Wenn die Komponente nicht innerhalb dieser Zeit reagiert, wird die Bereitstellung auf dem Core-Gerät fortgesetzt.

        Der Standardwert ist 30 Sekunden.

    3. (Optional) Geben Sie die Richtlinie zur Fehlerbehandlung an (failureHandlingPolicy). Diese Richtlinie ist eine Zeichenfolge, die definiert, ob Geräte zurückgesetzt werden sollen, wenn die Bereitstellung fehlschlägt. Wählen Sie aus den folgenden Optionen aus:

      • ROLLBACK – Wenn die Bereitstellung auf einem Core-Gerät fehlschlägt, setzt die AWS IoT Greengrass Core-Software dieses Core-Gerät auf seine vorherige Konfiguration zurück.

      • DO_NOTHING – Wenn die Bereitstellung auf einem Core-Gerät fehlschlägt, behält die AWS IoT Greengrass Core-Software die neue Konfiguration bei. Dies kann zu fehlerhaften Komponenten führen, wenn die neue Konfiguration nicht gültig ist.

      Standardeinstellung: ROLLBACK.

    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 angehalten wird, ein Rollout durchführt oder eine Zeitüberschreitung auftritt. AWS IoT Greengrass verwendet AWS IoT Core Aufträge, um Bereitstellungen an Core-Geräte zu senden, sodass diese Optionen mit den Konfigurationsoptionen für AWS IoT Core Aufträge identisch sind. Weitere Informationen finden Sie unter Auftrags-Rollout und Abbruchkonfiguration im AWS IoT Entwicklerhandbuch für .

    Um die Auftragsoptionen zu definieren, fügen Sie ein iotJobConfiguration Objekt zu hinzudeployment.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 Markieren Ihrer AWS IoT Greengrass Version 2-Ressourcen mit Tags.

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

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

    Die Antwort enthält eine deploymentId, die diese Bereitstellung identifiziert. Sie können die Bereitstellungs-ID verwenden, um den Status der Bereitstellung zu überprüfen. Weitere Informationen finden Sie unter Prüfen des Bereitstellungsstatus.