Solução de problemas de AWS IoT Greengrass - AWS IoT Greengrass

AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.

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á.

Solução de problemas de AWS IoT Greengrass

Esta seção fornece informações sobre a solução de problemas e possíveis soluções para ajudar a resolver problemas com o AWS IoT Greengrass.

Para obter informações sobre cotas (limites) do AWS IoT Greengrass, consulte Cotas de Serviço no Referência geral da Amazon Web Services.

Problemas no AWS IoT Greengrass Core

Se o software de núcleo do AWS IoT Greengrass não iniciar, tente as seguintes etapas gerais de solução de problemas:

Pesquise os seguintes sintomas e erros para encontrar informações para ajudar a solucionar problemas com um núcleo do AWS IoT Greengrass.

Problemas

 

Erro: O arquivo de configuração não tem o CaPath, CertPath ou KeyPath. O processo do daemon do Greengrass com [pid = <pid>] foi desativado.

Solução: esse erro pode ser visto em crash.log quando o software de núcleo do AWS IoT Greengrass não iniciar. Isso pode ocorrer se você estiver executando v1.6 ou anterior. Execute um destes procedimentos:

  • Atualize para a v1.7 ou posterior. Recomendamos que você sempre execute a versão mais recente do software de núcleo do AWS IoT Greengrass. Para fazer download de informações, consulte Software de núcleo do AWS IoT Greengrass.

  • Use o formato config.json correto para a sua versão do software do AWS IoT Greengrass Core. Para ter mais informações, consulte Arquivo de configuração de núcleo do AWS IoT Greengrass.

    nota

    Para encontrar qual versão do software de núcleo do AWS IoT Greengrass está instalada no dispositivo de núcleo, execute os seguintes comandos no terminal do dispositivo.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd --version

 

Erro: Falha ao analisar /<greengrass-root>/config/config.json.

Solução: esse erro pode ser visto quando o software de núcleo do AWS IoT Greengrass não iniciar. Certifique-se de que o arquivo de configuração do Greengrass está usando o formato JSON válido.

Abra config.json (localizado em /greengrass-root/config) e verifique o formato JSON. Por exemplo, certifique-se de que as vírgulas estão sendo usadas de forma correta.

 

Erro: ocorreu um erro ao gerar a configuração TLS: URIScheme ErrUnknown

Solução: esse erro pode ser visto quando o software de núcleo do AWS IoT Greengrass não iniciar. Verifique se as propriedades da seção crypto do arquivo de configuração do Greengrass são válidas. A mensagem de erro deve fornecer mais informações.

Abra config.json (localizado em /greengrass-root/config) e verifique a seção crypto. Por exemplo, os caminhos de chave e certificado devem usar o formato URI correto e apontar para o local correto.

 

Erro: Falha ao iniciar o tempo de execução: não foi possível iniciar os operadores: o teste de contêiner expirou.

Solução: esse erro pode ser visto quando o software de núcleo do AWS IoT Greengrass não iniciar. Defina a propriedade postStartHealthCheckTimeout no arquivo de configuração do Greengrass. Essa propriedade opcional configura a quantidade de tempo (em milissegundos) que o daemon do Greengrass espera a verificação de saúde pós-início terminar. O valor padrão é de 30 segundos (30000 ms)

Abra config.json (localizado em /greengrass-root/config). No objeto runtime, adicione a propriedade postStartHealthCheckTimeout e defina o valor como um número maior que 30.000. Adicione uma vírgula onde for preciso para criar um arquivo JSON válido. Por exemplo: .

... "runtime" : { "cgroup" : { "useSystemd" : "yes" }, "postStartHealthCheckTimeout" : 40000 }, ...

 

<address>Erro: falha ao invocar PutLogEvents no Cloudwatch local, LogGroup:/GreengrassSystem/connection_manager, erro:: falha na solicitação de envio causada por: Post http RequestError://<path>/cloudwatch/logs/: dial tcp: getsockopt: conexão recusada, resposta: {}.

Solução: esse erro pode ser visto quando o software de núcleo do AWS IoT Greengrass não iniciar. Isso pode ocorrer se você estiver executando o AWS IoT Greengrass em um Raspberry Pi e a configuração de memória necessária não tiver sido concluída. Para obter mais informações, consulte esta etapa.

 

Erro: Não foi possível criar o servidor devido a: falha ao carregar o grupo: chmod /<greengrass-root>/ggc/deployment/lambda/arn:aws:lambda:<region>:<account-id>:function:<function-name>:<version>/<file-name>: nenhum arquivo ou diretório.

Solução: esse erro pode ser visto quando o software de núcleo do AWS IoT Greengrass não iniciar. Se você tiver implantado um executável do Lambda no núcleo, verifique a propriedade Handler da função no arquivo group.json (localizado em /greengrass-root/ggc/deployment/group). Se o manipulador não tiver exatamente o mesmo nome do executável compilado, substitua o conteúdo do arquivo group.json por um objeto JSON vazio ({}) e execute os comandos a seguir para iniciar o AWS IoT Greengrass:

cd /greengrass/ggc/core/ sudo ./greengrassd start

Em seguida, use a API do AWS Lambda para atualizar o parâmetro handler da configuração da função, publique uma nova versão da função e atualize o alias. Para obter mais informações, consulte Versionamento e aliases da função do AWS Lambda.

Supondo que tenha adicionado a função ao grupo do Greengrass pelo alias (recomendado), você já pode reimplantar o grupo. (Caso contrário, você deve apontar para a nova versão da função ou do alias na definição e assinaturas do grupo antes de implantar o grupo.)

 

O software de núcleo do AWS IoT Greengrass não inicia depois de alterar da execução sem conteinerização para a execução em um contêiner do Greengrass.

Solução: verifique se não está faltando nenhuma dependência de contêiner.

 

Erro: Tamanho do spool deve ser pelo menos 262.144 bytes.

Solução: esse erro pode ser visto quando o software de núcleo do AWS IoT Greengrass não iniciar. Abra o arquivo group.json (localizado em /greengrass-root/ggc/deployment/group), substitua o conteúdo do arquivo por um objeto JSON vazio ({}) e execute os comandos a seguir para iniciar o AWS IoT Greengrass:

