Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Passa un dispositivo core Greengrass a un altro Account AWS o regione
Puoi implementare un aggiornamento della configurazione di Nucleus per passare la connettività IoT di un dispositivo principale da una Account AWS o regione all'altra. Ciò è utile nei seguenti scenari:
-
Transizione dalla produzione alla produzione: durante la produzione si effettuano il provisioning dei dispositivi in un account di gestione temporanea e li si sposta nell'account di destinazione durante l'installazione sul campo.
-
Trasferimento geografico: i dispositivi che si spostano da una regione all'altra devono connettersi all' AWS IoT endpoint della regione locale per ridurre la latenza.
-
Riduzione dell'impatto sui guasti: i dispositivi inizialmente concentrati in un unico account su più account vengono ridistribuiti per limitare l'impatto di problemi a livello di account, come i limiti delle quote di servizio o gli incidenti di sicurezza.
Quando si implementa uno switch di connettività IoT, il nucleo convalida la connettività al nuovo endpoint prima di applicare la modifica e ripristina automaticamente se la connessione fallisce.
Questa funzionalità richiede Greengrass nucleus v2.18.0 o versione successiva o Greengrass nucleus lite v2.6.0 o successiva.
Prerequisiti
Prima di implementare uno switch di connettività, configura quanto segue nella destinazione e nella regione: Account AWS
-
AWS IoT cosa: crea un oggetto con lo stesso nome dell'account di origine.
-
Certificato: registra lo stesso certificato del dispositivo nell'account di destinazione. Il certificato deve essere lo stesso certificato utilizzato dal dispositivo nell'account di origine.
-
AWS IoT policy: allega una policy al certificato. La policy deve consentire
iot:Connectcon una risorsa ARN che utilizza un suffisso wildcard per l'ID client:"Resource": "arn:aws:iot:*:*:client/${iot:Connection.Thing.ThingName}*"È necessario includere il suffisso wildcard perché il controllo della connettività pre-flight di nucleus utilizza l'ID client.
thing-name#endpoint-switch -
AWS IoT role alias: crea un alias di ruolo nella regione di destinazione con le autorizzazioni del ruolo IAM appropriate per le operazioni Greengrass.
Nota
Per utilizzare le variabili della AWS IoT thing policy, ad esempio ${iot:Connection.Thing.ThingName} nella AWS IoT policy, è necessario allegare il certificato esclusivamente all' AWS IoT oggetto nell'account di destinazione.
Per i dispositivi Greengrass nucleus core, è necessario impostare greengrassDataPlaneEndpoint anche iotdata nella configurazione nucleus. Includi questa impostazione nella distribuzione dello switch di connettività o durante il provisioning iniziale.
Senza questa impostazione, il piano dati rimane legato all'account originale dopo lo switch. Ciò interrompe il download degli artefatti dei componenti e le operazioni del piano di controllo. Per ulteriori informazioni, vedete il parametro di greengrassDataPlaneEndpoint configurazione in. Nucleo Greengrass
Per i dispositivi core Greengrass nucleus lite, devi creare un aws.greengrass.NucleusLite componente privato nel tuo account prima di poter distribuire gli aggiornamenti di configurazione al nucleus. AWS IoT Greengrass le distribuzioni possono riguardare solo i componenti presenti nel registro dei componenti dell'account e non esiste un componente pubblico per nucleus lite.
Crea un componente con il aws_nucleus_lite runtime e un ciclo di vita vuoto (nessuna azione). La versione del componente deve corrispondere alla versione di nucleus lite in esecuzione sul dispositivo.
Crea la distribuzione
Crea una distribuzione destinata al dispositivo principale o al relativo gruppo di oggetti nell'account di origine. La distribuzione invia un aggiornamento della configurazione di fusione al componente nucleus con i nuovi valori dell' AWS IoT endpoint.
Per implementare uno switch di connettività (AWS CLI)
-
Crea un file denominato
switch-deployment.json, con il seguente contenuto: Sostituisci i valori segnaposto con i valori dell'account di destinazione.-
Sostituisci
targetArncon l'ARN del gruppo di AWS IoT oggetti o del dispositivo principale nell'account di origine. -
Sostituisci
componentNameconaws.greengrass.Nucleusfor nucleus oaws.greengrass.NucleusLiteper nucleus lite. -
Sostituisci
componentVersioncon la versione del nucleo in esecuzione sul dispositivo.
{ "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" } }Per i dispositivi Greengrass nucleus core che non sono già
greengrassDataPlaneEndpointimpostati suiotdata, aggiungilo alla configurazione di unione:"merge": "{\"iotDataEndpoint\":\"...\",\"iotCredEndpoint\":\"...\",\"awsRegion\":\"...\",\"iotRoleAlias\":\"...\",\"greengrassDataPlaneEndpoint\":\"iotdata\"}"Codifica il
mergevalore come stringa JSON. Esci da tutte le virgolette interne con le barre rovesciate ().\"Usa uno strumento di convalida JSON per verificare la sintassi prima di creare la distribuzione. -
-
Esegui il comando seguente per creare la distribuzione.
aws greengrassv2 create-deployment \ --cli-input-json file://switch-deployment.json
Cosa aspettarsi
Il nucleo convalida la connettività al nuovo endpoint prima di applicare la modifica. Se il dispositivo non riesce a connettersi al nuovo endpoint, la distribuzione fallisce e il dispositivo rimane connesso all'account di origine.
Il nucleus utilizza l'ID client per il controllo della connettività prima del volo.thing-name#endpoint-switch
Dopo aver applicato la configurazione, il nucleus verifica la connettività al nuovo endpoint. Se la connettività fallisce, il nucleus torna automaticamente alla configurazione originale. I report di distribuzione FAILED nell'account di origine.
Se lo switch di connettività ha esito positivo, la distribuzione riporta i report SUCCEEDED nell'account di origine. AWS IoT Greengrass crea un dispositivo principale nell'account e nella regione associati al nuovo endpoint.
Nota
Durante il passaggio alla connettività, il nucleo riavvia i componenti che dipendono fortemente dal servizio di scambio di token. Questo riavvio aggiorna le credenziali dal nuovo endpoint delle credenziali. AWS IoT Il nucleo non riavvia gli altri componenti che continuano a funzionare con lo stato esistente.
Verifica l'interruttore
Al termine della distribuzione, verifica che lo switch di connettività abbia avuto esito positivo.
Per verificare lo switch di connettività
-
Controlla lo stato della distribuzione nell'account di origine. La distribuzione riporta i report
SUCCEEDEDdopo la connessione del dispositivo al nuovo endpoint.aws greengrassv2 list-effective-deployments \ --core-device-thing-namething-name -
Verifica che il dispositivo principale sia presente nell'account di destinazione. Apri la AWS IoT Greengrass console
o esegui il comando seguente. aws greengrassv2 get-core-device \ --core-device-thing-namething-name
L' AWS IoT oggetto e il record del dispositivo principale rimangono nell'account di origine dopo lo switch. Per evitare che le future implementazioni abbiano come target il dispositivo, rimuovilo dal gruppo di oggetti dell'account di origine.
Se lo stato di distribuzione non lo èSUCCEEDED, controlla il registro Greengrass sul dispositivo per i dettagli dell'errore. Per i codici di errore più comuni relativi al funzionamento degli switch di connettività, vedereCodici di errore di distribuzione dettagliati./logs/greengrass.log/greengrass/v2