View a markdown version of this page

Mude um dispositivo principal do Greengrass para um diferente Conta da AWS ou região - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Mude um dispositivo principal do Greengrass para um diferente Conta da AWS ou região

Você pode implantar uma atualização de configuração do núcleo para alternar a conectividade de IoT de um dispositivo principal de Conta da AWS uma região para outra. Isso é útil nos seguintes cenários:

  • Transição da manufatura para a produção — Você provisiona dispositivos em uma conta temporária durante a fabricação e os move para a conta de destino durante a instalação em campo.

  • Relocação geográfica — Os dispositivos que se movem de uma região para outra devem se conectar ao AWS IoT endpoint da região local para reduzir a latência.

  • Redução do impacto de falhas — Você redistribui dispositivos inicialmente concentrados em uma única conta em várias contas para limitar o impacto de problemas no nível da conta, como limites de cota de serviço ou incidentes de segurança.

Quando você implanta um switch de conectividade de IoT, o núcleo valida a conectividade com o novo endpoint antes de aplicar a alteração e reverte automaticamente se a conexão falhar.

Esse recurso requer o Greengrass nucleus v2.18.0 ou posterior, ou o Greengrass nucleus lite v2.6.0 ou posterior.

Pré-requisitos

Antes de implantar um switch de conectividade, configure o seguinte no destino Conta da AWS e na região:

  • AWS IoT coisa — Crie uma coisa com o mesmo nome da conta de origem.

  • Certificado — Registre o mesmo certificado de dispositivo na conta de destino. O certificado deve ser o mesmo que o dispositivo usa na conta de origem.

  • AWS IoT política — anexe uma política ao certificado. A política deve permitir iot:Connect com um ARN de recurso que use um sufixo curinga para a ID do cliente:

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

    Você deve incluir o sufixo curinga porque a verificação de conectividade pré-voo do núcleo usa o ID do cliente. thing-name#endpoint-switch

  • AWS IoT alias de função — Crie um alias de função na região de destino com as permissões de função do IAM apropriadas para as operações do Greengrass.

nota

Para usar variáveis de política de AWS IoT coisas, como ${iot:Connection.Thing.ThingName} na AWS IoT política, você deve anexar o certificado exclusivamente à AWS IoT coisa na conta de destino.

Para dispositivos nucleus core do Greengrass, você também deve definir como greengrassDataPlaneEndpoint iotdata na configuração do núcleo. Inclua essa configuração na implantação do switch de conectividade ou durante o provisionamento inicial.

Sem essa configuração, o plano de dados permanece vinculado à conta original após a troca. Isso interrompe os downloads de artefatos de componentes e as operações do plano de controle. Para obter mais informações, consulte o parâmetro greengrassDataPlaneEndpoint de configuração emGreengrass nucleus.

Para os dispositivos principais do Greengrass nucleus lite, você deve criar um aws.greengrass.NucleusLite componente privado em sua conta antes de poder implantar atualizações de configuração no núcleo. AWS IoT Greengrass as implantações só podem ter como alvo componentes que existem no registro de componentes da conta, e não há nenhum componente público para o nucleus lite.

Crie um componente com o aws_nucleus_lite tempo de execução e um ciclo de vida vazio (sem ações). A versão do componente deve corresponder à versão do nucleus lite em execução no dispositivo.

Crie a implantação

Crie uma implantação que tenha como alvo o dispositivo principal ou seu grupo de coisas na conta de origem. A implantação envia uma atualização de configuração de mesclagem para o componente do núcleo com os novos valores do AWS IoT endpoint.

Para implantar um switch de conectividade (AWS CLI)
  1. Crie um arquivo denominado switch-deployment.json com o seguinte conteúdo. Substitua os valores do espaço reservado pelos valores da sua conta de destino.

    • targetArnSubstitua pelo ARN do grupo de AWS IoT itens ou do dispositivo principal na conta de origem.

    • componentNameSubstitua aws.greengrass.Nucleus por por núcleo ou aws.greengrass.NucleusLite por núcleo lite.

    • componentVersionSubstitua pela versão do núcleo em execução no 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" } }

    Para dispositivos nucleus core do Greengrass que ainda não tenham sido greengrassDataPlaneEndpoint configuradosiotdata, adicione-os à configuração de mesclagem:

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

    Codifique o merge valor como uma string JSON. Escape de todas as aspas internas com barras invertidas ()\". Use uma ferramenta de validação JSON para verificar a sintaxe antes de criar a implantação.

  2. Execute o comando a seguir para criar a implantação.

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

O que esperar

O núcleo valida a conectividade com o novo endpoint antes de aplicar a alteração. Se o dispositivo não conseguir se conectar ao novo endpoint, a implantação falhará e o dispositivo permanecerá conectado à conta de origem.

O núcleo usa o ID do cliente thing-name#endpoint-switch para a verificação de conectividade antes do voo.

Depois de aplicar a configuração, o núcleo testa a conectividade com o novo endpoint. Se a conectividade falhar, o núcleo volta automaticamente para a configuração original. Os relatórios de implantação FAILED na conta de origem.

Se a chave de conectividade for bem-sucedida, a implantação será reportada SUCCEEDED na conta de origem. AWS IoT Greengrass cria um dispositivo principal na conta e na região associadas ao novo endpoint.

nota

Durante a troca de conectividade, o núcleo reinicia os componentes que têm uma forte dependência do serviço de troca de tokens. Essa reinicialização atualiza as credenciais do novo endpoint de AWS IoT credenciais. O núcleo não reinicia outros componentes e eles continuam funcionando com o estado existente.

Verifique o switch

Após a conclusão da implantação, verifique se o switch de conectividade foi bem-sucedido.

Para verificar o switch de conectividade
  1. Verifique o status da implantação na conta de origem. Os relatórios de implantação SUCCEEDED depois que o dispositivo se conecta ao novo endpoint.

    aws greengrassv2 list-effective-deployments \ --core-device-thing-name thing-name
  2. Verifique se o dispositivo principal aparece na conta de destino. Abra o AWS IoT Greengrass console ou execute o comando a seguir.

    aws greengrassv2 get-core-device \ --core-device-thing-name thing-name

A AWS IoT coisa e o registro do dispositivo principal permanecem na conta de origem após a troca. Para evitar que futuras implantações tenham como alvo o dispositivo, remova-o do grupo de coisas da conta de origem.

Se o status da implantação não forSUCCEEDED, verifique o registro do Greengrass /greengrass/v2/logs/greengrass.log no dispositivo para obter detalhes do erro. Para obter códigos de erro comuns relacionados às operações do switch de conectividade, consulteCódigos detalhados de erros de implantação.