cd /greengrass/ggc/core/ sudo ./greengrassd start

Em seguida, execute as etapas do procedimento Como armazenar mensagens em cache no armazenamento local. Não se esqueça de especificar um valor de GG_CONFIG_MAX_SIZE_BYTES para a função GGCloudSpooler que seja maior que ou igual a 262144.

 

Erro: [ERRO] – erro de mensagens na nuvem: Ocorreu um erro ao tentar publicar uma mensagem. {"errorString": "operation timed out"}

Solução: é possível que esse erro seja exibido no GGCloudSpooler.log quando o núcleo do Greengrass não conseguir enviar mensagens MQTT ao AWS IoT Core. Isso pode ocorrer se o ambiente do núcleo tiver largura de banda limitada e alta latência. Se você estiver executando o AWS IoT Greengrass v1.10.2 ou posterior, tente aumentar o valor de mqttOperationTimeout no arquivo config.json. Se a propriedade não estiver presente, adicione-a ao objeto coreThing. Por exemplo: .

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

O valor padrão é 5 e o valor mínimo é 5.

 

Erro: container_linux.go: 344: o início do processo do contêiner causou "process_linux.go:424: init do contêiner causou \"rootfs_linux.go:64: montagem \\\"/greengrass/ggc/socket/greengrass_ipc.sock\\\" para rootfs \\\"/greengrass/ggc/packages/<version>/rootfs/merged\\\" em \\\"/greengrass_ipc.sock\\\" causou \\\"stat /greengrass/ggc/socket/greengrass_ipc.sock: permissão negada\\\"\"".

Solução: esse erro pode ser visto em runtime.log quando o software de núcleo do AWS IoT Greengrass não iniciar. Isso ocorre se umask for maior que 0022. Para resolver esse problema, você deve definir umask como 0022 ou menor. Um valor de 0022 concede a todos permissão de leitura dos novos arquivos por padrão.

 

Erro: Daemon do Greengrass em execução com PID: <process-id>. Não foi possível iniciar alguns componentes do sistema. Verifique "runtime.log" para erros.

Solução: esse erro pode ser visto quando o software de núcleo do AWS IoT Greengrass não iniciar. Verifique runtime.log e crash.log para obter informações de erros específicos. Para ter mais informações, consulte Solução de problemas com logs.

 

O shadow do dispositivo não sincroniza com a nuvem.

Solução: verifique se o AWS IoT Greengrass tem as permissões para as ações iot:UpdateThingShadow e iot:GetThingShadow no perfil de serviço do Greengrass. Se o perfil de serviço usa a política gerenciada AWSGreengrassResourceAccessRolePolicy, essas permissões são incluídas por padrão.

Consulte Solução de problemas de intervalo de sincronização de shadow.

 

ERRO: não foi possível aceitar a conexão TCP. accept tcp [::]:8000: accept4: muitos arquivos abertos.

Solução: esse erro pode ser visto na saída do script greengrassd. Isso pode ocorrer se o descritor de arquivo do software de núcleo do AWS IoT Greengrass atingiu o limite e precisa ser aumentado.

Use o comando a seguir e reinicie o software do AWS IoT Greengrass Core.

ulimit -n 2048
nota

Neste exemplo, o limite é aumentado para 2048. Selecione um valor apropriado para seu caso de uso.

 

Erro: Erro de execução do tempo de execução: não foi possível iniciar o contêiner lambda. container_linux.go:259: o início do processo do contêiner causou "process_linux.go:345: init do contêiner causou \"rootfs_linux.go:50: rootfs de preparação causaram \\\"permissão negada\\\"\"".

Solução: instale o AWS IoT Greengrass diretamente no diretório raiz ou verifique se o diretório onde o software do núcleo do AWS IoT Greengrass está instalado e seus diretórios pai têm permissões execute para todos.

 

Aviso: [WARN] - [5] GK Remote: Erro ao recuperar dados da chave pública: ErrPrincipalNotConfigured: a chave privada para MqttCertificate não está definida.

Solução: o AWS IoT Greengrass usa um manipulador comum para validar as propriedades de todas as entidades principais de segurança. Esse aviso em runtime.log é esperado, a menos que você tenha especificado uma chave privada personalizada para o servidor MQTT local. Para ter mais informações, consulte AWS IoT Greengrass princípios básicos de segurança.

 

Erro: Permissão negada ao tentar usar a função arn:aws:iam::<account-id>:role/<role-name> to access s3 url https://<region>-greengrass-updates.s3.<region>.amazonaws.com/core/<architecture>/greengrass-core-<distribution-version>.tar.gz.

Solução: você pode ver esse erro quando uma atualização over-the-air (OTA) falha. Na política de função assinante, adicione a Região da AWS de destino como Resource. Essa função de assinante é usada para pré-assinar o URL do S3 para a atualização do software de núcleo do AWS IoT Greengrass. Para obter mais informações, consulte Função assinante do URL do S3.

 

O AWS IoT Greengrass é configurado para usar um proxy de rede e a função do Lambda não pode realizar conexões de saída.

Solução: dependendo do tempo de execução e dos executáveis usados pela função do Lambda para criar conexões, erros de tempo limite de conexão podem ser recebidos. Certifique-se de que as funções do Lambda usam a configuração de proxy apropriada para conectar-se pelo proxy de rede. O AWS IoT Greengrass transmite a configuração de proxy para funções do Lambda definidas pelo usuário pelas variáveis de ambiente http_proxy, https_proxy e no_proxy. Elas podem ser acessadas conforme mostrado no trecho Python a seguir.

import os print(os.environ['http_proxy'])

Use a mesma letra que a variável definida em seu ambiente, por exemplo, todas minúsculas http_proxy ou todas maiúsculas HTTP_PROXY. Para essas variáveis, o AWS IoT Greengrass é compatível com ambas.

nota

A maioria das bibliotecas comuns usadas para fazer conexões (como boto3 ou cURL e pacotes requests python) usam essas variáveis de ambiente por padrão.

 

