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.
-
Führen Sie den folgenden Befehl aus, um die
groupId
für jede Gruppe zu erhalten, die Sie bereitstellen möchten. Sie geben diegroupId
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 den
Version
-Gruppenversion, die Sie verwenden möchten.{ "Versions": [ { "Arn": "string", "Id": "string", "Version": "
string
", "CreationTimestamp": "string" } ], "NextToken": "string" } -
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
undGroupVersionId
und einenDeploymentType
. Derzeit unterstützt AWS IoT Greengrass nurNewDeployment
Sammelbereitstellungstypen.Speichern und schließen Sie Ihre Datei. Notieren Sie sich den Speicherort der Datei.
-
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.
-
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": ["*"]
-
Ä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 die
aws:SourceArn
undaws:SourceAccount
Globale -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
:*" } } } ] } -
IAM geben
PassRole
-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.
-
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.
-
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:-
Initializing
aus. Die Anforderung der Sammelbereitstellung ist eingegangen, und die Ausführung bereitet sich auf den Start vor. -
Running
aus. Die Sammelbereitstellung wurde gestartet. -
Completed
aus. Die Ausführung der Sammelbereitstellung hat die Verarbeitung aller Datensätze abgeschlossen. -
Stopping
aus. 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 StatusStopping
befindet. -
Stopped
aus. Die Ausführung der Sammelbereitstellung wurde manuell gestoppt. -
Failed
aus. Die Sammelbereitstellung ist auf einen Fehler gestoßen und hat die Ausführung beendet. Fehlerdetails finden Sie imErrorDetails
-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 dieGroupVersionId
. -
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:
-
Bereitstellen von AWS IoT Greengrass-Gruppen für einen AWS IoT Greengrass Core
-
Amazon S3-API-BefehleimAWS CLIBefehlsreferenz
-
AWS IoT GreengrassKommandosimAWS CLIBefehlsreferenz