Solução de problemas de IDT paraAWS IoT GreengrassV2 - AWS IoT Greengrass

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

Solução de problemas de IDT paraAWS IoT GreengrassV2

IDT paraAWS IoT GreengrassA V2 grava erros em vários locais com base no tipo de erro. O IDT grava erros no console, nos arquivos de log e nos relatórios de teste.

Onde procurar erros

Erros de alto nível são exibidos no console enquanto o teste está sendo executado, e um resumo dos testes que falharam é exibido quando todos os testes são concluídos.awsiotdevicetester_report.xmlcontém um resumo de todos os erros que causaram a falha de um teste. O IDT armazena os arquivos de log de cada execução de teste em um diretório com um UUID para a execução do teste, exibido no console durante a execução do teste.

O diretório de registros de teste do IDT é<device-tester-extract-location>/results/<execution-id>/logs/. Esse diretório contém os seguintes arquivos exibidos na tabela. Isso é útil para depuração.

Arquivo Descrição
test_manager.log

Os registros gravados no console durante a execução do teste. O resumo dos resultados no final desse arquivo inclui uma lista de quais testes falharam.

Os logs de aviso e de erro nesse arquivo podem fornecer algumas informações sobre as falhas.

test-group-id/test-case-id/test-name.log Registros detalhados do teste específico em um grupo de teste. Para testes que implantam componentes do Greengrass, o arquivo de registro do caso de teste é chamadogreengrass-test-run.log.
test-group-id/test-case-id/greengrass.log Registros detalhados paraAWS IoT GreengrassSoftware principal. O IDT copia esse arquivo do dispositivo em teste quando executa testes que instalamAWS IoT GreengrassSoftware principal no dispositivo. Para obter mais informações sobre as mensagens nesse arquivo de log, consulteSolução de problemas AWS IoT Greengrass V2.
test-group-id/test-case-id/component-name.log Registros detalhados dos componentes do Greengrass que são implantados durante as execuções de teste. O IDT copia os arquivos de log de componentes do dispositivo em teste quando executa testes que implantam componentes específicos. O nome do arquivo de log de cada componente corresponde ao nome do componente implantado. Para obter mais informações sobre as mensagens nesse arquivo de log, consulteSolução de problemas AWS IoT Greengrass V2.

Resolvendo o IDT paraAWS IoT GreengrassErros V2

Antes de executar o IDT paraAWS IoT Greengrass, instale os arquivos de configuração corretos. Se você receber erros de análise e configuração, a primeira etapa é localizar e usar um modelo de configuração apropriado para seu ambiente.

Se você ainda estiver com problemas, consulte o processo de depuração a seguir.

Erros de resolução de aliases

Ao executar suítes de testes personalizadas, você pode ver o seguinte erro no console e notest_manager.log.

Couldn't resolve placeholders: couldn't do a json lookup: index out of range

Esse erro pode ocorrer quando os aliases configurados no orquestrador de testes do IDT não são resolvidos corretamente ou se os valores resolvidos não estão presentes nos arquivos de configuração. Para resolver esse erro, certifique-se de que seudevice.jsoneuserdata.json contém as informações corretas necessárias para sua suíte de testes. Para obter informações sobre a configuração necessária paraAWS IoT Greengrassqualificação, consulteDefina as configurações de IDT para executar o pacote de AWS IoT Greengrass qualificação.

Erros de conflito

Você pode ver o seguinte erro ao executar oAWS IoT Greengrassconjunto de qualificação simultaneamente em mais de um dispositivo.

ConflictException: Component [com.example.IDTHelloWorld : 1.0.0] for account [account-id] already exists with state: [DEPLOYABLE] { RespMetadata: { StatusCode: 409, RequestID: “id” }, Message_: “Component [com.example.IDTHelloWorld : 1.0.0] for account [account-id] already exists with state: [DEPLOYABLE]” }

A execução simultânea de testes ainda não é suportada peloAWS IoT Greengrasssuíte de qualificação. Execute o conjunto de qualificação sequencialmente para cada dispositivo.

Erro: Não foi possível iniciar teste

Você pode encontrar erros que apontam para falhas que ocorreram quando o teste estava tentando iniciar. Há várias causas possíveis e, portanto, faça o seguinte:

  • Certifique-se de que o nome do pool em seu comando de execução realmente exista. O IDT faz referência ao nome do pool diretamente de seudevice.jsonarquivo.

  • Verifique se os dispositivos no grupo têm os parâmetros de configuração corretos.

Existem erros na imagem de qualificação do Docker

Os testes de qualificação do gerenciador de aplicativos Docker usam oamazon/amazon-ec2-metadata-mockimagem de contêiner no Amazon ECR para qualificar o dispositivo em teste.

Você pode receber o seguinte erro se a imagem já estiver presente em um contêiner do Docker no dispositivo em teste.

The Docker image amazon/amazon-ec2-metadata-mock:version already exists on the device.

