

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Passez d'un appareil Greengrass Core à un autre Compte AWS ou région
<a name="switch-core-device-connectivity"></a>

Vous pouvez déployer une mise à jour de configuration du noyau pour faire passer la connectivité IoT d'un appareil principal Compte AWS d'une région à une autre. Cela est utile dans les scénarios suivants :
+ **Transition de la fabrication à la production** : vous approvisionnez les appareils dans un compte intermédiaire pendant la fabrication et vous les déplacez vers le compte de destination lors de l'installation sur le terrain.
+ **Délocalisation géographique** : les appareils qui se déplacent d'une région à l'autre doivent se connecter au point de AWS IoT terminaison de la région locale afin de réduire le temps de latence.
+ **Réduction de l'impact des défaillances** : vous redistribuez les appareils initialement concentrés dans un seul compte sur plusieurs comptes afin de limiter l'impact des problèmes liés au compte, tels que les limites de quotas de service ou les incidents de sécurité.

Lorsque vous déployez un commutateur de connectivité IoT, le noyau valide la connectivité au nouveau point de terminaison avant d'appliquer la modification et revient automatiquement en cas d'échec de la connexion.

Cette fonctionnalité nécessite Greengrass nucleus v2.18.0 ou version ultérieure, ou Greengrass nucleus lite v2.6.0 ou version ultérieure.

