O 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, o AWS IoT Greengrass V1 não lançará atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam com o 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 adicionará novos recursos significativos e suporte para plataformas adicionais.
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:
-
Instale os binários que são apropriados para sua arquitetura. Para obter mais informações, consulte Software de núcleo do AWS IoT Greengrass.
-
Verifique se o seu dispositivo de núcleo tem armazenamento local disponível. Para ter mais informações, consulte Solução de problemas de armazenamento.
-
Verifique se há mensagens de erro em
runtime.log
ecrash.log
. Para ter mais informações, consulte Solução de problemas com logs.
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 CaPath, CertPath ou KeyPath. O processo do daemon do Greengrass com [pid = <pid>] foi desativado.
- Erro: Falha ao analisar /<greengrass-root>/config/config.json.
- Erro: ocorreu um erro ao gerar a configuração do TLS: ErrUnknownURIScheme
- Erro: Falha ao iniciar o tempo de execução: não foi possível iniciar os operadores: o teste de contêiner expirou.
- Erro: Falha ao invocar PutLogEvents no Cloudwatch local, logGroup: /GreengrassSystem/connection_manager, erro: RequestError: falha no envio de solicitação causada por: Post http://<path>/cloudwatch/logs/: dial tcp <address>: getsockopt: conexão recusada, resposta: { }.
- 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.
- 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.
- Erro: Tamanho do spool deve ser pelo menos 262.144 bytes.
- Erro: [ERRO] – erro de mensagens na nuvem: Ocorreu um erro ao tentar publicar uma mensagem. {"errorString": "operation timed out"}
- 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\\\"\"".
- 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.
- O shadow do dispositivo não sincroniza com a nuvem.
- ERRO: não foi possível aceitar a conexão TCP. accept tcp [::]:8000: accept4: muitos arquivos abertos.
- 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\\\"\"".
- Aviso: WARN]-[5]GK Remote: Erro ao recuperar os dados de chave pública: ErrPrincipalNotConfigured: chave privada para MqttCertificate não está definida.
- 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.
- 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.
- 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.
- 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 \\\"
- [ERROR]-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"}
- [ERROR]-Deployment failed. {"deploymentId": "<deployment-id>", "errorString": "container test process with pid <pid> failed: estado de processamento do contêiner: exit status 1"}
- Erro: [ERROR]-erro de execução em tempo de execução: não foi possível iniciar o contêiner lambda. {"errorString": "falha ao inicializar montagens do contêiner: falha ao criar fs de sobreposição para contêiner: falha na sobreposição de montagem em /greengrass/ggc/packages/<ggc-version>/rootfs/merged falha: falha ao montar com args source=\"no_source\" dest=\"/greengrass/ggc/packages/<ggc-version>/rootfs/merged\" fstype=\"overlay\" flags=\"0\" data=\"lowerdir=/greengrass/ggc/packages/<ggc-version>/dns:/,upperdir=/greengrass/ggc/packages/<ggc-version>/rootfs/upper,workdir=/greengrass/ggc/packages/<ggc-version>/rootfs/work\": muitos níveis de links simbólicos"}
- Erro: [DEPURAÇÃO] - Falha ao obter rotas. Descarte da mensagem.
- Error: [Errno 24] Too many open <lambda-function>,[Errno 24] Too many open files
- 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
- [INFO] (Copiadora) aws.greengrass.StreamManager: stdout. Causado por: com.fasterxml.jackson.databind.JsonMappingException: o instante excede o instante mínimo ou máximo
- GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
Erro: O arquivo de configuração não tem 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 /
) e verifique o formato JSON. Por exemplo, certifique-se de que as vírgulas estão sendo usadas de forma correta.greengrass-root
/config
Erro: ocorreu um erro ao gerar a configuração do TLS: ErrUnknownURIScheme
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 /
) e verifique a seção greengrass-root
/configcrypto
. 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 /
). No objeto greengrass-root
/configruntime
, 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 }, ...
Erro: Falha ao invocar PutLogEvents no Cloudwatch local, logGroup: /GreengrassSystem/connection_manager, erro: RequestError: falha no envio de solicitação causada por: Post http://<path>/cloudwatch/logs/: dial tcp <address>: 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 /
), substitua o conteúdo do arquivo por um objeto JSON vazio (greengrass-root
/ggc/deployment/group{}
) 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
na função de serviço do Greengrass. Se a função 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 os dados de chave pública: ErrPrincipalNotConfigured: 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 Entidades principais de segurança do núcleo do AWS IoT Greengrass.
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: esse erro pode ser visto quando uma atualização OTA (over-the-air) falhar. 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
-
Execute o comando a seguir para interromper o daemon do Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Abra
para editar como o usuário su.greengrass-root
/config/config.json -
No objeto
coreThing
, adicione a propriedadecoreClientId
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"
-
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 comorw,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.
[ERROR]-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.
Erro: [ERROR]-erro de execução em tempo de execução: não foi possível iniciar o contêiner lambda. {"errorString": "falha ao inicializar montagens do contêiner: falha ao criar fs de sobreposição para contêiner: falha na sobreposição de montagem em /greengrass/ggc/packages/<ggc-version>/rootfs/merged falha: falha ao montar com args source=\"no_source\" dest=\"/greengrass/ggc/packages/<ggc-version>/rootfs/merged\" fstype=\"overlay\" flags=\"0\" data=\"lowerdir=/greengrass/ggc/packages/<ggc-version>/dns:/,upperdir=/greengrass/ggc/packages/<ggc-version>/rootfs/upper,workdir=/greengrass/ggc/packages/<ggc-version>/rootfs/work\": muitos níveis de links simbólicos"}
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:
-
Atualize o software AWS IoT Greengrass Core para v1.9.3 ou posterior. Isso deve resolver esse problema automaticamente.
-
Se você ainda receber esse erro depois de atualizar o software AWS IoT Greengrass Core, defina a propriedade
system.useOverlayWithTmpfs
comotrue
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: stdout. Causado por: com.fasterxml.jackson.databind.JsonMappingException: o instante 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.
- Você verá o erro de implantação 403 Forbidden nos logs.
- Um erro ConcurrentDeployment ocorre quando você executa o comando create-deployment pela primeira vez.
- 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.
- 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
- A implantação não é concluída.
- Erro: não foi possível localizar executáveis java ou java8, ou o erro: Implantação <deployment-id> do tipo NewDeployment para o grupo <group-id> falhou erro: o operador com o <worker-id> falhou ao inicializar com a razão Versão Java instalada deve ser maior ou igual a 8
- A implantação não é concluída, e runtime.log contém várias entradas "esperar 1s para o contêiner ser interrompido".
- 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"}”
- Erro: falha na implantação <deployment-id> do tipo NewDeployment para o grupo <group-id>: erro durante o processamento. group config é inválido: 112 ou [119 0] não têm permissão rw no arquivo: <path>.
- Erro: <list-de-function-arns> estão configurados para serem executados como raiz, mas o Greengrass não está configurado para executar funções do Lambda com permissões raiz.
- Erro: falha na implantação <deployment-id> do tipo NewDeployment para o grupo <group-id>: erro de implantação do Greengrass: não é possível executar a etapa de download na implantação. erro durante o processamento: não é possível carregar o arquivo do grupo baixado: não foi possível encontrar UID com base no nome do usuário, userName: ggc_user: user: usuário desconhecido ggc_user.
- 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"}
- Erro: Erro de implantação <deployment-id> do tipo NewDeployment para o grupo <group-id>: falha no início do processo: container_linux.go:259: início do processo do contêiner causou "process_linux.go:250: a execução do processo exec setns para init causou \"espera: nenhum processo filho\"".
- 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)
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)
-
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.
-
Encontre a linha que contém a implantação que você deseja reimplantar. Selecione a implantação que você deseja reimplantar e selecione Reimplantar.
Para reimplantar uma implantação (CLI)
-
Use ListDeployments para 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.
-
Use CreateDeployment para 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" }
-
Use GetDeploymentStatus para 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.
Um erro ConcurrentDeployment ocorre 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 uma 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 uma função de serviço do Greengrass está associada à sua Conta da AWS na Região da AWS atual. Para obter mais informações, consulte Gerenciar a função de serviço do Greengrass (CLI) ou Gerenciar a função 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
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.
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.
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 localizar executáveis java ou java8, ou o erro: Implantação <deployment-id> do tipo NewDeployment para o grupo <group-id> falhou erro: o operador com o <worker-id> falhou ao inicializar com a razão Versão Java instalada 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 fluxo (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 /
. Para encontrar a localização no dispositivo de núcleo, verifique a propriedade greengrass-root
/certs/root.ca.pemcrypto.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
.
Erro: falha na implantação <deployment-id> do tipo NewDeployment para o grupo <group-id>: erro durante o processamento. group config é inválido: 112 ou [119 0] não têm permissão rw no arquivo: <path>.
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-de-function-arns> estão configurados para serem executados como raiz, mas o Greengrass não está configurado para executar funções do Lambda com permissões raiz.
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: falha na implantação <deployment-id> do tipo NewDeployment para o grupo <group-id>: erro de implantação do Greengrass: não é possível executar a etapa de download na implantação. erro durante o processamento: não é possível carregar o arquivo do grupo baixado: não foi possível encontrar UID com base no nome do usuário, userName: ggc_user: user: usuário desconhecido 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: Erro de implantação <deployment-id> do tipo NewDeployment para o grupo <group-id>: falha no início do processo: container_linux.go:259: início do processo do contêiner causou "process_linux.go:250: a execução do processo exec setns para init causou \"espera: nenhum processo filho\"".
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.rproxy.goskope.comping: greengrass-ats.iot.
region
.amazonaws.com: Name or service not known
$
systemd-resolve greengrass-ats.iot.region
.amazonaws.com.rproxy.goskope.comgreengrass-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 conhecidosystemd
.
-
Adicione
DNSSEC=false
a/etc/systemd/resolved.conf
. -
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.
Problemas
- Erro: Sua configuração “IsolationMode” para o grupo é inválida.
- Erro: Sua configuração “IsolationMode” para a função com o ARN <function-arn> é inválida.
- Erro: A configuração MemorySize para a função com o ARN <function-arn> não é permitida em IsolationMode=NoContainer.
- Erro: A configuração Access Sysfs para a função com o ARN <function-arn> não é permitida em IsolationMode=NoContainer.
- Erro: A configuração MemorySize para a função com o ARN <function-arn> é necessária em IsolationMode=GreengrassContainer.
- Erro: A função <function-arn> refere-se ao recurso do tipo <resource-type> que não é permitido em IsolationMode=NoContainer.
- Erro: A configuração de execução para a função com o <function-arn> não é permitida.
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 o 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 configuração MemorySize para a função com o 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: A configuração Access Sysfs para a função com o ARN <function-arn> não é permitida 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 configuração MemorySize para a função com o 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> refere-se 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.
Problemas
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.
Problemas
- InvalidMLModelOwner - GroupOwnerSetting é fornecido no recurso do modelo de ML, mas GroupOwner ou GroupPermission não está presente
- A função NoContainer não pode configurar permissão ao anexar recursos de Machine Learning. <function-arn> refere-se ao recurso de Machine Learning <resource-id> com permissão <ro/rw> na política de acesso aos recursos.
- A função <function-arn> refere-se ao recurso Machine Learning <resource-id> com permissão ausente em ResourceAccessPolicy e OwnerSetting.
- A função <function-arn> refere-se ao recurso de Machine Learning <resource-id> com permissão \"rw\", enquanto o proprietário do recurso que define GroupPermission permite apenas \"ro\".
- A função NoContainer <function-arn> refere-se a recursos do caminho de destino aninhado.
- O Lambda <function-arn> ganha acesso ao recurso <resource-id> compartilhando o mesmo ID do proprietário do grupo
InvalidMLModelOwner - GroupOwnerSetting é fornecido no recurso do modelo de ML, mas GroupOwner ou GroupPermission não está presente
Solução: você receberá esse erro se um recurso de machine learning contiver o objeto ResourceDownloadOwnerSetting mas a propriedade GroupOwner
ou GroupPermission
necessária não estiver definida. Para resolver esse problema, defina a propriedade ausente.
A função NoContainer não pode configurar permissão ao anexar recursos de Machine Learning. <function-arn> refere-se ao recurso de Machine Learning <resource-id> com permissão <ro/rw> na política de acesso aos 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) .
A função <function-arn> refere-se ao recurso Machine Learning <resource-id> com permissão ausente em ResourceAccessPolicy e 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 permissões na propriedade ResourceAccessPolicy para a função do Lambda ou a propriedade OwnerSetting para o recurso.
A função <function-arn> refere-se ao recurso de Machine Learning <resource-id> com permissão \"rw\", enquanto o proprietário do recurso que define GroupPermission permite 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.
A função NoContainer <function-arn> refere-se a 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.
Problemas
- Erro: Opções desconhecidas: -no-include-email
- Aviso: IPv4 está desabilitado. As redes não funcionarão.
- Erro: Um firewall está bloqueando o compartilhamento de arquivos entre janelas e os contêineres.
- Erro: ocorreu um erro (AccessDeniedException) ao chamar a operação GetAuthorizationToken: O usuário: arn:aws:iam::<account-id>:user/<user-name> não está autorizado a executar: ecr:GetAuthorizationToken no recurso: *
- 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.
- 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.
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
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 operação GetAuthorizationToken: O usuário: arn:aws:iam::<account-id>:user/<user-name> não está autorizado a executar: ecr:GetAuthorizationToken no recurso: *
É 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
É possível definir as configurações de registro em log para um grupo do Greengrass, como enviar logs para o CloudWatch Logs, armazenar logs 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/
eggc/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 componente AWS IoT Greengrass que gerencia o upload dos logs do Greengrass para o CloudWatch Logs. Se você não conseguir visualizar os logs do Greengrass no CloudWatch, poderá usá-los 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 logs forem configurados para serem armazenados na nuvem, use o CloudWatch Logs para visualizar mensagens de log. O crash.log
é encontrado apenas nos logs de sistema no dispositivo do AWS IoT Greengrass Core.
Verifique esses logs caso a AWS IoT esteja configurada para gravar logs no CloudWatch, e ocorram erros de conexão quando os componentes de sistema tentam se conectar à AWS 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
e adicione um campo greengrass-root
/configsystem.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