O núcleo está em um loop infinito de desconexão e conexão. O arquivo runtime.log contém uma série contínua de entradas de conexão e desconexão.

Solução: isso pode acontecer quando outro dispositivo é codificado para usar o nome da coisa do núcleo como o ID de cliente para conexões MQTT com o AWS IoT. Conexões simultâneas na mesma Região da AWS e Conta da AWS devem usar IDs de cliente exclusivos. Por padrão, o núcleo usa o nome da coisa do núcleo como o ID do cliente para essas conexões.

Para resolver esse problema, você pode alterar o ID de cliente usado por outro dispositivo para a conexão (recomendado) ou substituir o valor padrão para o núcleo.

Para substituir o ID de cliente padrão para o dispositivo de núcleo
  1. Execute o comando a seguir para interromper o daemon do Greengrass:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. Abra greengrass-root/config/config.json para editar como o usuário su.

  3. No objeto coreThing, adicione a propriedade coreClientId e defina o valor como o ID de cliente personalizado. O valor deve ter entre 1 e 128 caracteres. Ele deve ser exclusivo na Região da AWS atual para a Conta da AWS.

    "coreClientId": "MyCustomClientId"
  4. Inicie o daemon.

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

Erro: não foi possível iniciar o contêiner do lambda. container_linux.go:259: o início do processo do contêiner causou "process_linux.go:345: o init do contêiner causou \"rootfs_linux.go:62: montagem de \\\"proc\\\" para rootfs \\\"

Solução: em algumas plataformas, você pode ver esse erro em runtime.log quando o AWS IoT Greengrass tenta montar o sistema de arquivos /proc para criar um contêiner do Lambda. Ou você pode ver erros semelhantes, como operation not permitted ou EPERM. Esses erros podem ocorrer mesmo se os testes forem executados na plataforma pela passagem do script do verificador de dependências.

Tente uma das seguintes soluções possíveis:

  • Habilite a opção CONFIG_DEVPTS_MULTIPLE_INSTANCES no kernel do Linux.

  • Defina as opções de montagem /proc no host como rw,relatim apenas.

  • Atualize o kernel do Linux para a versão 4.9 ou posterior.

nota

Esse problema não está relacionado à montagem de /proc para acesso a recursos locais.

 

[ERRO]-erro de runtime: não é possível iniciar o contêiner do lambda. {"errorString”: “falha ao inicializar montagens do contêiner: falha ao mascarar a raiz do greengrass no diretório superior de sobreposição: falha ao criar o dispositivo de máscara no diretório <ggc-path>: o arquivo já existe"}

Solução: esse erro pode ser visto em runtime.log quando a implantação falhar. Esse erro ocorre se uma função do Lambda no grupo do AWS IoT Greengrass não conseguir acessar o diretório /usr no sistema de arquivos do núcleo.

Para resolver esse problema, adicione um recurso de volume local para o grupo e implante o grupo. Esse recurso deve:

  • Especificar o /usr como o caminho de origem e caminho de destino.

  • Adicionar automaticamente as permissões de grupo de SO do grupo Linux que possui o recurso.

  • Ser afiliado à função do Lambda e permitir acesso somente leitura.

 

[ERROR]-Deployment failed. {"deploymentId": "<deployment-id>", "errorString": "container test process with pid <pid> failed: estado de processamento do contêiner: exit status 1"}

Solução: esse erro pode ser visto em runtime.log quando a implantação falhar. Esse erro ocorre se uma função do Lambda no grupo do AWS IoT Greengrass não conseguir acessar o diretório /usr no sistema de arquivos do núcleo.

Você pode confirmar se esse é o caso verificando em GGCanary.log se há erros adicionais. Se a função do Lambda não puder acessar o diretório /usr, GGCanary.log conterá o seguinte erro:

[ERROR]-standard_init_linux.go:207: exec user process caused "no such file or directory"

Para resolver esse problema, adicione um recurso de volume local para o grupo e implante o grupo. Esse recurso deve:

  • Especificar o /usr como o caminho de origem e caminho de destino.

  • Adicionar automaticamente as permissões de grupo de SO do grupo Linux que possui o recurso.

  • Ser afiliado à função do Lambda e permitir acesso somente leitura.

 

Solução: esse erro pode ser visto no arquivo runtime.log quando o software AWS IoT Greengrass Core não iniciar. Esse problema pode ser mais comum em sistemas operacionais Debian.

Para resolver esse problema, faça o seguinte:

  1. Atualize o software AWS IoT Greengrass Core para v1.9.3 ou posterior. Isso deve resolver esse problema automaticamente.

  2. Se você ainda receber esse erro depois de atualizar o software AWS IoT Greengrass Core, defina a propriedade system.useOverlayWithTmpfs como true no arquivo config.json.

    exemplo Exemplo
    { "system": { "useOverlayWithTmpfs": true }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }
nota

A versão do software do núcleo do AWS IoT Greengrass é exibida na mensagem de erro. Para encontrar sua versão de kernel do Linux, execute uname -r.

 

Erro: [DEPURAÇÃO] - Falha ao obter rotas. Descarte da mensagem.

Solução: verifique as assinaturas no grupo do e certifique-se de que a assinatura listada na mensagem [DEBUG] exista.

 

Error: [Errno 24] Too many open <lambda-function>,[Errno 24] Too many open files

Solução: Você pode ver esse erro no arquivo de log da função do Lambda se a função instancia StreamManagerClient no manipulador de funções. Recomendamos que você crie o cliente fora do manipulador. Para ter mais informações, consulte Usar o StreamManagerClient para trabalhar com streams.

 

Erro: o servidor ds falhou ao iniciar a recepção do soquete: listen unix <ggc-path>/ggc/socket/greengrass_ipc.sock: bind: argumento inválido

Solução: esse erro pode ser visto quando o software de núcleo do AWS IoT Greengrass não iniciar. Esse erro ocorre quando o software AWS IoT Greengrass Core é instalado em uma pasta com um caminho de arquivo longo. Reinstale o software AWS IoT Greengrass Core em uma pasta com um caminho de arquivo com menos de 79 bytes, se você não usar um diretório de gravação, ou 83 bytes, se usar um diretório de gravação.