**Topics**
+ [Conditions préalables](#switch-connectivity-prerequisites)
+ [Création du déploiement](#switch-connectivity-create-deployment)
+ [À quoi s'attendre](#switch-connectivity-what-to-expect)
+ [Vérifiez le commutateur](#switch-connectivity-verify)

## Conditions préalables
<a name="switch-connectivity-prerequisites"></a>

Avant de déployer un commutateur de connectivité, configurez les éléments suivants dans la destination Compte AWS et dans la région :
+ **AWS IoT objet** — Créez un objet portant le même nom que dans le compte source.
+ **Certificat** : enregistrez le même certificat d'appareil dans le compte de destination. Le certificat doit être le même que celui utilisé par l'appareil dans le compte source.
+ **AWS IoT policy** — Attachez une politique au certificat. La politique doit autoriser `iot:Connect` avec un ARN de ressource qui utilise un suffixe générique pour l'ID client :

  ```
  "Resource": "arn:aws:iot:*:*:client/${iot:Connection.Thing.ThingName}*"
  ```

  Vous devez inclure le suffixe générique car le contrôle de connectivité avant le vol du Nucleus utilise l'ID client. `{{thing-name}}#endpoint-switch`
+ **AWS IoT alias de rôle** : créez un alias de rôle dans la région de destination avec les autorisations de rôle IAM appropriées pour les opérations Greengrass.

**Note**  
Pour utiliser des variables de politique d' AWS IoT objet telles que `${iot:Connection.Thing.ThingName}` dans la AWS IoT politique, vous devez associer le certificat exclusivement à l' AWS IoT objet dans le compte de destination.

Pour les appareils Greengrass Nucleus Core, vous devez également définir sur **iotdata** dans `greengrassDataPlaneEndpoint` la configuration du noyau. Incluez ce paramètre dans le déploiement du commutateur de connectivité ou lors du provisionnement initial.

Sans ce paramètre, le plan de données reste lié au compte d'origine après le changement. Cela interrompt les téléchargements d'artefacts de composants et les opérations du plan de contrôle. Pour plus d'informations, consultez le paramètre `greengrassDataPlaneEndpoint` de configuration dans[Noyau de Greengrass](greengrass-nucleus-component.md).

Pour les appareils Greengrass Nucleus Lite Core, vous devez créer un `aws.greengrass.NucleusLite` composant privé dans votre compte avant de pouvoir déployer des mises à jour de configuration sur le noyau. AWS IoT Greengrass les déploiements ne peuvent cibler que les composants qui existent dans le registre des composants du compte, et il n'existe aucun composant public pour Nucleus Lite.

Créez un composant avec le `aws_nucleus_lite` runtime et un cycle de vie vide (aucune action). La version du composant doit correspondre à la version de Nucleus Lite exécutée sur l'appareil.

## Création du déploiement
<a name="switch-connectivity-create-deployment"></a>

Créez un déploiement qui cible le périphérique principal ou son groupe d'objets dans le compte source. Le déploiement envoie une mise à jour de la configuration de fusion au composant du noyau avec les nouvelles valeurs de point de AWS IoT terminaison.

**Pour déployer un commutateur de connectivité (AWS CLI)**

1. Créez un fichier nommé `switch-deployment.json` avec le contenu suivant. Remplacez les valeurs de l'espace réservé par les valeurs de votre compte de destination.
   + {{targetArn}}Remplacez-le par l'ARN du AWS IoT groupe d'objets ou du périphérique principal du compte source.
   + Remplacez {{componentName}} par `aws.greengrass.Nucleus` pour Nucleus ou `aws.greengrass.NucleusLite` pour Nucleus Lite.
   + {{componentVersion}}Remplacez-le par la version du noyau exécutée sur l'appareil.

   ```
   {
     "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"
     }
   }
   ```

   Pour les appareils Greengrass Nucleus Core qui ne sont pas encore `greengrassDataPlaneEndpoint` configurés sur**iotdata**, ajoutez-le à la configuration de fusion :

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

   Codez la `merge` valeur sous forme de chaîne JSON. Échappez à tous les guillemets intérieurs avec des barres obliques inverses (). `\"` Utilisez un outil de validation JSON pour vérifier la syntaxe avant de créer le déploiement.

1. Exécutez la commande suivante pour créer le déploiement.

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

## À quoi s'attendre
<a name="switch-connectivity-what-to-expect"></a>

Le noyau valide la connectivité au nouveau point de terminaison avant d'appliquer la modification. Si l'appareil ne peut pas se connecter au nouveau point de terminaison, le déploiement échoue et l'appareil reste connecté au compte source.

Le noyau utilise l'identifiant du client `{{thing-name}}#endpoint-switch` pour le contrôle de connectivité avant le vol.

Après avoir appliqué la configuration, le noyau teste la connectivité au nouveau point de terminaison. En cas de défaillance de la connectivité, le noyau revient automatiquement à sa configuration d'origine. Les rapports de déploiement `FAILED` se trouvent dans le compte source.

Si le commutateur de connectivité réussit, le déploiement est enregistré `SUCCEEDED` dans le compte source. AWS IoT Greengrass crée un appareil principal dans le compte et la région associés au nouveau point de terminaison.

**Note**  
Pendant le changement de connectivité, le noyau redémarre les composants qui dépendent fortement du service d'échange de jetons. Ce redémarrage actualise les informations d'identification à partir du nouveau point de terminaison des AWS IoT informations d'identification. Le noyau ne redémarre pas les autres composants et ceux-ci continuent de fonctionner dans leur état actuel.

## Vérifiez le commutateur
<a name="switch-connectivity-verify"></a>

Une fois le déploiement terminé, vérifiez que le commutateur de connectivité a réussi.

**Pour vérifier le commutateur de connectivité**

1. Vérifiez l'état du déploiement dans le compte source. Le déploiement est signalé une `SUCCEEDED` fois que l'appareil se connecte au nouveau point de terminaison.

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

1. Vérifiez que l'appareil principal apparaît dans le compte de destination. Ouvrez la [AWS IoT Greengrass console](https://console.aws.amazon.com/greengrass) ou exécutez la commande suivante.

   ```
   aws greengrassv2 get-core-device \
     --core-device-thing-name {{thing-name}}
   ```

L'enregistrement de l' AWS IoT objet et de l'appareil principal restent dans le compte source après le changement. Pour empêcher les futurs déploiements de cibler l'appareil, supprimez-le du groupe d'objets du compte source.

Si l'état du déploiement n'est pas le cas`SUCCEEDED`, consultez le journal Greengrass `{{/greengrass/v2}}/logs/greengrass.log` sur l'appareil pour obtenir les détails de l'erreur. Pour les codes d'erreur courants liés au fonctionnement des commutateurs de connectivité, consultez[Codes d'erreur de déploiement détaillés](troubleshooting-deployment.md).