Erstellen von Sammelbereitstellungen für Gruppen - AWS IoT Greengrass

AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.

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 Sammelbereitstellungen für Gruppen

Sie können einfache API-Aufrufe verwenden, um eine große Anzahl von Greengrass-Gruppen auf einmal bereitzustellen. Diese Bereitstellungen werden mit einer adaptiven Rate ausgelöst, die eine feste Obergrenze hat.

Dieses Tutorial beschreibt, wie Sie mit dem AWS CLI eine Gruppen-Sammelbereitstellung in AWS IoT Greengrass erstellen und überwachen können. Das Beispiel für die Sammelbereitstellung in diesem Tutorial enthält mehrere Gruppen. Sie können das Beispiel verwenden, um in Ihrer Implementierung so viele Gruppen hinzufügen, wie Sie benötigen.

Das Tutorial enthält die folgenden allgemeinen Schritte:

Voraussetzungen

Zum Durchführen dieses Tutorials benötigen Sie Folgendes:

  • Eine oder mehrere bereitstellbare Greengrass-Gruppen. Weitere Informationen zum Erstellen von AWS IoT Greengrass-Gruppen und -Kernen finden Sie unter Erste Schritte mit AWS IoT Greengrass.

  • Das AWS CLI ist auf Ihrem Computer installiert und konfiguriert. Weitere Informationen finden Sie im AWS CLI-Benutzerhandbuch.

  • Ein S3-Bucket, der in der gleichen erstellt wurdeAWS-RegionalsAWS IoT Greengrassaus. Weitere Informationen finden Sie unterErstellen und Konfigurieren eines S3-BucketsimAmazon Simple Storage Service — Benutzerhandbuchaus.

    Anmerkung

    Derzeit werden SSE KMS-aktivierte Buckets nicht unterstützt.

Schritt 1: Erstellen und Hochladen der Eingabedatei für die Sammelbereitstellung

In diesem Schritt erstellen Sie eine Eingabedatei für die Bereitstellung und laden sie in Ihren Amazon S3 S3-Bucket hoch. Diese Datei ist eine serialisierte, zeilengetrennte JSON-Datei, die Informationen über jede Gruppe in Ihrer Sammelbereitstellung enthält. AWS IoT Greengrass verwendet diese Informationen, um jede Gruppe in Ihrem Namen bereitzustellen, wenn Sie Ihre Sammelbereitstellung initialisieren.

  1. Führen Sie den folgenden Befehl aus, um die groupId für jede Gruppe zu erhalten, die Sie bereitstellen möchten. Sie geben die groupId in Ihrer Eingabedatei für die Sammelbereitstellung ein, damit AWS IoT Greengrass jede bereitzustellende Gruppe identifizieren kann.

    Anmerkung

    Sie finden diese Werte auch inAWS IoTconsole. Die Gruppen-ID wird auf der Seite Einstellungen der Gruppe angezeigt. Gruppenversions-IDs werden in der Gruppe angezeigtBereitstellungen-Registerkarte.

    aws greengrass list-groups

    Die Antwort enthält Informationen über jede einzelne Gruppe in Ihrem AWS IoT Greengrass-Konto:

    { "Groups": [ { "Name": "string", "Id": "string", "Arn": "string", "LastUpdatedTimestamp": "string", "CreationTimestamp": "string", "LatestVersion": "string", "LatestVersionArn": "string" } ], "NextToken": "string" }

    Führen Sie den folgenden Befehl aus, um die groupVersionId jeder Gruppe zu erhalten, die Sie bereitstellen möchten.

    list-group-versions --group-id groupId

    Die Antwort enthält Informationen über alle Versionen in der Gruppe. Notieren Sie sich denVersion-Gruppenversion, die Sie verwenden möchten.

    { "Versions": [ { "Arn": "string", "Id": "string", "Version": "string", "CreationTimestamp": "string" } ], "NextToken": "string" }
  2. Erstellen Sie in Ihrem Computerterminal oder Editor Ihrer Wahl eine Datei,MyBulkDeploymentInputFile, aus dem folgenden Beispiel. Diese Datei enthält Informationen über jede AWS IoT Greengrass-Gruppe, die in eine Sammelbereitstellung einbezogen werden soll. Obwohl in diesem Beispiel mehrere Gruppen definiert sind, kann Ihre Datei für dieses Tutorial nur eine enthalten.

    Anmerkung

    Die Größe dieser Datei muss kleiner als 100 MB sein.

    {"GroupId":"groupId1", "GroupVersionId":"groupVersionId1", "DeploymentType":"NewDeployment"} {"GroupId":"groupId2", "GroupVersionId":"groupVersionId2", "DeploymentType":"NewDeployment"} {"GroupId":"groupId3", "GroupVersionId":"groupVersionId3", "DeploymentType":"NewDeployment"} ...

    Jeder Datensatz (oder Zeile) enthält ein Gruppenobjekt. Jedes Gruppenobjekt enthält seine entsprechende GroupId und GroupVersionId und einen DeploymentType. Derzeit unterstützt AWS IoT Greengrass nur NewDeployment Sammelbereitstellungstypen.

    Speichern und schließen Sie Ihre Datei. Notieren Sie sich den Speicherort der Datei.

  3. Verwenden Sie den folgenden Befehl in Ihrem Terminal, um Ihre Eingabedatei in Ihren Amazon S3 S3-Bucket hochzuladen. Ersetzen Sie den Dateipfad durch den Speicherort und den Namen Ihrer Datei. Weitere Informationen finden Sie unter Hinzufügen eines Objekts zu einem Bucket.

    aws s3 cp path/MyBulkDeploymentInputFile s3://my-bucket/

