

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
<a name="switch-core-device-connectivity"></a>

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.

**Topics**
+ [Prerequisiti](#switch-connectivity-prerequisites)
+ [Crea la distribuzione](#switch-connectivity-create-deployment)
+ [Cosa aspettarsi](#switch-connectivity-what-to-expect)
+ [Verifica l'interruttore](#switch-connectivity-verify)

## Prerequisiti
<a name="switch-connectivity-prerequisites"></a>

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:Connect` con 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](greengrass-nucleus-component.md)

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
<a name="switch-connectivity-create-deployment"></a>

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)**

1. Crea un file denominato `switch-deployment.json`, con il seguente contenuto: Sostituisci i valori segnaposto con i valori dell'account di destinazione.
   + Sostituisci {{targetArn}} con l'ARN del gruppo di AWS IoT oggetti o del dispositivo principale nell'account di origine.
   + Sostituisci {{componentName}} con `aws.greengrass.Nucleus` for nucleus o `aws.greengrass.NucleusLite` per nucleus lite.
   + Sostituisci {{componentVersion}} con 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à `greengrassDataPlaneEndpoint` impostati su**iotdata**, aggiungilo alla configurazione di unione:

   ```
   "merge": "{\"iotDataEndpoint\":\"...\",\"iotCredEndpoint\":\"...\",\"awsRegion\":\"...\",\"iotRoleAlias\":\"...\",\"greengrassDataPlaneEndpoint\":\"iotdata\"}"
   ```

   Codifica il `merge` valore 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.

1. Esegui il comando seguente per creare la distribuzione.

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

## Cosa aspettarsi
<a name="switch-connectivity-what-to-expect"></a>

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 `{{thing-name}}#endpoint-switch` per il controllo della connettività prima del volo.

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
<a name="switch-connectivity-verify"></a>

Al termine della distribuzione, verifica che lo switch di connettività abbia avuto esito positivo.

**Per verificare lo switch di connettività**

1. Controlla lo stato della distribuzione nell'account di origine. La distribuzione riporta i report `SUCCEEDED` dopo la connessione del dispositivo al nuovo endpoint.

   ```
   aws greengrassv2 list-effective-deployments \
     --core-device-thing-name {{thing-name}}
   ```

1. Verifica che il dispositivo principale sia presente nell'account di destinazione. Apri la [AWS IoT Greengrass console](https://console.aws.amazon.com/greengrass) o esegui il comando seguente.

   ```
   aws greengrassv2 get-core-device \
     --core-device-thing-name {{thing-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 `{{/greengrass/v2}}/logs/greengrass.log` sul dispositivo per i dettagli dell'errore. Per i codici di errore più comuni relativi al funzionamento degli switch di connettività, vedere[Codici di errore di distribuzione dettagliati](troubleshooting-deployment.md).