

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cambiar un dispositivo principal de Greengrass a otro Cuenta de AWS o región
<a name="switch-core-device-connectivity"></a>

Puede implementar una actualización de configuración de Nucleus para cambiar la conectividad IoT de un dispositivo principal de una Cuenta de AWS región a otra. Esto resulta útil en los siguientes escenarios:
+ **Transición de la fabricación a la producción**: los dispositivos se aprovisionan en una cuenta provisional durante la fabricación y los mueves a la cuenta de destino durante la instalación en el campo.
+ **Reubicación geográfica**: los dispositivos que se trasladan de una región a otra deben conectarse al AWS IoT punto final de la región local para reducir la latencia.
+ **Reducción del impacto de los fallos**: se redistribuyen los dispositivos que inicialmente estaban concentrados en una sola cuenta entre varias cuentas para limitar el impacto de los problemas a nivel de cuenta, como los límites de las cuotas de servicio o los incidentes de seguridad.

Al implementar un conmutador de conectividad de IoT, el núcleo valida la conectividad con el nuevo punto final antes de aplicar el cambio y la revierte automáticamente si la conexión falla.

Esta función requiere Greengrass nucleus v2.18.0 o posterior, o Greengrass nucleus lite v2.6.0 o posterior.

**Topics**
+ [Requisitos previos](#switch-connectivity-prerequisites)
+ [Cree la implementación](#switch-connectivity-create-deployment)
+ [Qué esperar](#switch-connectivity-what-to-expect)
+ [Verifique el conmutador](#switch-connectivity-verify)

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

Antes de implementar un conmutador de conectividad, configure lo siguiente en el destino y la región: Cuenta de AWS 
+ **AWS IoT cosa**: crea una cosa con el mismo nombre que en la cuenta de origen.
+ **Certificado**: registre el mismo certificado de dispositivo en la cuenta de destino. El certificado debe ser el mismo certificado que el dispositivo utiliza en la cuenta de origen.
+ **AWS IoT política**: adjunte una política al certificado. La política debe permitir un `iot:Connect` ARN de recurso que utilice un sufijo comodín para el ID de cliente:

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

  Debe incluir el sufijo comodín porque la comprobación de conectividad previa al vuelo del núcleo utiliza el ID de cliente. `{{thing-name}}#endpoint-switch`
+ **AWS IoT alias de rol**: cree un alias de rol en la región de destino con los permisos de rol de IAM adecuados para las operaciones de Greengrass.

**nota**  
Para utilizar variables de política de AWS IoT cosas, como `${iot:Connection.Thing.ThingName}` las de la AWS IoT política, debe adjuntar el certificado exclusivamente a la AWS IoT cosa de la cuenta de destino.

En el caso de los dispositivos con núcleo de Greengrass, también debe `greengrassDataPlaneEndpoint` configurarlos **iotdata** en la configuración de núcleo. Incluya esta configuración en la implementación del conmutador de conectividad o durante el aprovisionamiento inicial.

Sin esta configuración, el plano de datos permanece vinculado a la cuenta original después del cambio. Esto interrumpe las descargas de artefactos componentes y las operaciones del plano de control. Para obtener más información, consulte el parámetro `greengrassDataPlaneEndpoint` de configuración en[Núcleo de Greengrass](greengrass-nucleus-component.md).

En el caso de los dispositivos core nucleus lite de Greengrass, debe crear un `aws.greengrass.NucleusLite` componente privado en su cuenta antes de poder implementar las actualizaciones de configuración en el núcleo. AWS IoT Greengrass las implementaciones solo pueden dirigirse a los componentes que existen en el registro de componentes de la cuenta, y no hay ningún componente público para nucleus lite.

Cree un componente con el `aws_nucleus_lite` tiempo de ejecución y un ciclo de vida vacío (sin acciones). La versión del componente debe coincidir con la versión de nucleus lite que se ejecuta en el dispositivo.

## Cree la implementación
<a name="switch-connectivity-create-deployment"></a>

Cree una implementación que se dirija al dispositivo principal o a su grupo de cosas en la cuenta de origen. La implementación envía una actualización de la configuración de fusión al componente núcleo con los nuevos valores de AWS IoT punto final.

**Para implementar un conmutador de conectividad (AWS CLI)**

1. Cree un archivo denominado `switch-deployment.json` con el siguiente contenido. Sustituya los valores de los marcadores de posición por los valores de su cuenta de destino.
   + {{targetArn}}Sustitúyalo por el ARN del grupo de AWS IoT cosas o del dispositivo principal de la cuenta de origen.
   + {{componentName}}`aws.greengrass.Nucleus`Sustitúyalo por «núcleo» o `aws.greengrass.NucleusLite` «núcleo lite».
   + {{componentVersion}}Sustitúyalo por la versión del núcleo que se ejecuta en el 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"
     }
   }
   ```

   En el caso de los dispositivos Core Core de Greengrass que aún no lo tengan `greengrassDataPlaneEndpoint` configurado**iotdata**, agréguelo a la configuración de combinación:

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

   Codifique el `merge` valor como una cadena JSON. Escapa de todas las comillas internas con barras invertidas (). `\"` Utilice una herramienta de validación de JSON para verificar la sintaxis antes de crear la implementación.

1. Ejecute el siguiente comando para crear la implementación.

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

## Qué esperar
<a name="switch-connectivity-what-to-expect"></a>

El núcleo valida la conectividad con el nuevo punto final antes de aplicar el cambio. Si el dispositivo no puede conectarse al nuevo punto final, se produce un error en la implementación y el dispositivo permanece conectado a la cuenta de origen.

El núcleo utiliza el ID de cliente `{{thing-name}}#endpoint-switch` para la comprobación de conectividad previa al vuelo.

Tras aplicar la configuración, el núcleo comprueba la conectividad con el nuevo punto final. Si la conectividad falla, el núcleo vuelve automáticamente a la configuración original. El despliegue se informa `FAILED` en la cuenta de origen.

Si el cambio de conectividad se realiza correctamente, el despliegue se registra `SUCCEEDED` en la cuenta de origen. AWS IoT Greengrass crea un dispositivo principal en la cuenta y la región asociadas al nuevo punto final.

**nota**  
Durante el cambio de conectividad, el núcleo reinicia los componentes que dependen en gran medida del servicio de intercambio de fichas. Este reinicio actualiza las credenciales del nuevo AWS IoT punto final de credenciales. El núcleo no reinicia otros componentes y estos siguen funcionando con su estado actual.

## Verifique el conmutador
<a name="switch-connectivity-verify"></a>

Una vez completada la implementación, compruebe que el conmutador de conectividad se haya realizado correctamente.

**Para verificar el conmutador de conectividad**

1. Compruebe el estado de despliegue en la cuenta de origen. El despliegue se produce `SUCCEEDED` después de que el dispositivo se conecte al nuevo punto final.

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

1. Compruebe que el dispositivo principal aparezca en la cuenta de destino. Abre la [AWS IoT Greengrass consola](https://console.aws.amazon.com/greengrass) o ejecuta el siguiente comando.

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

La AWS IoT cosa y el registro del dispositivo principal permanecen en la cuenta de origen después del cambio. Para evitar que las futuras implementaciones se dirijan al dispositivo, elimínelo del grupo de cosas de la cuenta de origen.

Si el estado del despliegue no es el `SUCCEEDED` correcto, consulte el registro de Greengrass `{{/greengrass/v2}}/logs/greengrass.log` en el dispositivo para ver los detalles del error. Para ver los códigos de error más comunes relacionados con el funcionamiento de los conmutadores de conectividad, consulte[Códigos de error de implementación detallados](troubleshooting-deployment.md).