Schritt 2: Erstellen und Konfigurieren einer IAM-Ausführungsrolle

In diesem Schritt verwenden Sie die IAM-Konsole, um eine eigenständige Ausführungsrolle zu erstellen. Sie stellen dann eine Vertrauensbeziehung zwischen der Rolle und herAWS IoT Greengrassund stellen Sie sicher, dass Ihr IAM-BenutzerPassRole-Berechtigungen für Ihre Ausführungsrolle. Dies ermöglicht es AWS IoT Greengrass, Ihre Ausführungsrolle zu übernehmen und die Bereitstellungen in Ihrem Namen zu erstellen.

  1. Verwenden Sie die folgende Richtlinie, um eine Ausführungsrolle zu erstellen. Dieses Richtliniendokument ermöglicht es AWS IoT Greengrass, auf Ihre Eingabedatei für die Sammelbereitstellung zuzugreifen, wenn es jede Bereitstellung in Ihrem Namen erstellt.

    Weitere Informationen zum Erstellen einer IAM-Rolle und zum Delegieren von Berechtigungen finden Sie unter Erstellen von IAM-Rollen.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "greengrass:CreateDeployment", "Resource": [ "arn:aws:greengrass:region:accountId:/greengrass/groups/groupId1", "arn:aws:greengrass:region:accountId:/greengrass/groups/groupId2", "arn:aws:greengrass:region:accountId:/greengrass/groups/groupId3", ... ] } ] }
    Anmerkung

    Diese Richtlinie muss für jede Gruppe oder Gruppenversion in Ihrer Eingabedatei eine Ressource für die Sammelbereitstellung enthalten, die von AWS IoT Greengrass bereitzustellen ist. Um den Zugriff auf alle Gruppen zu ermöglichen, geben Sie für Resource ein Sternchen an:

    "Resource": ["*"]
  2. Ändern Sie die Vertrauensbeziehung für Ihre Ausführungsrolle, um AWS IoT Greengrass einzuschließen. Dadurch kann AWS IoT Greengrass Ihre Ausführungsrolle und die damit verbundenen Berechtigungen verwenden. Weitere Informationen finden Sie unter Bearbeiten der Vertrauensstellung für eine vorhandene Rolle.

    Wir empfehlen Ihnen, auch dieaws:SourceArnundaws:SourceAccountGlobale -Bedingungskontextschlüssel in Ihrer Vertrauensrichtlinie, um zu verhindernconfused StellvertreterSicherheitsproblem. Die Bedingungskontextschlüssel schränken den Zugriff so ein, dass nur Anforderungen zugelassen werden, die vom angegebenen Konto und Greengrass-Arbeitsbereich kommen. Weitere Hinweise zu dem „verwirrten Stellvertreter“ finden Sie unterVermeidung des Problems des verwirrten Stellvertreters (dienstübergreifend)aus.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "greengrass.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:greengrass:region:account-id:*" } } } ] }
  3. IAM gebenPassRole-Berechtigungen für Ihre Ausführungsrolle für Ihren IAM-Benutzer. Dieser IAM-Benutzer ist derjenige, der für die Einleitung der Sammelbereitstellung verwendet wird.PassRole-Berechtigungen ermöglichen es Ihrem IAM-Benutzer, Ihre Ausführungsrolle an zu übergebenAWS IoT Greengrasszur Verwendung. Weitere Informationen finden Sie unter Erteilen von Benutzerberechtigungen zur Übergabe einer Rolle an einen AWS-Service.

    Verwenden Sie das folgende Beispiel, um die Ihrer Ausführungsrolle zugeordnete IAM-Richtlinie zu aktualisieren. Ändern Sie dieses Beispiel, falls erforderlich.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1508193814000", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::account-id:user/executionRoleArn" ] "Condition": { "StringEquals": { "iam:PassedToService": "greengrass.amazonaws.com" } } } ] }

