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.
Wechseln Sie ein Greengrass Core-Gerät zu einem anderen AWS-Konto oder Region
Sie können ein Nucleus-Konfigurationsupdate bereitstellen, um die IoT-Konnektivität eines Kerngeräts von einer AWS-Konto oder einer Region auf eine andere umzustellen. Dies ist in den folgenden Szenarien nützlich:
-
Übergang von der Fertigung zur Produktion — Sie stellen Geräte während der Fertigung in einem Bereitstellungskonto bereit und verschieben sie bei der Installation vor Ort auf das Zielkonto.
-
Geografischer Umzug — Geräte, die von einer Region in eine andere übertragen werden, müssen eine Verbindung zum AWS IoT Endpunkt der lokalen Region herstellen, um die Latenz zu reduzieren.
-
Reduzierung der Auswirkungen von Ausfällen — Sie verteilen Geräte, die ursprünglich auf ein einziges Konto konzentriert waren, auf mehrere Konten, um die Auswirkungen von Problemen auf Kontoebene, wie z. B. Beschränkungen von Servicekontingenten oder Sicherheitsvorfällen, zu begrenzen.
Wenn Sie einen IoT-Konnektivitäts-Switch bereitstellen, validiert der Nucleus die Konnektivität zum neuen Endpunkt, bevor die Änderung übernommen wird, und führt bei einem Verbindungsausfall automatisch ein Rollback durch.
Für diese Funktion ist Greengrass Nucleus v2.18.0 oder höher oder Greengrass Nucleus Lite v2.6.0 oder höher erforderlich.
Voraussetzungen
Bevor Sie einen Connectivity Switch bereitstellen, richten Sie im Ziel und in der Region Folgendes ein: AWS-Konto
-
AWS IoT Ding — Erstellen Sie ein Ding mit demselben Namen wie im Quellkonto.
-
Zertifikat — Registrieren Sie dasselbe Gerätezertifikat im Zielkonto. Das Zertifikat muss dasselbe Zertifikat sein, das das Gerät im Quellkonto verwendet.
-
AWS IoT Richtlinie — Hängen Sie eine Richtlinie an das Zertifikat an. Die Richtlinie muss
iot:Connectmit einem Ressourcen-ARN, der ein Platzhaltersuffix für die Client-ID verwendet, Folgendes zulassen:"Resource": "arn:aws:iot:*:*:client/${iot:Connection.Thing.ThingName}*"Sie müssen das Platzhaltersuffix angeben, da bei der Nucleus-Preflight-Konnektivitätsprüfung die Client-ID verwendet wird.
thing-name#endpoint-switch -
AWS IoT Rollenalias — Erstellen Sie einen Rollenalias in der Zielregion mit den entsprechenden IAM-Rollenberechtigungen für Greengrass-Operationen.
Anmerkung
Um AWS IoT Ding-Richtlinienvariablen wie ${iot:Connection.Thing.ThingName} in der AWS IoT Richtlinie zu verwenden, müssen Sie das Zertifikat ausschließlich an das AWS IoT Ding im Zielkonto anhängen.
Für Greengrass Nucleus Core-Geräte müssen Sie iotdata in der Nucleus-Konfiguration auch greengrassDataPlaneEndpoint auf einstellen. Nehmen Sie diese Einstellung bei der Bereitstellung des Connectivity Switches oder bei der ersten Bereitstellung auf.
Ohne diese Einstellung bleibt die Datenebene nach dem Switch an das ursprüngliche Konto gebunden. Dadurch werden das Herunterladen von Komponentenartefakten und der Betrieb auf der Kontrollebene unterbrochen. Weitere Informationen finden Sie in den greengrassDataPlaneEndpoint Konfigurationsparametern unterGrüngraskern.
Für Greengrass Nucleus Lite Core-Geräte müssen Sie eine private aws.greengrass.NucleusLite Komponente in Ihrem Konto erstellen, bevor Sie Konfigurationsupdates für den Nucleus bereitstellen können. AWS IoT Greengrass Bereitstellungen können nur auf Komponenten abzielen, die in der Komponentenregistrierung des Kontos vorhanden sind, und es gibt keine öffentliche Komponente für Nucleus Lite.
Erstellen Sie eine Komponente mit der aws_nucleus_lite Laufzeit und einem leeren Lebenszyklus (keine Aktionen). Die Komponentenversion muss mit der Version von Nucleus Lite übereinstimmen, die auf dem Gerät ausgeführt wird.
Erstellen Sie die Bereitstellung
Erstellen Sie eine Bereitstellung, die auf das Kerngerät oder dessen Dinggruppe im Quellkonto abzielt. Die Bereitstellung sendet ein Update der Merge-Konfiguration mit den neuen AWS IoT Endpunktwerten an die Nucleus-Komponente.
Um einen Connectivity-Switch bereitzustellen (AWS CLI)
-
Erstellen Sie eine Datei mit dem Namen
switch-deployment.jsonund folgendem Inhalt. Ersetzen Sie die Platzhalterwerte durch die Werte Ihres Zielkontos.-
targetArnErsetzen Sie durch den ARN der AWS IoT Dinggruppe oder des Kerngeräts im Quellkonto. -
componentNameErsetzen Sie durchaws.greengrass.Nucleusfür Nucleus oderaws.greengrass.NucleusLitefür Nucleus Lite. -
componentVersionErsetzen Sie es durch die Version von Nucleus, die auf dem Gerät läuft.
{ "targetArn": "targetArn", "deploymentName": "SwitchConnectivity", "components": { "componentName": { "componentVersion": "componentVersion", "configurationUpdate": { "merge": "{\"iotDataEndpoint\":\"account-prefix-ats.iot.region.amazonaws.com\",\"iotCredEndpoint\":\"account-prefix.credentials.iot.region.amazonaws.com\",\"awsRegion\":\"region\",\"iotRoleAlias\":\"role-alias-name\"}" } } }, "deploymentPolicies": { "failureHandlingPolicy": "ROLLBACK" } }Für Greengrass Nucleus Core-Geräte, die noch nicht auf
greengrassDataPlaneEndpointeingestellt sindiotdata, fügen Sie es der Merge-Konfiguration hinzu:"merge": "{\"iotDataEndpoint\":\"...\",\"iotCredEndpoint\":\"...\",\"awsRegion\":\"...\",\"iotRoleAlias\":\"...\",\"greengrassDataPlaneEndpoint\":\"iotdata\"}"Kodieren Sie den
mergeWert als JSON-Zeichenfolge. Maskiert alle inneren Anführungszeichen mit Backslashes ().\"Verwenden Sie ein JSON-Validierungstool, um die Syntax zu überprüfen, bevor Sie die Bereitstellung erstellen. -
-
Führen Sie den folgenden Befehl aus, um die Bereitstellung zu erstellen.
aws greengrassv2 create-deployment \ --cli-input-json file://switch-deployment.json
Was ist zu erwarten
Der Nucleus validiert die Konnektivität mit dem neuen Endpunkt, bevor die Änderung angewendet wird. Wenn das Gerät keine Verbindung zum neuen Endpunkt herstellen kann, schlägt die Bereitstellung fehl und das Gerät bleibt mit dem Quellkonto verbunden.
Der Nucleus verwendet die Client-ID für die Konnektivitätsprüfung vor dem Flug.thing-name#endpoint-switch
Nach dem Anwenden der Konfiguration testet der Nucleus die Konnektivität zum neuen Endpunkt. Wenn die Konnektivität fehlschlägt, kehrt der Nucleus automatisch zur ursprünglichen Konfiguration zurück. Die Bereitstellungsberichte FAILED werden im Quellkonto angezeigt.
Wenn der Konnektivitätswechsel erfolgreich ist, wird die Bereitstellung SUCCEEDED im Quellkonto gemeldet. AWS IoT Greengrass erstellt ein Core-Gerät in dem Konto und der Region, die dem neuen Endpunkt zugeordnet sind.
Anmerkung
Während des Konnektivitätswechsels startet der Nucleus Komponenten neu, die stark vom Token-Austauschdienst abhängig sind. Bei diesem Neustart werden die Anmeldeinformationen vom neuen Endpunkt der AWS IoT Anmeldeinformationen aktualisiert. Der Nucleus startet andere Komponenten nicht neu, und sie laufen mit ihrem vorhandenen Status weiter.
Überprüfen Sie den Switch
Stellen Sie nach Abschluss der Bereitstellung sicher, dass der Konnektivitätswechsel erfolgreich war.
Um den Konnektivitätsschalter zu überprüfen
-
Überprüfen Sie den Bereitstellungsstatus im Quellkonto. Die Bereitstellungsberichte,
SUCCEEDEDnachdem das Gerät eine Verbindung zum neuen Endpunkt hergestellt hat.aws greengrassv2 list-effective-deployments \ --core-device-thing-namething-name -
Stellen Sie sicher, dass das Kerngerät im Zielkonto angezeigt wird. Öffnen Sie die AWS IoT Greengrass Konsole
oder führen Sie den folgenden Befehl aus. aws greengrassv2 get-core-device \ --core-device-thing-namething-name
Das AWS IoT Ding und der Datensatz für das Kerngerät verbleiben nach dem Wechsel im Quellkonto. Um zu verhindern, dass future Bereitstellungen auf das Gerät abzielen, entfernen Sie es aus der Dinggruppe des Quellkontos.
Wenn der Bereitstellungsstatus nicht lautetSUCCEEDED, überprüfen Sie das Greengrass-Protokoll auf dem Gerät auf Fehlerdetails. Allgemeine Fehlercodes im Zusammenhang mit dem Betrieb von Connectivity-Switches finden Sie unterDetaillierte Fehlercodes für die Bereitstellung./logs/greengrass.log/greengrass/v2