Se você baixou essa imagem anteriormente e executou oamazon/amazon-ec2-metadata-mockcontêiner em seu dispositivo, certifique-se de remover essa imagem do dispositivo em teste antes de executar os testes de qualificação.

Falha ao ler a credencial

Ao testar dispositivos Windows, você pode encontrar oFailed to read credentialerro nogreengrass.logarquivo se o usuário que você usa para se conectar ao dispositivo em teste não estiver configurado no gerenciador de credenciais desse dispositivo.

Para resolver esse erro, configure o usuário e a senha do usuário do IDT no gerenciador de credenciais do dispositivo em teste.

Para obter mais informações, consulte Configurar credenciais de usuário para dispositivos Windows.

Erros de guia com PreInstalled Capim verde

Ao executar o IDT com PreInstalled Greengrass, se você encontrar um erro deGuiceouErrorInCustomProvider, verifique se o arquivouserdata.jsontem oInstalledDirRootOnDevicedefina para a pasta de instalação do Greengrass. O IDT verifica o arquivoeffectiveConfig.yamlembaixo<InstallationDirRootOnDevice>/config/effectiveConfig.yaml.

Para obter mais informações, consulte Configurar credenciais de usuário para dispositivos Windows.

Exceção de assinatura inválida

Ao executar testes de qualificação do Lambda, você pode encontrar oinvalidsignatureexceptionerro se sua máquina host IDT tiver problemas de acesso à rede. Reinicie o roteador e execute os testes novamente.

Erros de qualificação de aprendizado de máquina

Ao executar testes de qualificação de aprendizado de máquina (ML), você pode encontrar falhas de qualificação se o dispositivo não atender àsrequisitospara implantar oAWS-componentes de ML fornecidos. Para solucionar erros de qualificação de ML, faça o seguinte:

  • Procure detalhes de erro nos registros dos componentes que foram implantados durante a execução do teste. Os registros de componentes estão localizados no<device-tester-extract-location>/results/<execution-id>/logs/<test-group-id>diretório.

  • Adicione o-Dgg.persist=installed.softwareargumento para otest.jsonarquivo para o caso de teste com falha. Otest.jsono arquivo está localizado no<device-tester-extract-location>/tests/GGV2Q_version directory.

Implantações com falha no Open Test Framework (OTF)

Se os testes OTF falharem em concluir a implantação, uma causa provável pode ser as permissões definidas para a pasta principal doTempResourcesDirOnDeviceeInstallationDirRootOnDevice. Para definir as permissões dessa pasta corretamente, execute o comando a seguir. Substituirfolder-namecom o nome da pasta principal.

sudo chmod 755 folder-name

Erros de análise

Erros de digitação em uma configuração JSON podem levar a erros de análise. Na maioria dos casos, o problema é resultado da omissão de um colchete, vírgula ou aspas de seu arquivo JSON. O IDT executa a validação do JSON e imprime as informações de depuração. Ele imprime a linha em que ocorreu o erro, o número da linha e o número da coluna do erro de sintaxe. Essas informações devem ser suficientes para ajudá-lo a corrigir o erro, mas se você ainda não conseguir localizar o erro, poderá realizar a validação manualmente em seu IDE, em um editor de texto como Atom ou Sublime ou por meio de uma ferramenta on-line como o JSONLint.

Erros de permissão negada

O ITD executa operações em vários diretórios e arquivos em um dispositivo em teste. Algumas dessas operações exigem acesso raiz. Para automatizar essas operações, o IDT deverá ser capaz de executar comandos com sudo sem digitar uma senha.

Siga estas etapas para permitir o acesso do sudo sem digitar uma senha.

nota

user e username se referem ao usuário SSH usado pelo IDT para acessar o dispositivo em teste.

  1. Use sudo usermod -aG sudo <ssh-username> para adicionar o usuário SSH ao grupo sudo.

  2. Saia e faça login para que as alterações entrem em vigor.

  3. Abra o arquivo /etc/sudoers e adicione a linha a seguir ao final do arquivo: <ssh-username> ALL=(ALL) NOPASSWD: ALL

    nota

    Como prática recomendada, recomendamos que você use sudo visudo ao editar /etc/sudoers.

Erro na geração do relatório de qualificação

O IDT suporta os quatro mais recentesmajor.minorversões doAWS IoT GreengrassPacote de qualificação V2 (GGV2Q) para gerar relatórios de qualificação que você pode enviar paraAWS Partner Networkpara incluir seus dispositivos noAWS PartnerCatálogo de dispositivos. As versões anteriores do pacote de qualificação não geram relatórios de qualificação.

Se você tiver dúvidas sobre a política de suporte, entre em contato comAWS Support.

Erro de parâmetro necessário ausente

Quando o IDT adiciona novos recursos, ele pode introduzir alterações nos arquivos de configuração. O uso de um arquivo de configuração antigo pode danificar sua configuração. Se isso acontecer, o arquivo <test_case_id>.log, em /results/<execution-id>/logs, listará explicitamente todos os parâmetros ausentes. O IDT também valida os esquemas do arquivo de configuração JSON para verificar se você está usando a versão mais recente compatível.

Exceção de segurança no macOS

Quando você executa o IDT em um computador host macOS, ele impede a execução do IDT. Para executar o IDT, conceda uma exceção de segurança aos executáveis que fazem parte da funcionalidade de tempo de execução do IDT. Ao ver a mensagem de aviso exibida no computador host, faça o seguinte para cada um dos executáveis aplicáveis:

Para conceder uma exceção de segurança aos executáveis do IDT

  1. No computador macOS, no menu Apple, abraPreferências do sistema.

  2. EscolhaSegurança e privacidade, em seguida, noGeralguia, escolha o ícone de cadeado para fazer alterações nas configurações de segurança.

  3. Em caso de bloqueiodevicetester_mac_x86-64, procure a mensagem"devicetester_mac_x86-64" was blocked from use because it is not from an identified developer.e escolhaPermitir mesmo assim.

  4. Continue os testes de IDT até concluir todos os executáveis envolvidos.

Erros de conexão SSH

Quando o IDT não consegue se conectar a um dispositivo em teste, ele registra falhas de conexão no/results/<execution-id>/logs/<test-case-id>.log. As mensagens SSH aparecem na parte superior desse arquivo de log porque a conexão com um dispositivo em teste é uma das primeiras operações que o IDT executa.

A maioria das configurações do Windows usa o aplicativo de terminal PuTTY para se conectar aos hosts Linux. Esse aplicativo requer que você converta arquivos de chave privada PEM padrão em um formato proprietário do Windows chamado PPK. Se você configurar o SSH no seudevice.jsonarquivo, use arquivos PEM. Se você usa um arquivo PPK, o IDT não pode criar uma conexão SSH com oAWS IoT Greengrassdispositivo e não consigo executar testes.

A partir do IDT v4.4.0, se você não tiver habilitado o SFTP no dispositivo em teste, talvez veja o seguinte erro no arquivo de log.

SSH connection failed with EOF

Para resolver esse erro, ative o SFTP no seu dispositivo.

Erros de qualificação do gerenciador de stream

Ao executar testes de qualificação do stream manager, você pode ver o seguinte erro nocom.aws.StreamManagerExport.logarquivo.

Failed to upload data to S3

Esse erro pode ocorrer quando o gerenciador de fluxo usa oAWScredenciais no~/root/.aws/credentialsarquivo em seu dispositivo em vez de usar as credenciais de ambiente que o IDT exporta para o dispositivo em teste. Para evitar esse problema, exclua ocredentialsarquive no seu dispositivo e execute novamente o teste de qualificação.

Erros de tempo limite

Você pode aumentar o tempo limite de cada teste especificando um multiplicador de tempo limite aplicado ao valor padrão do tempo limite de cada teste. Qualquer valor configurado para esse sinalizador deve ser maior que ou igual a 1.0.

Para usar o multiplicador de tempo limite, use o sinalizador --timeout-multiplier ao executar os testes. Por exemplo:

./devicetester_linux run-suite --suite-id GGV2Q_1.0.0 --pool-id DevicePool1 --timeout-multiplier 2.5

Para obter mais informações, execute run-suite --help.

Alguns erros de tempo limite ocorrem quando os casos de teste do IDT não podem ser concluídos devido a problemas de configuração. Você não pode resolver esses erros aumentando o multiplicador de tempo limite. Use os registros da execução do teste para solucionar os problemas de configuração subjacentes.

  • Se os registros do componente MQTT ou Lambda contiveremAccess deniederros, sua pasta de instalação do Greengrass pode não ter as permissões de arquivo corretas. Execute o comando a seguir para cada pasta no caminho de instalação que você definiu no seuuserdata.jsonarquivo.

    sudo chmod 755 folder-name
  • Se os registros do Greengrass indicarem que a implantação da CLI do Greengrass não foi concluída, faça o seguinte:

    • Verifique issobashestá instalado no dispositivo em teste.

    • Se o seuuserdata.jsono arquivo inclui oGreengrassCliVersionparâmetro de configuração, remova-o. Esse parâmetro está obsoleto no IDT v4.1.0 e versões posteriores. Para obter mais informações, consulte Configurar userdata.json.

  • Se o teste de implantação do Lambda falhar com uma mensagem de erro de “Validando a publicação do Lambda: tempo limite” e você receber um erro no arquivo de log de teste (idt-gg2-lambda-function-idt-<resource-id>.log) que dizError: Could not find or load main class com.amazonaws.greengrass.runtime.LambdaRuntime., faça o seguinte:

Erros de verificação de versão

O IDT emite o seguinte erro quando oAWSas credenciais do usuário do IDT não têm as permissões necessárias do IAM.

Failed to check version compatibility

OAWSusuário que não tem as permissões necessárias do IAM.