[INFO] (Copiadora) aws.greengrass. StreamManager: robusta. Causado por: com.fasterxml.jackson.databind. JsonMappingException: Instantâneo excede o instante mínimo ou máximo

Ao atualizar o software AWS IoT Greengrass Core para a v1.11.3, você pode ver o seguinte erro nos registros do gerenciador de fluxo se o gerenciador de fluxo falhar ao iniciar.

2021-07-16T00:54:58.568Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: com.fasterxml.jackson.databind.JsonMappingException: Instant exceeds minimum or maximum instant (through reference chain: com.amazonaws.iot.greengrass.streammanager.export.PersistedSuccessExportStatesV1["lastExportTime"]). {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING} 2021-07-16T00:54:58.579Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: java.time.DateTimeException: Instant exceeds minimum or maximum instant. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}

Se você estiver usando uma versão do software AWS IoT Greengrass Core anterior à v1.11.3 e quiser atualizar para uma versão posterior, use uma atualização OTA para atualizar para a v1.11.4.

GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key

Quando você executa apt update em um dispositivo em que você instalou o software AWS IoT Greengrass Core a partir de um repositório APT, você pode ver o seguinte erro.

Err:4 https://dnw9lb6lzp2d8.cloudfront.net stable InRelease The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key Reading package lists... Done W: GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key

Esse erro ocorre porque AWS IoT Greengrass não oferece mais a opção de instalar ou atualizar o software AWS IoT Greengrass Core a partir do repositório APT. Para executar apt update com sucesso, remova o repositório AWS IoT Greengrass da lista de fontes do dispositivo.

sudo rm /etc/apt/sources.list.d/greengrass.list sudo apt update

Problemas de implantação

Use as seguintes informações para ajudar a solucionar os problemas de implantação.

Problemas

 

Sua implantação atual não funciona e você deseja reverter para uma implantação anterior que funcione.

Solução: use o console do AWS IoT ou a API do AWS IoT Greengrass para reimplantar uma implantação anterior que funcione. Isso implanta a versão do grupo correspondente no dispositivo de núcleo.

Para reimplantar uma implantação (console)
  1. Na página de configuração do grupo, selecione a guia Implantações. Esta página exibe o histórico de implantação do grupo, incluindo a data e a hora, a versão do grupo e o status de cada tentativa de implantação.

  2. Encontre a linha que contém a implantação que você deseja reimplantar. Selecione a implantação que você deseja reimplantar e selecione Reimplantar.

    A página Deployments (Implantações) mostrando a ação Re-Deploy (Reimplantar) para uma implantação.