Schritt 3: Ermöglichen des Zugriff auf Ihren S3-Bucket für Ihre Ausführungsrolle

Um Ihre Sammelbereitstellung zu starten, muss Ihre Ausführungsrolle in der Lage sein, Ihre Eingabedatei für die Sammelbereitstellung aus Ihrem Amazon S3 S3-Bucket zu lesen. Fügen Sie die folgende Beispielrichtlinie Ihrem Amazon S3 S3-Bucket hinzu, damit seineGetObject-Berechtigungen sind für Ihre Ausführungsrolle zugänglich.

Weitere Informationen finden Sie unter Wie füge ich eine S3-Bucket-Richtlinie hinzu?

{ "Version": "2008-10-17", "Id": "examplePolicy", "Statement": [ { "Sid": "Stmt1535408982966", "Effect": "Allow", "Principal": { "AWS": [ "executionRoleArn" ] }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/objectKey" } ] }

Sie können den folgenden Befehl in Ihrem Terminal verwenden, um die Richtlinien Ihres Buckets zu überprüfen:

aws s3api get-bucket-policy --bucket my-bucket
Anmerkung

Sie können Ihre Ausführungsrolle direkt ändern, um ihr die -Berechtigungen Ihres Amazon S3 S3-Buckets zu gewährenGetObject-Berechtigungen stattdessen. Fügen Sie dazu Ihrer Ausführungsrolle die folgende Beispielrichtlinie an.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/objectKey" } ] }

Schritt 4: Bereitstellen der Gruppen

In diesem Schritt starten Sie eine Sammelbereitstellung für alle Gruppenversionen, die in Ihrer Eingabedatei für die Sammelbereitstellung konfiguriert sind. Die Bereitstellungsaktion für jede Ihrer Gruppenversionen ist vom Typ NewDeploymentType.

Anmerkung

Sie können StartBulkDeployment nicht aufrufen, während eine andere Sammelbereitstellung aus demselben Konto noch läuft. Die Anforderung wurde abgelehnt.

  1. Verwenden Sie den folgenden Befehl, um die Sammelbereitstellung zu starten.

    Wir empfehlen, dass Sie ein X-Amzn-Client-Token-Token in jeder StartBulkDeployment Anforderung einschließen. Diese Anforderungen sind in Bezug auf das Token und die Anfrageparameter idempotent. Dieses Token kann eine beliebige eindeutige Zeichenfolge, bei der die Groß- und Kleinschreibung zu beachten ist, mit bis zu 64 ASCII-Zeichen sein.

    aws greengrass start-bulk-deployment --cli-input-json "{ "InputFileUri":"URI of file in S3 bucket", "ExecutionRoleArn":"ARN of execution role", "AmznClientToken":"your Amazon client token" }"

    Der Befehl sollte zu einem erfolgreichen Statuscode 200 führen, zusammen mit der folgenden Antwort:

    { "bulkDeploymentId": UUID }

    Notieren Sie sich die ID der Sammelbereitstellung. Sie kann verwendet werden, um den Status Ihrer Sammelbereitstellung zu überprüfen.

    Anmerkung

    Obwohl Sammelbereitstellungsoperationen derzeit nicht unterstützt werden, können Sie Amazon erstellen EventBridge -Ereignisregeln, um Benachrichtigungen über Änderungen des Bereitstellungsstatus für einzelne Gruppen zu erhalten. Weitere Informationen finden Sie unter Abrufen von Bereitstellungsbenachrichtigungen.

  2. Verwenden Sie den folgenden Befehl, um den Status Ihrer Sammelbereitstellung zu überprüfen:

    aws greengrass get-bulk-deployment-status --bulk-deployment-id 1234567

    Der Befehl sollte einen erfolgreichen Statuscode 200 zurückgeben, zusätzlich zu einer JSON-Nutzlast aus Informationen:

    { "BulkDeploymentStatus": Running, "Statistics": { "RecordsProcessed": integer, "InvalidInputRecords": integer, "RetryAttempts": integer }, "CreatedAt": "string", "ErrorMessage": "string", "ErrorDetails": [ { "DetailedErrorCode": "string", "DetailedErrorMessage": "string" } ] }

    BulkDeploymentStatus enthält den aktuellen Status der Sammelausführung. Die Ausführung kann einen von sechs verschiedenen Statusarten haben:

    • Initializingaus. Die Anforderung der Sammelbereitstellung ist eingegangen, und die Ausführung bereitet sich auf den Start vor.

    • Runningaus. Die Sammelbereitstellung wurde gestartet.

    • Completedaus. Die Ausführung der Sammelbereitstellung hat die Verarbeitung aller Datensätze abgeschlossen.

    • Stoppingaus. Die Ausführung der Sammelbereitstellung hat den Befehl zum Stoppen erhalten und wird in Kürze beendet. Sie können keine neue Sammelbereitstellung starten, solange sich eine frühere Bereitstellung noch nicht im Status Stopping befindet.

    • Stoppedaus. Die Ausführung der Sammelbereitstellung wurde manuell gestoppt.

    • Failedaus. Die Sammelbereitstellung ist auf einen Fehler gestoßen und hat die Ausführung beendet. Fehlerdetails finden Sie im ErrorDetails-Feld.

    Die JSON-Nutzlast enthält auch statistische Informationen über den Fortschritt der Sammelbereitstellung. Anhand dieser Informationen können Sie feststellen, wie viele Gruppen verarbeitet wurden und wie viele fehlgeschlagen sind. Die statistischen Informationen umfassen:

    • RecordsProcessed: Die Anzahl der Gruppensätze, die versucht wurden.

    • InvalidInputRecords: Die Gesamtzahl der Datensätze, die einen nicht wiederholbaren Fehler (Non-Retryable Error) zurückgegeben haben. Dies kann beispielsweise der Fall sein, wenn ein Gruppendatensatz aus der Eingabedatei ein ungültiges Format aufweist oder eine nicht vorhandene Gruppenversion angibt, oder wenn die Ausführung keine Berechtigung zum Bereitstellen einer Gruppen- oder Gruppenversion erteilt.

    • RetryAttempts: Die Anzahl der Bereitstellungsversuche, die einen wiederholbaren Fehler (Retryable Error) zurückgegeben haben. Beispielsweise wird ein Wiederholungsversuch ausgelöst, wenn der Versuch, eine Gruppe bereitzustellen, einen Ablehnungsfehler (Throttling Error) zurückgibt. Eine Gruppenbereitstellung kann bis zu fünfmal wiederholt werden.

    Im Falle eines Ausführungsfehlers bei der Sammelbereitstellung beinhaltet diese Nutzlast auch einen Abschnitt ErrorDetails, der zur Fehlerbehebung verwendet werden kann. Hierin sind Informationen über die Ursache des Ausführungsfehlers enthalten.

    Sie können den Status der Sammelbereitstellung regelmäßig überprüfen, um sicherzustellen, dass sie wie erwartet verläuft. Nachdem die Bereitstellung abgeschlossen ist, sollte RecordsProcessed gleich der Anzahl der Bereitstellungsgruppen in Ihrer Eingabedatei für die Sammelbereitstellung sein. Dies zeigt an, dass jeder Datensatz bearbeitet wurde.

Schritt 5: Testen der Bereitstellung

Verwenden Sie den ListBulkDeployments-Befehl, um die ID Ihrer Sammelbereitstellung zu finden.

aws greengrass list-bulk-deployments

Dieser Befehl gibt eine Liste aller Ihrer Sammelbereitstellung von der neuesten bis zur ältesten zurück, einschließlich Ihrer BulkDeploymentId.

{ "BulkDeployments": [ { "BulkDeploymentId": 1234567, "BulkDeploymentArn": "string", "CreatedAt": "string" } ], "NextToken": "string" }

Rufen Sie nun den Befehl ListBulkDeploymentDetailedReports auf, um detaillierte Informationen zu jeder Bereitstellung zu sammeln.

aws greengrass list-bulk-deployment-detailed-reports --bulk-deployment-id 1234567

Der Befehl sollte einen erfolgreichen Statuscode 200 zurückgeben, zusammen mit einer JSON-Nutzlast aus Informationen:

{ "BulkDeploymentResults": [ { "DeploymentId": "string", "GroupVersionedArn": "string", "CreatedAt": "string", "DeploymentStatus": "string", "ErrorMessage": "string", "ErrorDetails": [ { "DetailedErrorCode": "string", "DetailedErrorMessage": "string" } ] } ], "NextToken": "string" }

Diese Nutzlast enthält in der Regel eine paginierte Liste jeder Bereitstellung mit ihrem Bereitstellungsstatus, von der neuesten bis zur ältesten. Es enthält auch weitere Informationen für den Fall eines Ausführungsfehlers bei der Sammelbereitstellung. Auch hier sollte die Gesamtzahl der aufgelisteten Bereitstellungen der Anzahl der Gruppen entsprechen, die Sie in Ihrer Eingabedatei für die Sammelbereitstellung angegeben haben.

Die zurückgegebenen Informationen können sich ändern, bis sich die Bereitstellungen in einem Terminalzustand befinden (Erfolg oder Misserfolg). Sie können diesen Befehl bis dahin periodisch aufrufen.

Fehlerbehebung bei Sammelbereitstellungen

Wenn die Sammelbereitstellung nicht erfolgreich ist, können Sie folgende Schritte ausführen, um den Fehler zu beheben. Führen Sie die Befehle in Ihrem Terminal aus.

Fehlerbehebung bei Fehlern in der Eingabedatei

Die Sammelbereitstellung kann bei Syntaxfehlern in der Eingabedatei für die Sammelbereitstellung fehlschlagen. Dies gibt einen Sammelbereitstellungsstatus Failed mit einer Fehlermeldung zurück, die die Zeilennummer des ersten Validierungsfehlers anzeigt. Es gibt vier mögliche Fehlermeldungen:

  • InvalidInputFile: Missing GroupId at line number: line number

    Dieser Fehler zeigt an, dass die angegebene Zeile der Eingabedatei den angegebenen Parameter nicht registrieren kann. Die möglichen fehlenden Parameter sind die GroupId und die GroupVersionId.

  • InvalidInputFile: Invalid deployment type at line number : line number. Only valid type is 'NewDeployment'.

    Dieser Fehler zeigt an, dass in der Zeile der angegebenen Eingabedatei ein ungültiger Bereitstellungstyp angeführt ist. Derzeit wird nur der Bereitstellungstyp NewDeployment unterstützt.

  • Line %s is too long in S3 File. Valid line is less than 256 chars.

    Dieser Fehler zeigt an, dass die angegebene Zeile der Eingabedatei zu lang ist und gekürzt werden muss.

  • Failed to parse input file at line number: line number

    Dieser Fehler zeigt an, dass die angegebene Zeile der Eingabedatei als nicht gültig für JSON angesehen wird.

Auf gleichzeitige Sammelbereitstellungen prüfen.

Sie können keine neue Sammelbereitstellung starten, während eine andere noch läuft bzw. sich nicht im terminalen Zustand befindet. Dies kann zum Fehler Concurrent Deployment Error führen. Sie können den ListBulkDeployments-Befehl verwenden, um zu überprüfen, dass derzeit keine Massenbereitstellung erfolgt. Dieser Befehl listet Ihre Sammelbereitstellungen von der neuesten bis zur ältesten auf.

{ "BulkDeployments": [ { "BulkDeploymentId": BulkDeploymentId, "BulkDeploymentArn": "string", "CreatedAt": "string" } ], "NextToken": "string" }

Verwenden Sie die BulkDeploymentId der ersten aufgelisteten Sammelbereitstellung, um den Befehl GetBulkDeploymentStatus auszuführen. Wenn sich Ihre jüngste Sammelbereitstellung in einem laufenden Zustand befindet (Initializing oder Running), verwenden Sie den folgenden Befehl, um die Sammelbereitstellung zu stoppen.

aws greengrass stop-bulk-deployment --bulk-deployment-id BulkDeploymentId

Diese Aktion führt zum Status Stopping, bis die Bereitstellung auf Stopped gesetzt ist. Nachdem die Bereitstellung den Status Stopped erreicht hat, können Sie eine neue Sammelbereitstellung starten.

Check ErrorDetails

Führen Sie den Befehl GetBulkDeploymentStatus aus, um eine JSON-Nutzlast zurückzugeben, die Informationen über einen Fehler bei der Ausführung der Sammelbereitstellung enthält.

"Message": "string", "ErrorDetails": [ { "DetailedErrorCode": "string", "DetailedErrorMessage": "string" } ]

Bei Beendigung mit einem Fehler, enthalten die ErrorDetails der JSON-Nutzlast, die von diesem Aufruf zurückgegeben wird, weitere Informationen über den Fehler bei der Ausführung der Sammelbereitstellung. Ein Fehlerstatuscode in der Serie 400 zeigt beispielsweise einen Eingabefehler an, entweder in den Eingabeparametern oder in den Abhängigkeiten des Anrufers.

Überprüfen des AWS IoT Greengrass-Core-Protokolls

Sie können Probleme mithilfe der AWS IoT Greengrass Core-Protokolle beheben. Verwenden Sie die folgenden Befehle, um das runtime.log anzuzeigen:

cd /greengrass/ggc/var/log sudo cat system/runtime.log | more

Weitere Informationen zur AWS IoT Greengrass-Protokollierung finden Sie unter Überwachen mit AWS IoT Greengrass-Protokollen.

Weitere Informationen finden Sie auch unter

Weitere Informationen finden Sie in den folgenden -Ressourcen: