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 AWS IoT Greengrass V2
Use as informações e soluções de solução de problemas nesta seção para ajudar a resolver problemas com AWS IoT Greengrass Version 2.
Tópicos
Visualizar AWS IoT Greengrass Registros principais de software e componentes
O software AWS IoT Greengrass Core grava registros no sistema de arquivos local que você pode usar para visualizar informações em tempo real sobre o dispositivo principal. Você também pode configurar os dispositivos principais para gravar registros nos CloudWatch registros, para que você possa solucionar problemas remotamente nos dispositivos principais. Esses logs ajudam você a identificar problemas com os componentes, as implantações e os dispositivos principais. Para obter mais informações, consulte Monitore AWS IoT Greengrass logs.
AWS IoT Greengrass Principais problemas de software
Solucione os AWS IoT Greengrass principais problemas do software.
Tópicos
Não é possível iniciar o AWS IoT Greengrass Software principal como serviço de sistema
Não é possível configurar o núcleo como um serviço do sistema
Falha ao mapear o segmento do objeto compartilhado: operação não permitida
com.aws.greengrass.util.exceptions. TLSAuthException: Falha ao obter o gerenciador de confiança
A operação aws.greengrass# não é suportada pelo < Greengrass >
java.lang. NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
ThrottlingException da ListDeployments API
ThrottlingException da API ListDeployments: é possível ver isso quando houver um grande número de implantações na conta.
Para resolver isso, execute um dos procedimentos a seguir:
Se você usa o SDK, especifique o MaxResult parâmetro. Por exemplo, para o JavaSDK
com um valor pequeno (por exemplo, 5). É possível usar as AWS Service Quotas para solicitar um aumento do limite de taxa da API
DescribeJob. Você pode acessar o console de cotas de serviço, selecionar cotas de AWS IoT e o nome do limite é limite de DescribeJob aceleração. É possível aumentá-lo de 10 para 50.
Não é possível configurar o dispositivo principal
Se o instalador do software AWS IoT Greengrass Core falhar e você não conseguir configurar um dispositivo principal, talvez seja necessário desinstalar o software e tentar novamente. Para obter mais informações, consulte Desinstale o AWS IoT Greengrass Software principal.
Não é possível iniciar o AWS IoT Greengrass Software principal como serviço de sistema
Se o software AWS IoT Greengrass Core falhar na inicialização, verifique os registros de serviço do sistema para identificar o problema. Um problema comum é quando o Java não está disponível na variável de ambiente PATH (Linux) ou na variável de sistema PATH (Windows).
Não é possível configurar o núcleo como um serviço do sistema
Você pode ver esse erro quando o instalador do software AWS IoT Greengrass Core não consegue ser configurado AWS IoT Greengrass como um serviço do sistema. Nos dispositivos Linux, esse erro costuma ocorrer se o dispositivo principal não tem o sistema de inicialização systemd
Execute um destes procedimentos:
-
Configure e execute o software AWS IoT Greengrass Core como um serviço do sistema. É necessário configurar o software como um serviço do sistema para usar todos os recursos do AWS IoT Greengrass. É possível instalar o systemd
ou usar outro sistema de inicialização. Para obter mais informações, consulte Configurar o Greengrass nucleus como um serviço do sistema. -
Execute o software AWS IoT Greengrass Core sem um serviço de sistema. É possível executar o software usando um script de carregador que o instalador configura na pasta raiz do Greengrass. Para obter mais informações, consulte Execute o software AWS IoT Greengrass Core sem um serviço de sistema.
Não é possível se conectar a AWS IoT Core
Você pode ver esse erro quando o software AWS IoT Greengrass Core não consegue se conectar AWS IoT Core para recuperar trabalhos de implantação, por exemplo. Faça o seguinte:
-
Verifique se seu dispositivo principal pode se conectar à Internet AWS IoT Core e. Para obter mais informações sobre o AWS IoT Core endpoint ao qual seu dispositivo se conecta, consulteConfigurar o AWS IoT Greengrass Software principal.
-
Verifique se o dispositivo AWS IoT principal usa um certificado que permite as
iot:Subscribepermissõesiot:Connectiot:Publishiot:Receive,, e. -
Se o dispositivo principal usar um proxy de rede, verifique se o dispositivo tem um perfil de dispositivo e se esse perfil concede as permissões
iot:Connect,iot:Publish,iot:Receiveeiot:Subscribe.
Erro de falta de memória
Geralmente, esse erro ocorre se o dispositivo não tem memória suficiente para alocar um objeto no heap Java. Em dispositivos com memória limitada, talvez seja necessário especificar um tamanho máximo de heap para controlar a alocação de memória. Para obter mais informações, consulte Controlar a alocação de memória com opções de JVM.
Não é possível instalar a CLI do Greengrass
Você pode ver a seguinte mensagem do console ao usar o --deploy-dev-tools argumento no comando de instalação AWS IoT Greengrass do Core.
Thing group exists, it could have existing deployment and devices, hence NOT creating deployment for Greengrass first party dev tools, please manually create a deployment if you wish to
Isso ocorre quando o componente de CLI do Greengrass não é instalado porque seu dispositivo principal é membro de um grupo de itens que já tem uma implantação. Se essa mensagem for exibida, será possível implantar manualmente o componente de CLI do Greengrass (aws.greengrass.Cli) no dispositivo para instalar a CLI do Greengrass. Para obter mais informações, consulte Instalar a Greengrass CLI.
O usuário root não tem permissão para executar
Você pode ver esse erro quando o usuário que executa o software AWS IoT Greengrass Core (normalmenteroot) não tem permissão para executar sudo com nenhum usuário e grupo. Para o usuário padrão ggc_user do sistema, esse erro é semelhante ao seguinte:
Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.
Verifique se o arquivo /etc/sudoers dá permissão ao usuário para executar sudo como outros grupos. A permissão para o usuário em /etc/sudoers deve ser semelhante à do exemplo a seguir.
root ALL=(ALL:ALL) ALL
com.aws.greengrass.lifecyclemanager. GenericExternalService: Não foi possível determinar user/group se deve executar com
Esse erro pode ocorrer quando o dispositivo principal tenta executar um componente, e o Greengrass nucleus não especifica um usuário padrão do sistema a ser usado para executar componentes.
Para corrigir esse problema, configure o Greengrass nucleus para especificar o usuário padrão do sistema que executa componentes. Para obter mais informações, consulte Configurar o usuário que executa os componentes e Configurar o usuário padrão do componente.
Falha ao mapear o segmento do objeto compartilhado: operação não permitida
Você pode ver esse erro quando o software AWS IoT Greengrass Core não consegue iniciar porque a /tmp pasta está montada com noexec permissões. Por padrão, a biblioteca Common Runtime (CRT) da AWS/tmp.
Execute um destes procedimentos:
-
Execute o comando a seguir para remontar a pasta
/tmpcom permissõesexece tente novamente.sudo mount -o remount,exec /tmp -
Se você executar o Greengrass nucleus v2.5.0 ou posterior, poderá definir uma opção de JVM para alterar a pasta que a biblioteca CRT usa. AWS Você pode especificar o
jvmOptionsparâmetro na configuração do componente núcleo do Greengrass em uma implantação ou ao instalar o software AWS IoT Greengrass Core./path/to/useSubstitua pelo caminho para uma pasta que a biblioteca AWS CRT possa usar.{ "jvmOptions": "-Daws.crt.lib.dir=\"/path/to/use\"" }
Falha ao configurar o serviço do Windows
Esse erro pode ser exibido se você instalar o software AWS IoT Greengrass Core em um dispositivo Microsoft Windows 2016. O software AWS IoT Greengrass Core não é suportado no Windows 2016. Para obter uma lista dos sistemas operacionais compatíveis, consultePlataformas compatíveis.
Antes de usar o Windows 2016, você pode fazer o seguinte:
-
Descompacte o arquivo de instalação AWS IoT Greengrass do Core baixado
-
Abra o arquivo
bin/greengrass.xml.templateno diretório doGreengrass. -
Adicione a tag
<autoRefresh>ao final do arquivo logo antes da tag</service>.</log> <autoRefresh>false</autoRefresh> </service>
com.aws.greengrass.util.exceptions. TLSAuthException: Falha ao obter o gerenciador de confiança
Você pode ver esse erro ao instalar o software AWS IoT Greengrass Core sem um arquivo de autoridade de certificação (CA) raiz.
2022-06-05T10:00:39.556Z [INFO] (main) com.aws.greengrass.lifecyclemanager.Kernel: service-loaded. {serviceName=DeploymentService} 2022-06-05T10:00:39.943Z [WARN] (main) com.aws.greengrass.componentmanager.ClientConfigurationUtils: configure-greengrass-mutual-auth. Error during configure greengrass client mutual auth. {} com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
Verifique se você especificou um arquivo de CA raiz válido com o parâmetro rootCaPath no arquivo de configuração fornecido ao instalador. Para obter mais informações, consulte Instalar o software do AWS IoT Greengrass Core.
com.aws.greengrass.deployment. IotJobsHelper: Nenhuma conexão disponível durante a assinatura do tópico de descrições do Iot Jobs. Tentarei novamente em algum momento
Você pode ver essa mensagem de aviso quando o dispositivo principal não consegue se conectar AWS IoT Core para assinar as notificações de tarefas de implantação. Faça o seguinte:
-
Verifique se o dispositivo principal está conectado à Internet e pode acessar o terminal de AWS IoT dados que você configurou. Para obter mais informações sobre os endpoints que os dispositivos principais usam, consulte Permitir o tráfego de dispositivos por meio de um proxy ou firewall.
-
Consulte os logs do Greengrass para ver se há outro erros que mostrem causas raiz diferentes.
software.amazon.awssdk.services.iam.model. IamException: O token de segurança incluído na solicitação é inválido
Você pode ver esse erro ao instalar o software AWS IoT Greengrass Core com provisionamento automático e o instalador usar um token de AWS sessão que não é válido. Faça o seguinte:
-
Se você usa credenciais de segurança temporárias, verifique se o token de sessão que você está copiando e colando está correto e completo.
-
Se você usa credenciais de segurança de longo prazo, verifique se o dispositivo não tem um token de sessão de quando você usava as credenciais temporárias. Faça o seguinte:
-
Execute o comando a seguir para cancelar a definição da variável de ambiente do token de sessão.
-
Verifique se o arquivo de AWS credenciais,
~/.aws/credentials, contém um token de sessão,aws_session_token. Em caso afirmativo, remova essa linha do arquivo.aws_session_token =AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
-
Você também pode instalar o software AWS IoT Greengrass Core sem fornecer AWS credenciais. Para acessar mais informações, consulte Instalar AWS IoT Greengrass Software básico com provisionamento manual de recursos ou Instalar AWS IoT Greengrass Software principal com AWS IoT aprovisionamento de frotas.
software.amazon.awssdk.services.iot.model. IotException: Usuário: < o usuário não > está autorizado a executar: iot: GetPolicy
Você pode ver esse erro ao instalar o software AWS IoT Greengrass Core com provisionamento automático e o instalador usar AWS credenciais que não têm as permissões necessárias. Para obter mais informações sobre as permissões necessárias, consulte Política mínima de IAM para o instalador provisionar recursos.
Verifique as permissões para a identidade do IAM das credenciais e conceda à ela todas as permissões necessárias que estejam faltando.
Erro: com.aws.greengrass.shadowmanager.sync.model. FullShadowSyncRequest: Não foi possível executar a solicitação cloud shadow get
Você pode ver esse erro ao usar o componente do gerenciador de sombras para sincronizar sombras do dispositivo com AWS IoT Core. O código de status HTTP 403 indica que esse erro ocorreu porque a AWS IoT política do dispositivo principal não concede permissão para fazer chamadasGetThingShadow.
com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request. {thing name=MyGreengrassCore, shadow name=MyShadow} 2021-07-14T21:09:02.456Z [ERROR] (pool-2-thread-109) com.aws.greengrass.shadowmanager.sync.SyncHandler: sync. Skipping sync request. {thing name=MyGreengrassCore, shadow name=MyShadow} com.aws.greengrass.shadowmanager.exception.SkipSyncRequestException: software.amazon.awssdk.services.iotdataplane.model.IotDataPlaneException: null (Service: IotDataPlane, Status Code: 403, Request ID: f6e713ba-1b01-414c-7b78-5beb3f3ad8f6, Extended Request ID: null)
Para sincronizar sombras locais com AWS IoT Core, a AWS IoT política do dispositivo principal deve conceder as seguintes permissões:
-
iot:GetThingShadow -
iot:UpdateThingShadow -
iot:DeleteThingShadow
Verifique a AWS IoT política do dispositivo principal e adicione as permissões necessárias que estejam faltando. Para saber mais, consulte:
-
AWS IoT Core ações políticas no Guia do AWS IoT desenvolvedor
A operação aws.greengrass# não é suportada pelo < Greengrass >
Esse erro pode ser exibido quando você usa uma operação de comunicação entre processos (IPC) em um componente personalizado do Greengrass e o componente AWS fornecido não está instalado no dispositivo principal.
Para corrigir esse problema, adicione o componente necessário como uma dependência em sua receita de componentes, para que o software AWS IoT Greengrass Core instale o componente necessário ao implantar seu componente.
-
Recuperar valores de segredos:
aws.greengrass.SecretManager -
Interagir com sombras locais:
aws.greengrass.ShadowManager -
Gerenciar implantações e componentes locais:
aws.greengrass.Cliv2.6.0 ou posterior -
Autenticar e autorizar dispositivos cliente:
aws.greengrass.clientdevices.Authv2.2.0 ou posterior
java.io. FileNotFoundException: < stream-manager-store-root-dir /stream_manager_metadata_store > (permissão negada)
Esse erro pode ocorrer no arquivo de log do Gerenciador de fluxos (aws.greengrass.StreamManager.log) quando você configura o Gerenciador de fluxos para usar uma pasta raiz que não existe ou que não tem as permissões corretas. Para obter mais informações sobre como configurar essa pasta, consulte a configuração do Gerenciador de fluxos.
com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: A chave privada ou o certificado com < etiqueta > não existe
Esse erro ocorre quando o componente do provedor PKCS #11 não consegue localizar ou carregar a chave privada ou o certificado que você especifica ao configurar o software AWS IoT Greengrass Core para usar um módulo de segurança de hardware (HSM). Faça o seguinte:
-
Verifique se a chave privada e o certificado estão armazenados no HSM usando o slot, o PIN do usuário e o rótulo do objeto que você configura para usar no software AWS IoT Greengrass Core.
-
Verifique se a chave privada e o certificado usam o mesmo rótulo de objeto no HSM.
-
Se o HSM oferecer suporte a IDs de objeto, verifique se a chave privada e o certificado usam o mesmo ID no HSM.
Leia a documentação do HSM para saber como consultar detalhes sobre os tokens de segurança. Se você precisar alterar o slot, o rótulo ou o ID do objeto de um token de segurança, consulte a documentação do HSM para saber como fazer isso.
software.amazon.awssdk.services.secretsmanager.model. SecretsManagerException: Usuário: o < usuário não > está autorizado a executar: secretsmanager: GetSecretValue on resource: arn < >
Esse erro pode ocorrer quando você usa o componente gerenciador de segredos para implantar um AWS Secrets Manager segredo. Se o perfil do IAM de troca de tokens do dispositivo principal não conceder permissão para obter o segredo, haverá falha na implantação e os logs do Greengrass incluirão esse erro.
Para autorizar um dispositivo principal a fazer download de um segredo
-
Adicione a permissão
secretsmanager:GetSecretValueao perfil de troca de tokens do dispositivo principal. O exemplo de declaração de política a seguir concede permissão para obter o valor de um segredo.{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }Para obter mais informações, consulte Autorize os dispositivos principais a interagir com os serviços AWS.
-
Reaplique a implantação ao dispositivo principal. Execute um destes procedimentos:
-
Revise a implantação sem nenhuma alteração. O dispositivo principal tenta fazer download do segredo novamente quando recebe a implantação revisada. Para obter mais informações, consulte Revisões das implantações.
-
Reinicie o software AWS IoT Greengrass Core para tentar a implantação novamente. Para obter mais informações, consulte Execute o software AWS IoT Greengrass Core.
A implantação será bem-sucedida se o Gerenciador de segredos fizer download do segredo sem problemas.
-
software.amazon.awssdk.services.secretsmanager.model. SecretsManagerException: O acesso ao KMS não é permitido
Esse erro pode ocorrer quando você usa o componente gerenciador de segredos para implantar um AWS Secrets Manager segredo criptografado por uma AWS Key Management Service chave. Se o perfil do IAM de troca de tokens do dispositivo principal não conceder permissão para descriptografar o segredo, haverá falha na implantação e os logs do Greengrass incluirão esse erro.
Para corrigir o problema, adicione a permissão kms:Decrypt ao perfil de troca de tokens do dispositivo principal. Para saber mais, consulte:
-
Criptografia e descriptografia de segredos no Guia do usuário do AWS Secrets Manager
-
Autorize os dispositivos principais a interagir com os serviços AWS
java.lang. NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
Talvez você veja esse erro ao tentar instalar o software AWS IoT Greengrass Core com segurança de hardware e usar uma versão anterior do Greengrass nucleus que não oferece suporte à integração de segurança de hardware. Para usar a integração de segurança de hardware, é necessário ter o Greengrass nucleus versão 2.5.3 ou mais recente.
com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
Você pode ver esse erro ao usar a biblioteca TPM2 ao executar o AWS IoT Greengrass Core como um serviço do sistema.
Esse erro indica que você precisa adicionar uma variável de ambiente que forneça a localização do armazenamento PKCS #11 no arquivo de serviço AWS IoT Greengrass Core systemd.
Para obter mais informações, consulte a seção de requisitos da documentação do componente Fornecedor PKCS#11.
Dispositivo principal do Greengrass preso no núcleo v2.12.3
Se o dispositivo principal do Greengrass não revisar sua implantação da versão 2.12.3 do núcleo, talvez seja necessário fazer download e substituir o arquivo Greengrass.jar pelo Greengrass nucleus versão 2.12.2. Faça o seguinte:
-
No dispositivo principal do Greengrass, execute o comando a seguir para interromper o software de Greengrass nucleus.
-
No seu dispositivo principal, baixe o AWS IoT Greengrass software em um arquivo chamado
greengrass-2.12.2.zip. -
Descompacte o software AWS IoT Greengrass Core em uma pasta no seu dispositivo.
GreengrassInstallerSubstitua pela pasta que você deseja usar. -
Execute o comando a seguir para substituir o arquivo JAR do Greengrass da versão 2.12.3 do núcleo pelo da versão 2.12.2 do núcleo.
-
Execute o comando a seguir para iniciar o software de Greengrass nucleus.
Problema no modelo systemd do Greengrass nucleus v2.14.0
É possível encontrar esse problema se tiver instalado o Greengrass nucleus v2.14.0 em um dispositivo Linux com seu modelo de serviço systemd padrão. Faça o seguinte:
-
No seu dispositivo principal do Greengrass, execute o comando a seguir para reverter o arquivo de serviço do systemd para a forma como está no nucleus v2.13.0 e versões anteriores.
-
Implemente as alterações.
AWS IoT Greengrass problemas de nuvem
Use as informações a seguir para solucionar problemas com o AWS IoT Greengrass console e a API. Cada entrada corresponde a uma mensagem de erro que você pode ver ao executar uma ação.
Ocorreu um erro (AccessDeniedException) ao chamar a CreateComponentVersion operação: User: arn:aws:iam: < :123456789012:user/ username não está autorizado a executar: null >
Talvez você veja esse erro ao criar uma versão do componente a partir do AWS IoT Greengrass console ou com a CreateComponentVersion operação.
Esse erro indica que a fórmula não é um JSON ou YAML válido. Verifique a sintaxe da fórmula, corrija qualquer problema de sintaxe e tente novamente. É possível usar um verificador de sintaxe JSON ou YAML on-line para identificar problemas de sintaxe na fórmula.
Entrada inválida: Foram encontrados os seguintes erros nos artefatos: {<s3 ArtifactUri > = O recurso de artefato especificado não pode ser acessado}
Talvez você veja esse erro ao criar uma versão do componente a partir do AWS IoT Greengrass console ou com a CreateComponentVersion operação. Esse erro indica que um artefato do S3 na fórmula do componente não é válido.
Faça o seguinte:
-
Verifique se o bucket do S3 está no mesmo Região da AWS local em que você criou o componente. AWS IoT Greengrass não oferece suporte a solicitações entre regiões para artefatos de componentes.
-
Verifique se o URI do artefato é um URL válido de objeto do S3 e se o artefato existe nesse URL.
-
Verifique se você Conta da AWS tem permissão para acessar o artefato na URL do objeto do S3.
Status de implantação INATIVO
Você pode obter um status de INACTIVE implantação ao chamar a ListDeployments API sem as AWS IoT políticas dependentes necessárias. É necessário ter as permissões necessárias para obter um status de implantação preciso. Para encontrar as ações dependentes, consulte Ações definidas pelo AWS IoT Greengrass V2 e siga as permissões necessárias para ListDeployments. Sem as AWS IoT permissões dependentes necessárias, você ainda verá o status da implantação, mas poderá ver um status de implantação impreciso doINACTIVE.
CreateDeployment retorna uma resposta de sucesso, mas GetDeployment retorna um erro 404
Você pode ver esse problema ao chamar a CreateDeployment operação para implantar em uma AWS IoT coisa ou grupo de coisas. A CreateDeployment chamada retorna um código de 200 status com um ID de implantação válido. No entanto, ao ligar GetDeployment com esse ID de implantação, você recebe um ResourceNotFoundException erro. O AWS IoT Greengrass console mostra uma página “Implantação não encontrada” para o URL de implantação. A implantação anterior do alvo também pode mostrar um INACTIVE status sem substituição.
Esse problema pode ocorrer quando várias CreateDeployment solicitações têm como alvo a mesma AWS IoT coisa ao mesmo tempo. Uma condição de corrida pode fazer com que a nuvem não registre a implantação. O dispositivo principal ainda recebe e aplica a implantação por meio da sombra do AWS IoT
dispositivo, mas o serviço de AWS IoT Greengrass nuvem não tem registro disso. Depois que esse problema ocorrer, ele também poderá afetar implantações subsequentes no mesmo destino.
Faça o seguinte para resolver e evitar esse problema:
-
Evite enviar
CreateDeploymentsolicitações simultâneas que tenham como alvo a mesma AWS IoT coisa. Serialize suas solicitações de implantação ou adicione um atraso entre elas para garantir que apenas umaCreateDeploymentchamada tenha como alvo uma coisa específica por vez. -
Se esse problema já afetar seu alvo, as implantações subsequentes podem continuar retornando erros 404. Para resolver isso, exclua o registro de implantação obsoleto do alvo afetado para que a próxima implantação possa prosseguir normalmente.
Problemas na implantação do dispositivo principal
Solucione problemas na implantação em dispositivos principais do Greengrass. Cada entrada corresponde a uma mensagem de log que você pode ver no dispositivo principal.
Erro: com.aws.greengrass.componentmanager.exceptions. PackageDownloadException: Falha ao baixar o artefato
Você pode ver esse erro quando o software AWS IoT Greengrass Core não consegue baixar um artefato de componente quando o dispositivo principal aplica uma implantação. O resultado desse erro é uma falha na implantação.
Quando você recebe esse erro, o log também inclui um rastreamento de pilha que é possível usar para identificar o problema específico. Cada uma das entradas a seguir corresponde a uma mensagem que você pode ver no rastreamento de pilha da mensagem de erro Failed to download artifact.
Tópicos
software.amazon.awssdk.services.s3.model.S3Exception: null (Serviço: S3, Código de status: 403, ID da solicitação: null,...)
O PackageDownloadException erro pode incluir esse rastreamento de pilha nos seguintes casos:
-
O artefato do componente não está disponível no URL do objeto do S3 que você especifica na fórmula do componente. Verifique se você carregou o artefato no bucket do S3 e se o URI do artefato corresponde ao URL do objeto do S3 do artefato no bucket.
-
A função de troca de tokens do dispositivo principal não permite que o software AWS IoT Greengrass Core baixe o artefato do componente do URL do objeto do S3 que você especifica na receita do componente. Garanta que o perfil de troca de tokens permita
s3:GetObjectno URL do objeto do S3 em que o artefato está disponível.
software.amazon.awssdk.services.s3.model.s3Exceção: acesso negado (serviço: S3, código de status: 403, ID da solicitação: RequestID < >
O PackageDownloadException erro pode incluir esse rastreamento de pilha quando o dispositivo principal não tem permissão para fazer chamadass3:GetBucketLocation. A mensagem de erro também inclui uma das mensagens abaixo.
reason: Failed to determine S3 bucket location
Garanta que o perfil de troca de tokens do dispositivo principal permita s3:GetBucketLocation no bucket do S3 em que o artefato está disponível.
Erro: com.aws.greengrass.componentmanager.exceptions. ArtifactChecksumMismatchException: Falha na verificação de integridade do artefato baixado. Provavelmente devido à corrupção do arquivo.
Você pode ver esse erro quando o software AWS IoT Greengrass Core não consegue baixar um artefato de componente quando o dispositivo principal aplica uma implantação. A implantação falha porque a soma de verificação do arquivo de artefato baixado não corresponde à soma de verificação AWS IoT Greengrass calculada quando você criou o componente.
Faça o seguinte:
-
Verifique se o arquivo de artefato foi alterado no bucket do S3 em que você o hospeda. Se o arquivo tiver sido alterado desde que você criou o componente, restaure-o à versão anterior que o dispositivo principal espera. Se você não puder restaurar o arquivo à versão anterior ou se quiser usar a nova versão do arquivo, crie uma nova versão do componente com o arquivo de artefato.
-
Verifique a conexão com a Internet do dispositivo principal. Esse erro poderá ocorrer se o arquivo de artefato for corrompido durante o download. Crie uma nova implantação e tente novamente.
Erro: com.aws.greengrass.componentmanager.exceptions. NoAvailableComponentVersionException: Falha ao negociar a > versão < do nome do componente com a nuvem e nenhuma versão local aplicável que atenda aos requisitos < >
Esse erro pode ocorrer quando um dispositivo principal não encontra uma versão do componente que atenda aos requisitos das implantações para esse dispositivo principal. O dispositivo principal verifica o componente no AWS IoT Greengrass serviço e no dispositivo local. A mensagem de erro inclui o destino de cada implantação e os requisitos de versão dessa implantação para o componente. O destino da implantação pode ser um item, um grupo de itens ou LOCAL_DEPLOYMENT, que representa a implantação local no dispositivo principal.
Esse problema pode ocorrer nos seguintes casos:
-
O dispositivo principal é o destino de várias implantações que têm requisitos de versão de componente conflitantes. Por exemplo, o dispositivo principal pode ser o destino de várias implantações que incluem um componente
com.example.HelloWorld, em que uma implantação requer a versão 1.0.0 e a outra requer a versão 1.0.1. É impossível ter um componente que atenda aos dois requisitos, portanto há falha na implantação. -
A versão do componente não existe no AWS IoT Greengrass serviço ou no dispositivo local. O componente pode ter sido excluído, por exemplo.
-
Existem versões de componente que atendem aos requisitos de versão, mas nenhuma é compatível com a plataforma do dispositivo principal.
-
A AWS IoT política do dispositivo principal não concede a
greengrass:ResolveComponentCandidatespermissão. ProcureStatus Code: 403no log de erros para identificar esse problema. Para resolver esse problema, adicione a permissãogreengrass:ResolveComponentCandidatesà política do AWS IoT do dispositivo principal. Para obter mais informações, consulte AWS IoT Política mínima para dispositivos AWS IoT Greengrass V2 principais.
Para resolver esse problema, revise as implantações para incluir as versões de componente compatíveis ou remover as que são incompatíveis. Para obter mais informações sobre como revisar as implantações na nuvem, consulte Revisões das implantações. Para obter mais informações sobre como revisar as implantações locais, consulte o comando deployment create da CLI do AWS IoT Greengrass.
software.amazon.awssdk.services.greengrassv2data.model. ResourceNotFoundException: A versão mais recente do < Component ComponentName > não afirma compatibilidade com o < núcleo DevicePlatform > da plataforma
Esse erro pode ocorrer quando você implanta um componente em um dispositivo principal e o componente não lista uma plataforma compatível com a do dispositivo principal. Execute um destes procedimentos:
-
Se for um componente personalizado do Greengrass, será possível atualizá-lo para que seja compatível com o dispositivo principal. Adicione um novo manifesto ou atualize um manifesto existente para corresponder à plataforma do dispositivo principal. Para obter mais informações, consulte AWS IoT Greengrass referência de receita de componente.
-
Se o componente for fornecido pela AWS, verifique se outra versão do componente é compatível com o dispositivo principal. Se nenhuma versão for compatível, entre em contato conosco em AWS re:Post
usando a tag AWS IoT Greengrass ou pelo Suporte .
com.aws.greengrass.componentmanager.exceptions. PackagingException: A implantação tenta atualizar o núcleo da versão aws.greengrass.nucleus- para a < versão aws.greengrass.nucleus-, mas > nenhum componente do tipo nucleus foi incluído como componente alvo < >
Esse erro pode ocorrer quando você implanta um componente que depende do Greengrass nucleus e o dispositivo principal executa uma versão do Greengrass nucleus mais antiga do que a versão secundária mais recente disponível. Esse erro ocorre porque o software AWS IoT Greengrass Core tenta atualizar automaticamente os componentes para a versão compatível mais recente. No entanto, o software AWS IoT Greengrass Core impede que o núcleo do Greengrass seja atualizado para uma nova versão secundária, porque vários componentes AWS fornecidos dependem de versões secundárias específicas do núcleo do Greengrass. Para obter mais informações, consulte Comportamento da atualização do núcleo do Greengrass.
É necessário revisar a implantação para especificar a versão do Greengrass nucleus que deseja usar. Execute um destes procedimentos:
-
Revise a implantação para especificar a versão do Greengrass nucleus executada pelo dispositivo principal no momento.
-
Revise a implantação para especificar uma versão secundária mais recente do Greengrass nucleus. Se você escolher essa opção, também deverá atualizar as versões de todos os componentes AWS fornecidos que dependem de versões secundárias específicas do núcleo do Greengrass. Para obter mais informações, consulte Componentes fornecidos pela AWS.
Erro: com.aws.greengrass.deployment.exceptions. DeploymentException: Não é possível processar a implantação. O diretório de lançamento do Greengrass não está configurado ou o Greengrass não está configurado como um serviço do sistema
Esse erro pode ocorrer quando você move um dispositivo do Greengrass de um grupo de itens para outro, e depois volta para o grupo original com implantações que exigem a reinicialização do Greengrass.
Para resolver esse problema, recrie o diretório de inicialização do dispositivo. Também é altamente recomendável atualizar para a versão 2.9.6 ou posterior do Greengrass nucleus.
Veja a seguir um script do Linux para recriar o diretório de inicialização. Salve o script em um arquivo chamado fix_directory.sh.
#!/bin/bash set -e GG_ROOT=$1 GG_VERSION=$2 CURRENT="$GG_ROOT/alts/current" if [ ! -L "$CURRENT" ]; then mkdir -p $GG_ROOT/alts/directory_fix echo "Relinking $GG_ROOT/alts/directory_fix to $CURRENT" ln -sf $GG_ROOT/alts/directory_fix $CURRENT fi TARGET=$(readlink $CURRENT) if [[ ! -d "$TARGET" ]]; then echo "Creating directory: $TARGET" mkdir -p "$TARGET" fi DISTRO_LINK="$TARGET/distro" DISTRO="$GG_ROOT/packages/artifacts-unarchived/aws.greengrass.Nucleus/$GG_VERSION/aws.greengrass.nucleus/" echo "Relinking Nucleus artifacts to $DISTRO_LINK" ln -sf $DISTRO $DISTRO_LINK
Para rodar o script, execute o seguinte comando:
[root@ip-172-31-27-165 ~]#./fix_directory.sh /greengrass/v22.9.5Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro
Informações: com.aws.greengrass.deployment.exceptions. RetryableDeploymentDocumentDownloadException: O Greengrass Cloud Service retornou um erro ao obter a configuração completa de implantação
Esse erro pode ocorrer quando o dispositivo principal recebe um documento de implantação grande, maior que 7 KB (para implantações que têm itens como destino) ou 31 KB (para implantações que têm grupos de itens como destino). Para recuperar um grande documento de implantação, a AWS IoT política de um dispositivo principal deve permitir a greengrass:GetDeploymentConfiguration permissão. Esse erro pode ocorrer quando o dispositivo principal não tem essa permissão. Quando esse erro ocorre, a implantação faz tentativas indefinidamente, e o status é Em andamento (IN_PROGRESS).
Para resolver esse problema, adicione a greengrass:GetDeploymentConfiguration permissão à AWS IoT política do dispositivo principal. Para obter mais informações, consulte Atualizar a AWS IoT política de um dispositivo principal.
Atenção: com.aws.greengrass.deployment. DeploymentService: Falha ao obter a hierarquia do grupo de coisas
Você pode ver esse aviso quando o dispositivo principal recebe uma implantação e a AWS IoT política do dispositivo principal não permite a greengrass:ListThingGroupsForCoreDevice permissão. Quando você cria uma implantação, o dispositivo principal usa essa permissão para identificar os grupos de itens e remover os componentes de qualquer grupo do qual você removeu o dispositivo principal. Se o dispositivo principal executa o Greengrass nucleus versão 2.5.0, há falha na implantação. Se o dispositivo principal executa o Greengrass nucleus versão 2.5.1 ou mais recente, a implantação prossegue, mas não remove os componentes. Para obter mais informações sobre o comportamento de remoção de grupos de itens, consulte Implemente AWS IoT Greengrass componentes em dispositivos.
Para atualizar o comportamento do dispositivo principal para remover componentes dos grupos de coisas dos quais você remove o dispositivo principal, adicione a greengrass:ListThingGroupsForCoreDevice permissão à AWS IoT política do dispositivo principal. Para obter mais informações, consulte Atualizar a AWS IoT política de um dispositivo principal.
A implantação remove inesperadamente componentes de um dispositivo principal
Uma implantação remove componentes do dispositivo principal que você não pretendia remover, e o dispositivo para de executá-los.
No Greengrass nucleus v2.18.2 e versões anteriores, uma sequência específica de eventos faz com que um dispositivo perca o registro de quais componentes cada grupo de coisas implantou. Após essa perda, uma implantação trata esses componentes como órfãos e os remove. O Greengrass nucleus v2.18.3 corrige esse problema.
A sequência começa quando a primeira implantação em um dispositivo falha e é revertida. Para ver a sequência completa, consulteComo um dispositivo perde esse registro.
Como verificar se um dispositivo perdeu esse registro
Essas etapas verificam a configuração do dispositivo para determinar a causa da remoção. Eles não identificam quais componentes uma implantação removeu. Inspecione no dispositivo principal./config/effectiveConfig.yaml/greengrass/v2
-
Para verificar se o estado interno do dispositivo está danificado, examine a
dependencieslista abaixo domainserviço emservices. O estado interno danificado é a condição que leva à perda do registro. Em um dispositivo que tenha concluído pelo menos uma implantação bem-sucedida, essa lista inclui DeploymentService FleetStatusServiceTelemetryAgent,, UpdateSystemPolicyService e. Se esses nomes estiverem ausentes em um dispositivo que já tenha concluído uma implantação bem-sucedida, o estado interno será danificado. Em um dispositivo que nunca concluiu uma implantação bem-sucedida, uma lista contendo somente o núcleo é normal e não indica um problema. -
Para verificar se o dispositivo já perdeu o registro,
serviceslocalize DeploymentService abaixo e procure a GroupToRootComponents configuração. Em um dispositivo saudável que recebeu pelo menos uma implantação, essa configuração lista cada grupo de coisas e os componentes que o grupo implanta. Se essa configuração estiver ausente ou vazia enquanto os componentes estiverem instalados e em execução no dispositivo, o dispositivo perdeu o registro.
Se as implantações removem componentes após o dispositivo perder esse registro
Depois que um dispositivo perde esse registro, a perda de componentes depende de qual implantação será executada a seguir.
Uma implantação remove componentes quando é executada enquanto o registro está ausente e não carrega a lista de componentes do grupo ausente:
-
Uma implantação local é executada. Uma implantação local realiza somente suas próprias alterações e depende dos registros locais do dispositivo para preservar todo o resto. Algumas frotas executam um componente que envia uma implantação local toda vez que o dispositivo é iniciado. É por isso que a remoção geralmente aparece imediatamente após uma reinicialização.
-
Em um dispositivo que pertence a mais de um grupo de coisas, uma implantação tem como alvo apenas alguns desses grupos. Essa implantação recupera os grupos que ela tem como alvo. Ele remove os componentes dos grupos que não tem como alvo.
Uma implantação não remove componentes quando:
-
Nenhuma implantação é executada no dispositivo. Os componentes instalados continuam funcionando normalmente. O dispositivo pode permanecer nesse estado indefinidamente sem impacto.
-
A próxima implantação tem como alvo o grupo de coisas cujo registro de componente está ausente no dispositivo. Essa implantação carrega a lista completa de componentes do grupo e restaura o registro, o que recupera o dispositivo automaticamente.
Importante
Até recuperar o dispositivo, evite executar implantações locais nele. Se um componente no dispositivo enviar uma implantação local quando o dispositivo for iniciado, recupere-o antes que ele seja reiniciado novamente. Essa implantação remove os componentes.
Recuperação
Reiniciar o dispositivo não restaura o registro ausente. Você deve criar implantações para recuperar o dispositivo.
Para recuperar um dispositivo que perdeu esse registro, crie uma implantação voltada para cada grupo de coisas ao qual o dispositivo principal pertence. Uma implantação voltada para um grupo de coisas carrega a lista completa de componentes desse grupo. Isso reconstrói o registro local ausente. Uma implantação local não pode recuperar o dispositivo porque ele não carrega as informações dos componentes de outros grupos.
Importante
Em um dispositivo que pertence a vários grupos de coisas, cada implantação recupera somente o grupo-alvo. Uma implantação em um grupo pode remover componentes pertencentes a grupos nos quais você ainda não foi reimplantado. Crie uma implantação para cada grupo de coisas ao qual o dispositivo pertence.
Depois de criar as implantações de recuperação, verifique se cada implantação foi concluída com êxito. Se uma implantação de recuperação falhar e reverter em uma versão do nucleus anterior à 2.18.3, o dispositivo perderá o registro novamente. Você deve repetir a recuperação.
Depois que uma implantação de recuperação for concluída com êxito, o dispositivo não perderá esse registro novamente. Isso é verdade mesmo que o dispositivo ainda execute o Greengrass nucleus v2.18.2 ou anterior. A implantação restaura o estado interno que protege o registro, para que falhas e reversões de implantação posteriores não causem essa perda. Se você reinstalar o software AWS IoT Greengrass Core, o dispositivo poderá perder esse registro novamente.
Prevenção
Atualize o dispositivo principal para o Greengrass nucleus v2.18.3 ou posterior para evitar esse problema.
nota
Monitore as implantações de atualização do núcleo em dispositivos que possam ter perdido esse registro. Se a implantação de uma atualização do núcleo falhar e reverter em um dispositivo não corrigido, o dispositivo poderá perder imediatamente esse registro. Se isso acontecer, crie uma implantação voltada para cada um dos grupos de itens do dispositivo imediatamente após a falha na atualização para evitar a perda de componentes.
Como um dispositivo perde esse registro
Um dispositivo perde esse registro quando todas as seguintes condições são verdadeiras:
-
O dispositivo ainda não recebeu uma implantação bem-sucedida.
-
A primeira implantação no dispositivo falha após a ativação e é revertida.
-
Uma implantação subsequente é executada no dispositivo, o que danifica o estado interno.
-
O dispositivo será reiniciado mais tarde.
Um dispositivo cuja primeira implantação foi concluída com êxito não perde esse registro.
Informações: com.aws.greengrass.deployment. DeploymentDocumentDownloader: Chamando a nuvem do Greengrass para obter a configuração completa de implantação
Essa mensagem informativa pode aparecer várias vezes sem um erro, porque o dispositivo principal registra o erro no nível de log DEBUG. Esse problema pode ocorrer quando o dispositivo principal recebe um documento de implantação grande. Quando esse problema ocorre, a implantação faz tentativas indefinidamente, e o status é Em andamento (IN_PROGRESS). Para obter mais informações sobre como resolver esse problema, consulte esta entrada de solução de problemas.
Causado por: software.amazon.awssdk.services.greengrassv2data.model. GreengrassV2DataException: null (Serviço: GreengrassV2Data, Código de status: 403, ID da solicitação: < > some_request_id, ID da solicitação estendida: null)
Esse erro pode ocorrer quando uma API de plano de dados não tem a permissão iot:Connect. Caso você não tenha a política correta, receberá uma exceção GreengrassV2DataException: 403. Para criar uma política de permissão, siga estas instruções: Crie uma AWS IoT política.
Problemas em componente de dispositivos principais
Solucione problemas no componente do Greengrass em dispositivos principais.
Tópicos
Avisar: '<comando>' não é reconhecido como um comando interno ou externo
Você pode ver esse erro nos registros de um componente do Greengrass quando o software AWS IoT Greengrass Core não executa um comando no script do ciclo de vida do componente. O estado do componente passa a ser BROKEN como resultado desse erro. Esse erro poderá ocorrer se o usuário do sistema que executa o componente, por exemplo ggc_user, não encontrar o executável do comando nas pastas em PATH
Nos dispositivos Windows, verifique se a pasta que contém o executável está em PATH para o usuário do sistema que executa o componente. Se ela não estiver em PATH, faça um dos seguintes procedimentos:
-
Adicione a pasta do executável à variável de sistema
PATH, que está disponível para todos os usuários. Em seguida, reinicie o componente.Se você executar o Greengrass nucleus 2.5.0, depois de atualizar a variável do
PATHsistema, deverá reiniciar o software AWS IoT Greengrass Core para executar os componentes com a atualização.PATHSe o software AWS IoT Greengrass Core não usar a atualizaçãoPATHapós você reiniciar o software, reinicie o dispositivo e tente novamente. Para obter mais informações, consulte Execute o software AWS IoT Greengrass Core. -
Adicione a pasta do executável à variável de usuário
PATHpara o usuário do sistema que executa o componente.
O script Python não registra mensagens em log
Os dispositivos principais do Greengrass coletam logs que você pode usar para identificar problemas com componentes. Se as mensagens stdout e stderr do script Python não constarem nos logs do componente, talvez você tenha que liberar ou desabilitar o buffer para esses fluxos de saída padrão em Python. Faça o seguinte:
-
Execute o Python com o argumento -u
para desabilitar o buffer em stdoutestderr. -
Use Setenv na fórmula do componente para definir a variável de ambiente PYTHONUNBUFFERED
como uma string não vazia. Essa variável de ambiente desabilita o buffer em stdoutestderr. -
Libere o buffer para os fluxos
stdoutoustderr. Execute um destes procedimentos:-
Libere uma mensagem durante a impressão.
import sys print('Hello, error!', file=sys.stderr, flush=True) -
Libere uma mensagem após a impressão. É possível enviar várias mensagens antes de liberar o fluxo.
import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()
-
Para obter mais informações sobre como verificar se o script Python gera mensagens de log, consulte Monitore AWS IoT Greengrass logs.
A configuração do componente não é atualizada ao alterar a configuração padrão
Quando você altera DefaultConfiguration na fórmula de um componente, a nova configuração padrão não substitui a configuração existente do componente durante a implantação. Para aplicar a nova configuração padrão, é necessário redefinir a configuração do componente ao padrão. Ao implantar o componente, especifique uma única string vazia como a atualização de redefinição.
awsiot.greengrasscoreipc.model. UnauthorizedError
Esse erro pode ocorrer nos logs de um componente do Greengrass quando ele não tem permissão para executar uma operação de IPC em um recurso. Para conceder permissão a um componente para chamar uma operação de IPC, defina uma política de autorização de IPC na configuração do componente. Para obter mais informações, consulte Autorizar componentes a realizar operações de IPC.
dica
Se você alterar DefaultConfiguration na fórmula de um componente, deverá redefinir a configuração do componente à nova configuração padrão. Ao implantar o componente, especifique uma única string vazia como a atualização de redefinição. Para obter mais informações, consulte A configuração do componente não é atualizada ao alterar a configuração padrão.
com.aws.greengrass.authorization.exceptions. AuthorizationException: ID de política duplicada "<id" para a > "<>ComponentList” principal
Esse erro poderá ocorrer se várias políticas de autorização de IPC, inclusive em todos os componentes do dispositivo principal, usarem o mesmo ID de política.
Verifique as políticas de autorização de IPC dos componentes, corrija as possíveis duplicatas e tente novamente. Para criar IDs de política exclusivos, recomendamos combinar o nome do componente, o nome do serviço de IPC e um contador. Para obter mais informações, consulte Autorizar componentes a realizar operações de IPC.
dica
Se você alterar DefaultConfiguration na fórmula de um componente, deverá redefinir a configuração do componente à nova configuração padrão. Ao implantar o componente, especifique uma única string vazia como a atualização de redefinição. Para obter mais informações, consulte A configuração do componente não é atualizada ao alterar a configuração padrão.
com.aws.greengrass.tes. CredentialRequestHandler: Erro na recuperação AwsCredentials do TES (HTTP 400)
Você pode ver esse erro quando um dispositivo principal não consegue obter AWS credenciais do serviço de troca de tokens. O código de status HTTP 400 indica que esse erro ocorreu porque a função IAM de troca de tokens do dispositivo principal não existe ou não tem uma relação de confiança que permita que o provedor de AWS IoT credenciais a assuma.
Faça o seguinte:
-
Identifique o perfil de troca de tokens que o dispositivo principal utiliza. A mensagem de erro inclui o alias da AWS IoT função do dispositivo principal, que aponta para a função de troca de tokens. Execute o comando a seguir em seu computador de desenvolvimento e
MyGreengrassCoreTokenExchangeRoleAliassubstitua-o pelo nome do alias da AWS IoT função na mensagem de erro.aws iot describe-role-alias --role-aliasMyGreengrassCoreTokenExchangeRoleAliasA resposta inclui o nome do recurso da Amazon (ARN) do perfil do IAM de troca de tokens.
{ "roleAliasDescription": { "roleAlias": "MyGreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/MyGreengrassCoreTokenExchangeRoleAlias", "roleArn": "arn:aws:iam::123456789012:role/MyGreengrassV2TokenExchangeRole", "owner": "123456789012", "credentialDurationSeconds": 3600, "creationDate": "2021-02-05T16:46:18.042000-08:00", "lastModifiedDate": "2021-02-05T16:46:18.042000-08:00" } } -
Verifique se o perfil existe. Execute o comando a seguir e
MyGreengrassV2TokenExchangeRolesubstitua pelo nome da função de troca de tokens.aws iam get-role --role-nameMyGreengrassV2TokenExchangeRoleSe o comando retornar o erro
NoSuchEntity, o perfil não existe e é necessário criá-lo. Para obter mais informações sobre como criar e configurar o perfil, consulte Autorize os dispositivos principais a interagir com os serviços AWS. -
Verifique se a função tem uma relação de confiança que permita que o provedor de AWS IoT credenciais a assuma. A resposta da etapa anterior contém
AssumeRolePolicyDocument, que define as relações de confiança do perfil. O perfil deve definir uma relação de confiança que permita quecredentials---iot.amazonaws.com.rproxy.goskope.como utilize. Esse documento deve ser semelhante ao exemplo abaixo.Se as relações de confiança do perfil não permitirem que
credentials---iot.amazonaws.com.rproxy.goskope.como utilize, será necessário adicionar uma relação de confiança ao perfil. Para obter mais informações, consulte Modificar um perfil no Guia do usuário do AWS Identity and Access Management .
com.aws.greengrass.tes. CredentialRequestHandler: Erro na recuperação AwsCredentials do TES (HTTP 403)
Você pode ver esse erro quando um dispositivo principal não consegue obter AWS credenciais do serviço de troca de tokens. O código de status HTTP 403 indica que esse erro ocorreu porque as AWS IoT políticas do dispositivo principal não concedem a iot:AssumeRoleWithCertificate permissão para o alias de AWS IoT função do dispositivo principal.
Analise as AWS IoT políticas do dispositivo principal e adicione a iot:AssumeRoleWithCertificate permissão para o alias de AWS IoT função do dispositivo principal. A mensagem de erro inclui o alias da AWS IoT função atual do dispositivo principal. Para obter mais informações sobre essa permissão e como atualizar as AWS IoT políticas do dispositivo principal, consulte AWS IoT Política mínima para dispositivos AWS IoT Greengrass V2 principais Atualizar a AWS IoT política de um dispositivo principal e.
com.aws.greengrass.tes. CredentialsProviderError: Não foi possível carregar credenciais de nenhum provedor
Talvez você veja esse erro quando o componente tenta solicitar AWS credenciais e não consegue se conectar ao serviço de troca de tokens.
Faça o seguinte:
-
Verifique se o componente declara uma dependência com o componente de serviço de troca de tokens,
aws.greengrass.TokenExchangeService. Em caso negativo, adicione a dependência e reimplante o componente. -
Se o componente for executado no docker, certifique-se de aplicar as configurações de rede e as variáveis de ambiente corretas, de acordo com Use AWS credenciais em componentes de contêiner Docker (Linux).
-
Se o componente for escrito em NodeJS, defina DefaultResultOrder
dns.set como. ipv4first -
Verifique se há uma entrada em
/etc/hostsque comece com::1e contenhalocalhost. Remova a entrada para confirmar se ela que fez com que o componente se conectasse ao serviço de troca de tokens pelo endereço errado.
Erro recebido ao tentar recuperar metadados do ECS: Não foi possível conectar-se ao URL do endpoint: "token” < ExchangeServiceEndpoint >
Você pode ver esse erro quando o componente não executa o serviço de troca de tokens e um componente tenta solicitar AWS credenciais.
Faça o seguinte:
-
Verifique se o componente declara uma dependência com o componente de serviço de troca de tokens,
aws.greengrass.TokenExchangeService. Em caso negativo, adicione a dependência e reimplante o componente. -
Verifique se o componente usa AWS credenciais em seu ciclo de
installvida. AWS IoT Greengrass não garante a disponibilidade do serviço de troca de tokens durante oinstallciclo de vida. Atualize o componente para mover o código que usa as credenciais da AWS para o ciclo de vida destartupourune, em seguida, reimplante o componente.
CopyFrom: < ConfigurationPath já > é um contêiner, não uma folha
Esse erro pode ocorrer quando você altera um valor de configuração de um tipo de contêiner (lista ou objeto) para um tipo que não seja de contêiner (string, número ou booliano). Faça o seguinte:
-
Verifique se a configuração padrão na fórmula do componente define esse valor de configuração como lista ou objeto. Em caso afirmativo, remova-o ou altere-o.
-
Crie uma implantação para redefinir esse valor de configuração ao valor padrão. Para obter mais informações, consulte Criar implantações e Atualizar configurações do componente.
Em seguida, você pode definir esse valor de configuração como string, número ou booliano.
com.aws.greengrass.componentmanager.plugins.docker.exceptions. DockerLoginException: Erro ao fazer login no registro usando credenciais - 'O esboço recebeu dados incorretos'.
Esse erro pode ocorrer nos logs do Greengrass nucleus quando o componente Gerenciador de aplicações do Docker tenta fazer download de uma imagem do Docker de um repositório privado no Amazon Elastic Container Registry (Amazon ECR). Esse erro ocorre se você usa o assistente de credenciais do Dockerwincred (docker-credential-wincred). Como resultado, o Amazon ECR não pode armazenar as credenciais de login.
Faça uma das seguintes ações:
-
Se você não usa o assistente de credenciais do Docker
wincred, remova o programadocker-credential-wincreddo dispositivo principal. -
Se você usa o assistente de credenciais do Docker
wincred, faça o seguinte:-
Renomeie o programa
docker-credential-wincredno dispositivo principal. Substituawincredpor um novo nome para o assistente de credenciais do Docker para Windows. Por exemplo, você pode renomeá-lo paradocker-credential-wincredreal. -
Atualize a opção
credsStoreno arquivo de configuração do Docker (.docker/config.json) para usar o novo nome para o assistente de credenciais do Docker para Windows. Por exemplo, se você renomeou o programa paradocker-credential-wincredreal, atualize a opçãocredsStoreparawincredreal.{ "credsStore": "wincredreal" }
-
java.io.IOException: Não é possível executar o programa “cmd”...: [LogonUser] A senha dessa conta expirou.
Esse erro pode ocorrer em um dispositivo principal do Windows quando a senha do usuário do sistema que executa os processos do componente, como ggc_user, expirou. Como resultado, o software AWS IoT Greengrass Core não consegue executar processos de componentes como esse usuário do sistema.
Para atualizar a senha de um usuário do sistema Greengrass
-
Execute o comando a seguir como administrador para definir a senha do usuário.
ggc_userSubstitua pelo usuário do sistema epasswordsubstitua pela senha a ser definida.net userggc_userpassword -
Use o PsExec utilitário
para armazenar a nova senha do usuário na instância do Credential Manager da LocalSystem conta. passwordSubstitua pela senha do usuário que você definiu.psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
dica
Dependendo da configuração do Windows, a senha do usuário pode ser definida para expirar em uma data futura. Para garantir que as aplicações Greengrass continuem operando, monitore quando a senha expira e atualize-a antes disso. Também é possível definir que a senha nunca expire.
-
Para verificar quando um usuário e senha expiram, execute o comando a seguir.
net userggc_user| findstr /C:expires -
Para definir que a senha de um usuário nunca expire, execute o seguinte comando.
wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False -
Se você estiver usando o Windows 10 ou posterior, onde o
wmiccomando está obsoleto, execute o comando a seguir. PowerShell Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
aws.greengrass. StreamManager: Instantâneo excede o instante mínimo ou máximo
Ao atualizar o Gerenciador de fluxos v2.0.7 para uma versão entre v2.0.8 e v2.0.11, você pode ver o seguinte erro nos logs do componente Gerenciador de fluxos quando ele não pode ser iniciado.
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ê implantou o Gerenciador de fluxos v2.0.7 e deseja atualizar para uma versão mais recente, atualize-o diretamente para a versão 2.0.12. Para obter mais informações sobre o componente Gerenciador de fluxos, consulte Gerenciador de fluxos.
Problemas com o componente de função do Lambda do dispositivo principal
Solucione problemas com o componente de função do Lambda em dispositivos principais.
Tópicos
Os seguintes subsistemas cgroup não estão montados: dispositivos, memória
Esse erro pode ocorrer quando você executa uma função do Lambda em contêiner nos seguintes casos:
-
O dispositivo principal não tem o cgroup v1 habilitado para a memória ou os cgroups do dispositivo.
-
O dispositivo principal tem cgroups v2 habilitados. As funções do Lambda do Greengrass exigem cgroups v1, e os cgroups v1 e v2 são mutuamente exclusivos.
Para habilitar os cgroups v1, inicialize o dispositivo com os parâmetros do kernel Linux abaixo.
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
dica
Em um Raspberry Pi, edite o arquivo /boot/cmdline.txt para definir os parâmetros do kernel do dispositivo.
ipc_client.py:64, Erro HTTP 400: Solicitação incorreta, B'Não existe assinatura para o rótulo de origem ou-lambda-arn e o rótulo de assunto ou-lambda-arn < > < >
Você pode ver esse erro ao executar uma função Lambda V1, que usa o SDK AWS IoT Greengrass Core, em um dispositivo principal V2 sem especificar uma assinatura no componente antigo do roteador de assinatura. Para corrigir esse problema, implante e configure o roteador legado de assinatura para especificar as assinaturas necessárias. Para obter mais informações, consulte Importar funções do Lambda no V1.
Versão do componente descontinuada
É possível ver uma notificação no Personal Health Dashboard (PHD) quando uma versão do componente em seu dispositivo principal foi descontinuada. A versão do componente envia essa notificação ao PHD em até 60 minutos após ser descontinuada.
Para ver quais implantações você precisa revisar, faça o seguinte usando a AWS Command Line Interface:
-
Execute o comando a seguir para obter uma lista dos seus dispositivos principais.
aws greengrassv2 list-core-devices -
Execute o comando a seguir para recuperar o status dos componentes em cada dispositivo principal da Etapa 1. Substitua
pelo nome de cada dispositivo principal que será consultado.coreDeviceNameaws greengrassv2 list-installed-components --core-device-thing-namecoreDeviceName -
Agrupe os dispositivos principais com a versão descontinuada do componente instalada das etapas anteriores.
-
Execute o comando a seguir para recuperar o status de todas as tarefas de implantação de cada dispositivo principal da Etapa 3. Substitua
pelo nome do dispositivo principal que será consultado.coreDeviceNameaws greengrassv2 list-effective-deployments --core-device-thing-namecoreDeviceNameA resposta contém a lista de tarefas de implantação do dispositivo principal. É possível revisar a implantação para escolher outra versão do componente. Para obter mais informações sobre como revisar uma implantação, consulte Revisar implantações.
Problemas na interface de linha de comando do Greengrass
Solucione problemas com a CLI do Greengrass.
java.lang. RuntimeException: Não é possível criar o cliente ipc
Talvez você veja esse erro ao executar um comando da CLI do Greengrass e especificar uma pasta raiz diferente daquela em que o software AWS IoT Greengrass Core está instalado.
Siga um destes procedimentos para definir o caminho raiz e substitua-o pelo caminho para a instalação AWS IoT Greengrass do software Core:/greengrass/v2
-
Defina a variável de ambiente
GGC_ROOT_PATHcomo./greengrass/v2 -
Adicione o argumento
--ggcRootPathao comando, conforme mostrado no exemplo abaixo./greengrass/v2greengrass-cli --ggcRootPath<command> <subcommand> [arguments]/greengrass/v2
AWS Command Line Interface problemas
Solucionar AWS CLI problemas para AWS IoT Greengrass V2.
Erro: Escolha inválida: 'greengrassv2'
Você pode ver esse erro ao executar um AWS IoT Greengrass V2 comando com o AWS CLI (por exemplo,aws greengrassv2 list-core-devices).
Esse erro indica que você tem uma versão do AWS CLI que não oferece suporte AWS IoT Greengrass V2. Para usar AWS IoT Greengrass V2 com o AWS CLI, você deve ter uma das seguintes versões ou posterior:
-
Versão mínima AWS CLI V1: v1.18.197
-
Versão mínima AWS CLI V2: v2.1.11
dica
Você pode executar o comando a seguir para verificar a versão do AWS CLI que você tem.
aws --version
Para resolver esse problema, atualize o AWS CLI para uma versão posterior que ofereça suporte AWS IoT Greengrass V2. Para obter mais informações, consulte Como instalar, atualizar e desinstalar a AWS CLI no Guia do usuário da AWS Command Line Interface .