Para reimplantar uma implantação (CLI)
  1. Use ListDeploymentspara encontrar o ID da implantação que você deseja reimplantar. Por exemplo: .

    aws greengrass list-deployments --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7

    O comando retorna a lista de implantações para o grupo.

    { "Deployments": [ { "DeploymentId": "8d179428-f617-4a77-8a0c-3d61fb8446a6", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2:123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/8dd1d899-4ac9-4f5d-afe4-22de086efc62", "CreatedAt": "2019-07-01T20:56:49.641Z" }, { "DeploymentId": "f8e4c455-8ac4-453a-8252-512dc3e9c596", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/4ad66e5d-3808-446b-940a-b1a788898382", "CreatedAt": "2019-07-01T20:41:47.048Z" }, { "DeploymentId": "e4aca044-bbd8-41b4-b697-930ca7c40f3e", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/1f3870b6-850e-4c97-8018-c872e17b235b", "CreatedAt": "2019-06-18T15:16:02.965Z" } ] }
    nota

    Esses comandos da AWS CLI usam valores de exemplo para o grupo e o ID de implantação. Ao executar os comandos, certifique-se de substituir os valores de exemplo.

  2. Use CreateDeploymentpara reimplantar a implantação de destino. Defina o tipo de implantação como Redeployment. Por exemplo: .

    aws greengrass create-deployment --deployment-type Redeployment \ --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7 \ --deployment-id f8e4c455-8ac4-453a-8252-512dc3e9c596

    O comando retorna o ARN e o ID da nova implantação.

    { "DeploymentId": "f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2", "DeploymentArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/deployments/f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2" }
  3. Use GetDeploymentStatuspara obter o status da implantação.

 

Você verá o erro de implantação 403 Forbidden nos logs.

Solução: verifique se a política do AWS IoT Greengrass Core na nuvem inclui "greengrass:*" como uma ação permitida.

 

Ocorre um ConcurrentDeployment erro quando você executa o comando create-deployment pela primeira vez.

Solução: uma implantação pode estar em andamento. Você pode executar get-deployment-status para verificar se a implantação foi criada. Se ela não tiver sido criada, tente novamente.

 

Erro: O Greengrass não está autorizado a assumir o perfil de serviço associado a essa conta ou o erro: Falha: perfil de serviço TES não está associado a essa conta.

Solução: esse erro pode ser visto quando a implantação falhar. Verifique se um perfil de serviço do Greengrass está associado à sua Conta da AWS na Região da AWS atual. Para obter mais informações, consulte Gerenciar o perfil de serviço do Greengrass (CLI) ou Gerenciar o perfil de serviço do Greengrass (console).

 

Erro: não é possível executar a etapa de download na implantação. erro ao fazer download: error ao fazer download do arquivo de definição de grupo: ... x509: o certificado expirou ou ainda não é válido

Solução: esse erro pode ser visto em runtime.log quando a implantação falhar. Se você receber um erro Deployment failed contendo a mensagem x509: certificate has expired or is not yet valid, verifique o relógio do dispositivo. Os certificados TLS e X.509 fornecem uma base segura para a criação de sistemas de IoT, mas exigem tempos precisos em servidores e clientes. Os dispositivos de IoT devem ter a hora correta (em até 15 minutos) antes de tentarem se conectar ao AWS IoT Greengrass ou a outros serviços TLS que usam certificados do servidor. Para obter mais informações, consulte Usando a hora do dispositivo para validar certificados do servidor do AWS IoT no blog oficial da Internet das Coisas na AWS.

 

A implantação não é concluída.

Solução: faça o seguinte:

  • Verifique se o daemon do AWS IoT Greengrass está em execução no dispositivo de núcleo. No terminal do dispositivo de núcleo, execute os comandos a seguir para verificar se o daemon está em execução e o inicie, caso necessário.

    1. Para verificar se o daemon está em execução:

      ps aux | grep -E 'greengrass.*daemon'

      Se a saída contém uma entrada root para /greengrass/ggc/packages/1.11.6/bin/daemon, o daemon está em execução.

      A versão no caminho depende da versão do software do AWS IoT Greengrass Core que foi instalada no seu dispositivo de núcleo.

    2. Para iniciar o daemon:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  • Verifique se o dispositivo de núcleo está conectado e os endpoints de conexão do núcleo estão configurados corretamente.

 

Erro: Não foi possível encontrar executáveis java ou java8, ou o erro: falha na implantação <deployment-id>do tipo NewDeployment para grupo <group-id>Erro: trabalhador com <worker-id>falha ao inicializar com o motivo: a versão instalada do Java deve ser maior ou igual a 8

Solução: se o gerenciador de fluxo estiver habilitado para o AWS IoT Greengrass Core, você deverá instalar o Java 8 Runtime no dispositivo de núcleo antes de implantar o grupo. Para obter mais informações, consulte os requisitos para o gerenciador de fluxo. O gerenciador de fluxo é habilitado por padrão quando você usa a opção Criação de grupo padrão no console do AWS IoT.

Ou desabilite o gerenciador de fluxo e implante o grupo. Para ter mais informações, consulte Definir configurações do gerenciador de fluxofluxo (console).

 

A implantação não é concluída, e runtime.log contém várias entradas "esperar 1s para o contêiner ser interrompido".

Solução: execute os comandos a seguir no terminal do dispositivo de núcleo para reiniciar o daemon do AWS IoT Greengrass.

cd /greengrass/ggc/core/ sudo ./greengrassd stop sudo ./greengrassd start

 

A implantação não é concluída e runtime.log contém “[ERROR]-erro de implantação do Greengrass: falha ao relatar o status de implantação para a nuvem {"deploymentId": "<deployment-id>", "errorString": "Falha ao iniciar PUT, endpoint: https://<deployment-status>, erro: Put https://<deployment-status>: proxyconnect tcp: x509: certificado assinado por autoridade desconhecida"}”

Solução: é possível visualizar esse erro em runtime.log quando o núcleo do Greengrass está configurado de modo a usar uma conexão proxy HTTPS e a cadeia de certificados do servidor de proxy não é confiável no sistema. Para tentar resolver esse problema, adicione a cadeia de certificados ao certificado raiz da CA. O núcleo do Greengrass adiciona os certificados deste arquivo ao pool de certificados usado para autenticação TLS em conexões HTTPS e MQTT com o AWS IoT Greengrass.

O exemplo a seguir mostra um certificado da CA do servidor de proxy adicionado ao arquivo de certificado raiz da CA:

# My proxy CA -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ... content of proxy CA certificate ... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- # Amazon Root CA 1 -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ... content of root CA certificate ... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----

Por padrão, o arquivo de certificado raiz da CA está localizado em /greengrass-root/certs/root.ca.pem. Para encontrar a localização no dispositivo de núcleo, verifique a propriedade crypto.caPath em config.json.

nota

greengrass-root representa o caminho no qual o software de núcleo do AWS IoT Greengrass é instalado no dispositivo. Normalmente, esse é o diretório /greengrass.

 

<path>Erro: <deployment-id><group-id>Falha na implantação do tipo NewDeployment de grupo Erro: Erro durante o processamento. a configuração do grupo é inválida: 112 ou [119 0] não têm permissão rw no arquivo:.

Solução: verifique se o grupo de proprietários do diretório <path> tem permissões de leitura e gravação no diretório.

 

Erro: < list-of-function-arns > estão configurados para serem executados como root, mas o Greengrass não está configurado para executar funções Lambda com permissões de root.

Solução: esse erro pode ser visto em runtime.log quando a implantação falhar. Certifique-se de ter configurado o AWS IoT Greengrass para permitir que as funções do Lambda sejam executadas com permissões raiz. Altere o valor de allowFunctionsToRunAsRoot em greengrass_root/config/config.json para yes ou altere a função do Lambda para ser executada como outro usuário/grupo. Para ter mais informações, consulte Executar uma função do Lambda como raiz.

 

Erro: Implantação <deployment-id>do tipo NewDeployment <group-id>falha de grupo Erro: Erro de implantação do Greengrass: não foi possível executar a etapa de download na implantação. erro durante o processamento: não foi possível carregar o arquivo de grupo baixado: não foi possível encontrar o UID com base no nome do usuário, nome de usuário: ggc_user: user: unknown user ggc_user.

Solução: se a identidade de acesso padrão do grupo do AWS IoT Greengrass usar as contas do sistema padrão, o usuário ggc_user e o grupo ggc_group deverão estar presentes no dispositivo. Para obter instruções que mostram como adicionar o usuário e o grupo, consulte esta etapa. Certifique-se de inserir os nomes exatamente como é mostrado.

 

Erro: [ERRO]-erro de runtime: não é possível iniciar o contêiner do lambda. {"errorString”: “falha ao inicializar montagens do contêiner: falha ao mascarar a raiz do greengrass no diretório superior de sobreposição: falha ao criar o dispositivo de máscara no diretório <ggc-path>: o arquivo já existe"}

Solução: esse erro pode ser visto em runtime.log quando a implantação falhar. Esse erro ocorre se uma função do Lambda no grupo do Greengrass não conseguir acessar o diretório /usr no sistema de arquivos do núcleo. Para resolver esse problema, adicione um recurso de volume local para o grupo e implante o grupo. O recurso deve:

  • Especificar o /usr como o caminho de origem e caminho de destino.

  • Adicionar automaticamente as permissões de grupo de SO do grupo Linux que possui o recurso.

  • Ser afiliado à função do Lambda e permitir acesso somente leitura.

 

Erro: falha na implantação <deployment-id>do tipo de grupo <group-id>Erro: falha no início do processo: container_linux.go:259: iniciar o processo do contêiner causou “process_linux.go:250: a execução do processo exec sents NewDeployment for init causou\" wait: nenhum processo secundário\ "”.

Solução: esse erro pode ser visto quando a implantação falhar. Repita a implantação.

 

Erro: [WARN]-MQTT[client] dial tcp: lookup <host-prefix>-ats.iot.<region>.amazonaws.com: esse host não existe… [ERROR]-Greengrass deployment error: failed to report deployment status back to cloud … net/http: solicitação cancelada enquanto aguardava a conexão (Client.Timeout excedido enquanto aguardava cabeçalhos)

Solução: você poderá ver esse erro se estiver usando o systemd-resolved, que habilita a configuração DNSSEC por padrão. Como resultado, muitos domínios públicos não são reconhecidos. As tentativas de acessar o endpoint do AWS IoT Greengrass não conseguem encontrar o host, portanto, suas implantações permanecem no estado In Progress.

Você pode usar os comandos e a saída a seguir para testar esse problema. Substitua o espaço reservado da região nos endpoints pela sua Região da AWS.

$ ping greengrass-ats.iot.region.amazonaws.com ping: greengrass-ats.iot.region.amazonaws.com: Name or service not known
$ systemd-resolve greengrass-ats.iot.region.amazonaws.com greengrass-ats.iot.region.amazonaws.com: resolve call failed: DNSSEC validation failed: failed-auxiliary

Uma solução possível é desabilitar o DNSSEC. Quando o DNSSEC é false, as pesquisas de DNS não são validadas pelo DNSSEC. Para obter mais informações, consulte este problema conhecido para o systemd.

  1. Adicione DNSSEC=false a /etc/systemd/resolved.conf.

  2. Reinicie o systemd-resolved.

Para obter informações sobre resolved.conf e DNSSEC, execute man resolved.conf no seu terminal.

 

Problemas para criar grupo/criar função

Use as seguintes informações para ajudar a solucionar problemas com a criação de uma função do Lambda ou do grupo do AWS IoT Greengrass.

 

Erro: Sua configuração 'IsolationMode' para o grupo é inválida.

Solução: esse erro ocorre quando o valor de IsolationMode no DefaultConfig de function-definition-version não é compatível. Os valores compatíveis são GreengrassContainer e NoContainer.

 

Erro: Sua configuração 'IsolationMode' para a função com arn <function-arn>é inválida.

Solução: esse erro ocorre quando o valor de IsolationMode no <function-arn> da function-definition-version não é compatível. Os valores compatíveis são GreengrassContainer e NoContainer.

 

Erro: a MemorySize configuração da função com arn <function-arn>não é permitida em IsolationMode =NoContainer.

Solução: esse erro ocorre quando você especifica um valor MemorySize e opta por executar sem conteinerização. As funções do Lambda que são executadas sem conteinerização não podem ter limites de memória. Você pode remover o limite ou pode alterar a função do Lambda para que ela seja executada em um contêiner AWS IoT Greengrass.

 

Erro: o acesso à configuração do Sysfs para a função com arn <function-arn>não é permitido em =. IsolationMode NoContainer

Solução: esse erro ocorre quando você especifica true para AccessSysfs e opta por executar sem conteinerização. As funções do Lambda executadas sem conteinerização devem ter seu código atualizado para acessar o sistema de arquivos diretamente e não podem usar AccessSysfs. Você pode especificar um valor false para AccessSysfs ou alterar a função do Lambda para que seja executada em um contêiner do AWS IoT Greengrass.

 

Erro: a MemorySize configuração da função com arn <function-arn>é necessária em IsolationMode =GreengrassContainer.

Solução: esse erro ocorre por não ter especificado um limite de MemorySize para uma função do Lambda que está em execução em um contêiner do AWS IoT Greengrass. Para resolver o erro, especifique um valor de MemorySize.

 

Erro: a função <function-arn>se refere ao recurso do tipo <resource-type>que não é permitido em IsolationMode =NoContainer.

Solução: não é possível acessar os tipos de recursos Local.Device, Local.Volume, ML_Model.SageMaker.Job, ML_Model.S3_Object ou S3_Object.Generic_Archive ao executar uma função do Lambda sem conteinerização. Se precisar desses tipos de recursos, você deverá executar em um contêiner do AWS IoT Greengrass. Você também pode acessar dispositivos locais diretamente ao executar sem conteinerização alterando o código em sua função do Lambda.

 

Erro: A configuração de execução para a função com o <function-arn> não é permitida.

Solução: esse erro ocorre ao criar uma função do Lambda do sistema com GGIPDetector ou GGCloudSpooler e especificar uma configuração IsolationMode ou RunAs. Você deve omitir os parâmetros Execution para essa função do Lambda do sistema.

 

Problemas de descoberta

Use as informações a seguir para ajudar a solucionar os problemas com o serviço de descoberta do AWS IoT Greengrass.

 

Erro: o dispositivo é membro de muitos grupos; os dispositivos não podem estar em mais de 10 grupos

Solução: esta é uma limitação conhecida. Um dispositivo cliente pode ser membro de até 10 grupos.

 

Problemas com recursos de machine learning

Use as informações a seguir para ajudar a solucionar problemas com recursos de machine learning.

 

InvalidML ModelOwner - GroupOwnerSetting é fornecido no recurso do modelo ML, mas GroupOwner ou não GroupPermission está presente

Solução: você receberá esse erro se um recurso de aprendizado de máquina contiver o ResourceDownloadOwnerSettingobjeto, mas o necessário GroupOwner ou a GroupPermission propriedade não estiverem definidos. Para resolver esse problema, defina a propriedade ausente.

 

NoContainer a função não pode configurar a permissão ao anexar recursos do Machine Learning. <function-arn>refere-se ao recurso de aprendizado de máquina <resource-id>com permissão <ro/rw> na política de acesso a recursos.

Solução: você receberá esse erro se uma função não conteinerizada do Lambda especificar permissões no nível da função para um recurso de machine learning. As funções não conteinerizadas devem herdar permissões das permissões de proprietário do recurso definidas no recurso de machine learning. Para resolver esse problema, selecione herdar permissões de proprietário do recurso (console) ou rremover as permissões da política de acesso aos recursos da função do Lambda (API) .

 

Função <function-arn>se refere ao recurso de Machine Learning <resource-id>sem permissão em ambos ResourceAccessPolicy os recursos OwnerSetting.

Solução: você receberá esse erro se as permissões para o recurso de machine learning não estiverem configuradas para a função anexada do Lambda ou para o recurso. Para resolver esse problema, configure as permissões na ResourceAccessPolicypropriedade da função Lambda ou na OwnerSettingpropriedade do recurso.

 

A função <function-arn>se refere ao recurso de Machine Learning <resource-id>com a permissão\ "rw\”, enquanto a configuração do proprietário do recurso permite GroupPermission apenas\ "ro\”.

Solução: você receberá esse erro se as permissões de acesso definidas para a função anexada do Lambda excederem as permissões de proprietário do recurso definidas para o recurso de machine learning. Para resolver esse problema, defina permissões mais restritivas para a função do Lambda ou permissões menos restritivas para o proprietário do recurso.

 

NoContainer A função <function-arn>se refere aos recursos do caminho de destino aninhado.

Solução: você receberá esse erro se vários recursos de machine learning anexados a uma função não conteinerizada do Lambda utilizarem o mesmo caminho de destino ou um caminho de destino aninhado. Para resolver esse problema, especifique caminhos de destino separados para os recursos.

 

O Lambda <function-arn> ganha acesso ao recurso <resource-id> compartilhando o mesmo ID do proprietário do grupo

Solução:‭‬ você receberá esse erro em ‭runtime.log se o mesmo grupo de sistemas operacionais for especificado como a identidade da função do Lambda ‭‬Executar como‭‬ e o ‭‬proprietário do recurso‭‬ de um recurso de machine learning, mas o recurso não estiver vinculado à função do Lambda.‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬ Essa configuração concede permissões implícitas à função do Lambda que podem ser usadas para acessar o recurso sem autorização do AWS IoT Greengrass.

Para resolver esse problema, use um grupo de SO diferente para uma das propriedades ou anexe o recurso de machine learning à função do Lambda.

Problemas do núcleo do AWS IoT Greengrass no Docker

Use as informações a seguir para ajudá-lo a solucionar problemas comuns com a execução de um AWS IoT Greengrass Core em um contêiner do Docker.

 

Erro: Opções desconhecidas: -no-include-email.

Solução: este erro pode ocorrer ao executar o comando aws ecr get-login. Verifique se você tem a versão mais recente da AWS CLI instalada (por exemplo, execute: pip install awscli --upgrade --user). Se você estiver usando o Windows e tiver instalado a CLI usando o instalador MSI, repita o processo de instalação. Para obter informações, consulte Instalar a AWS Command Line Interface no Microsoft Windows no Guia do usuário do AWS Command Line Interface.

 

Aviso: IPv4 está desabilitado. As redes não funcionarão.

Solução: esse aviso ou uma mensagem semelhante pode ser recebida ao executar o AWS IoT Greengrass em um computador Linux. Habilite o encaminhamento de rede IPv4 conforme descrito nesta etapa. A implantação da nuvem e as comunicações MQTT do AWS IoT Greengrass não funcionam quando o encaminhamento IPv4 não está habilitado. Para obter mais informações, consulte Configurar parâmetros de kernel com namespace (sysctls) em runtime na documentação do Docker.

 

Erro: Um firewall está bloqueando o compartilhamento de arquivos entre janelas e os contêineres.

Solução: esse erro ou uma mensagem Firewall Detected pode ser recebida ao executar o Docker em um computador Windows. Esse erro também poderá ocorrer se você estiver conectado em uma rede privada virtual (VPN), e as configurações de rede estiverem impedindo a montagem da unidade compartilhada. Nesse caso, desative a VPN e execute novamente o contêiner do Docker.

 

Erro: ocorreu um erro (AccessDeniedException) ao chamar a GetAuthorizationToken operação: Usuário: arn:aws:iam: ::user/ <account-id><user-name>não está autorizado a executar: ecr: on resource: * GetAuthorizationToken

É possível que você receba esse erro ao executar o comando aws ecr get-login-password se não tiver permissões suficientes para acessar um repositório do Amazon ECR. Para obter mais informações, consulte Exemplos de políticas de repositório do Amazon ECR e Como acessar um repositório do Amazon ECR no Guia do usuário do Amazon ECR.

 

Erro: Não é possível criar um contêiner para o serviço do greengrass: Conflito. O nome do contêiner “/aws-iot-greengrass" já está em uso.

Solução: isso pode ocorrer quando o nome do contêiner é usado em um contêiner mais antigo. Para resolver esse problema, remova o antigo contêiner do Docker executando o seguinte comando:

docker rm -f $(docker ps -a -q -f "name=aws-iot-greengrass")

 

Erro: [FATAL]-Falha ao redefinir o namespace de montagem do thread devido a um erro inesperado: "operação não permitida". Para manter a consistência, o GGC travará e precisará ser reiniciado manualmente.

Solução: esse erro em runtime.log pode ocorrer ao tentar implantar uma função do Lambda GreengrassContainer em um AWS IoT Greengrass em execução em um contêiner do Docker. Atualmente, apenas funções do Lambda do NoContainer podem ser implantadas em um contêiner do Docker do Greengrass.

Para resolver esse problema, certifique-se de que todas as funções do Lambda estão no modo NoContainer e inicie uma nova implantação. Em seguida, ao iniciar o contêiner, não salve o diretório existente deployment no contêiner do Docker do AWS IoT Greengrass Core. Em vez disso, crie um diretório deployment em seu lugar e salve-o no contêiner do Docker. Isso permite que o novo contêiner do Docker receba a implantação mais recente com funções do Lambda sendo executadas no modo NoContainer.

Para ter mais informações, consulte Como executar o AWS IoT Greengrass em um contêiner do Docker.

Solução de problemas com logs

Você pode definir as configurações de registro para um grupo do Greengrass, como enviar registros para CloudWatch Logs, armazenar registros no sistema de arquivos local ou ambos. Para obter informações detalhadas ao solucionar problemas, altere temporariamente o nível de log para DEBUG. As alterações nas configurações de registro em log entram em vigor quando você implanta o grupo. Para ter mais informações, consulte Configurar o registro em log para o AWS IoT Greengrass.

No sistema de arquivos local, o AWS IoT Greengrass armazena logs nos locais a seguir. É necessário ter permissões raiz para ler os logs no sistema de arquivos.

greengrass-root/ggc/var/log/crash.log

Mostra as mensagens geradas quando um AWS IoT Greengrass Core trava.

greengrass-root/ggc/var/log/system/runtime.log

Mostra mensagens sobre qual componente apresentou falha.

greengrass-root/ggc/var/log/system/

Contém todos os logs dos componentes do sistema do AWS IoT Greengrass, como o gerenciador de certificado e o gerenciador de conexão. Usando as mensagens em ggc/var/log/system/ e ggc/var/log/system/runtime.log, você conseguirá descobrir qual erro ocorreu nos componentes do sistema do AWS IoT Greengrass.

greengrass-root/ggc/var/log/system/localwatch/

Contém os registros do AWS IoT Greengrass componente que gerencia o upload dos registros do Greengrass para o Logs CloudWatch . Se você não conseguir visualizar os logins do Greengrass CloudWatch, poderá usar esses registros para solucionar problemas.

greengrass-root/ggc/var/log/user/

Contém todos os logs das funções do Lambda definidas pelo usuário. Marque essa pasta para encontrar mensagens de erro locais de suas funções do Lambda.

nota

Por padrão, greengrass-root é o diretório /greengrass. Caso um diretório de gravação seja configurado, os logs estão nesse diretório.

Se os registros estiverem configurados para serem armazenados na nuvem, use CloudWatch Registros para ver as mensagens de registro. crash.logé encontrado somente nos registros do sistema de arquivos no dispositivo AWS IoT Greengrass principal.

Se AWS IoT estiver configurado para gravar registros CloudWatch, verifique esses registros se ocorrerem erros de conexão quando os componentes do sistema tentarem se conectarAWS IoT.

Para obter mais informações sobre registro em log do AWS IoT Greengrass, consulte Monitoramento com logs do AWS IoT Greengrass.

nota

Os logs do software do AWS IoT Greengrass Core v1.0 são armazenados no diretório greengrass-root/var/log.

Solução de problemas de armazenamento

Quando o armazenamento de arquivo local estiver cheio, pode ser que alguns componentes comecem a apresentar falha:

  • As atualizações de shadow locais não ocorrem.

  • Novos certificados de servidor MQTT do AWS IoT Greengrass Core não podem ser obtidos por download localmente.

  • As implantações apresentam falha.

Você sempre deve estar ciente da quantidade de espaço livre disponível localmente. Você pode calcular o espaço livre com base no tamanho das funções do Lambda implantadas, na configuração de registro em log (consulte Solução de problemas com logs) e no número de shadows armazenados localmente.

Solução de problemas com mensagens

Todas as mensagens enviadas localmente no AWS IoT Greengrass são enviadas com QoS 0. Por padrão, o AWS IoT Greengrass armazena mensagens em uma fila na memória. Portanto, as mensagens não processadas são perdidas quando o núcleo do Greengrass é reiniciado, por exemplo, após a implantação de um grupo ou a reinicialização de um dispositivo. No entanto, você pode configurar o AWS IoT Greengrass (v1.6 ou posterior) para armazenar em cache mensagens no sistema de arquivos, de maneira que elas persistam entre reinicializações do núcleo. Você também pode configurar o tamanho da fila. Se você configurar um tamanho de fila, verifique se ela é maior que ou igual a 262.144 bytes (256 KB). Do contrário, o AWS IoT Greengrass pode não iniciar corretamente. Para ter mais informações, consulte Fila de mensagens MQTT para destinos de nuvem.

nota

Ao usar o padrão da fila na memória, recomendamos que você implante grupos ou reinicie o dispositivo quando a interrupção do serviço é a mais baixa.

Você também pode configurar o núcleo para estabelecer sessões persistentes com a AWS IoT. Isso permite ao núcleo receber mensagens enviadas da Nuvem AWS enquanto ele está off-line. Para ter mais informações, consulte Sessões persistentes do MQTT com o AWS IoT Core.

Solução de problemas de intervalo de sincronização de shadow

Os atrasos significativos na comunicação entre um dispositivo de núcleo do Greengrass e a nuvem podem causar falha na sincronização shadow devido a um tempo limite. Nesse caso, você deve ver entradas de log semelhantes às seguintes:

[2017-07-20T10:01:58.006Z][ERROR]-cloud_shadow_client.go:57,Cloud shadow client error: unable to get cloud shadow what_the_thing_is_named for synchronization. Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][WARN]-sync_manager.go:263,Failed to get cloud copy: Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][ERROR]-sync_manager.go:375,Failed to execute sync operation {what_the_thing_is_named VersionDiscontinued []}"

Uma possível correção é configurar o intervalo de tempo durante o qual seu dispositivo de núcleo aguardará uma resposta do host. Abra o arquivo config.json em greengrass-root/config e adicione um campo system.shadowSyncTimeout com um valor de tempo limite em segundos. Por exemplo: .

{ "system": { "shadowSyncTimeout": 10 }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }

Se nenhum valor shadowSyncTimeout for especificado em config.json, o padrão será de 5 segundos.

nota

Para o software do AWS IoT Greengrass Core v1.6 e anteriores, o padrão shadowSyncTimeout será 1 segundo.

Confira o AWS re:Post

Se não conseguir encontrar ou resolver o problema usando as informações de solução de problemas neste tópico, você poderá pesquisar problemas relacionados no Solução de problemas de AWS IoT Greengrass ou verificar a tag AWS IoT Greengrass do re:Post AWS ou publicar uma nova pergunta. Os membros da equipe do AWS IoT Greengrass monitoram ativamente o re:Post AWS.