Solução de problemas AWS IoT Greengrass V2 - 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 AWS IoT Greengrass V2

Use as informações e soluções de solução de problemas desta seção para ajudar a resolver problemas com AWS IoT Greengrass Version 2.

Veja os AWS IoT Greengrass principais registros 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 dispositivos principais para gravar registros em CloudWatch registros, para que você possa solucionar problemas remotamente nos dispositivos principais. Esses registros podem ajudar você a identificar problemas com componentes, implantações e dispositivos principais. Para ter mais informações, consulte Monitore AWS IoT Greengrass os registros.

AWS IoT Greengrass Principais problemas de software

Solucione os AWS IoT Greengrass principais problemas do software.

Tópicos

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 ter mais informações, consulte Desinstale o software AWS IoT Greengrass principal.

Não é possível iniciar o software AWS IoT Greengrass principal como um serviço do sistema

Se o software AWS IoT Greengrass principal não for iniciado, 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 nucleus 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. Em dispositivos Linux, esse erro geralmente ocorre se o dispositivo principal não tiver o sistema de inicialização systemd. O instalador pode configurar com êxito o software AWS IoT Greengrass Core, mesmo que não consiga configurar o serviço do sistema.

Execute um destes procedimentos:

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 software AWS IoT Greengrass principal.

  • Verifique se o dispositivo AWS IoT principal usa um certificado que permite as iot:Subscribe permissões iot:Connect iot:Publishiot:Receive,, e.

  • Se seu dispositivo principal usa um proxy de rede, verifique se seu dispositivo principal tem uma função de dispositivo e se essa função permite as iot:Subscribe permissões iot:Connect iot:Publishiot:Receive,, e.

Erro de falta de memória

Esse erro geralmente ocorre se o dispositivo não tiver 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 pilha para controlar a alocação de memória. Para ter mais informações, consulte Controle a alocação de memória com opções de JVM.

Não é possível instalar o Greengrass CLI

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 CLI do Greengrass não está instalado porque seu dispositivo principal é membro de um grupo de coisas que tem uma implantação existente. Se você ver essa mensagem, poderá implantar manualmente o componente da CLI do Greengrass (aws.greengrass.Cli) no dispositivo para instalar a CLI do Greengrass. Para ter mais informações, consulte Instale a CLI do Greengrass.

User root is not allowed to execute

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 nenhum grupo. Para o usuário padrão do ggc_user sistema, esse erro é semelhante ao seguinte:

Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.

Verifique se seu /etc/sudoers arquivo dá permissão ao usuário para ser executado sudo como outros grupos. A permissão para o usuário entrar /etc/sudoers deve ser semelhante ao exemplo a seguir.

root ALL=(ALL:ALL) ALL

com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with

Você pode ver esse erro quando o dispositivo principal tenta executar um componente e o núcleo do Greengrass não especifica um usuário padrão do sistema a ser usado para executar componentes.

Para corrigir esse problema, configure o núcleo do Greengrass para especificar o usuário padrão do sistema que executa os componentes. Para obter mais informações, consulte Configurar o usuário que executa os componentes e Configurar o usuário padrão do componente.

Failed to map segment from shared object: operation not permitted

Você pode ver esse erro quando o software AWS IoT Greengrass Core falha ao iniciar porque a /tmp pasta está montada com noexec permissões. A biblioteca AWS Common Runtime (CRT) usa a /tmp pasta por padrão.

Execute um destes procedimentos:

  • Execute o comando a seguir para remontar a /tmp pasta com exec permissões e 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 jvmOptions parâmetro na configuração do componente nucleus do Greengrass em uma implantação ou ao instalar o AWS IoT Greengrass software Core. Substitua /path/to/use pelo caminho para uma pasta que a biblioteca CRT possa usar. AWS

    { "jvmOptions": "-Daws.crt.lib.dir=\"/path/to/use\"" }

Falha ao configurar o serviço Windows

Você pode ver esse erro se você instalar o software AWS IoT Greengrass Core em um dispositivo Microsoft Windows 2016. O software AWS IoT Greengrass Core não é compatível com o Windows 2016. Para obter uma lista dos sistemas operacionais compatíveis, consultePlataformas compatíveis.

Se você precisar usar o Windows 2016, você pode fazer o seguinte:

  1. Descompacte o arquivo de instalação AWS IoT Greengrass do Core baixado

  2. No Greengrass diretório, abra o bin/greengrass.xml.template arquivo.

  3. Adicione a <autoRefresh> tag ao final do arquivo logo antes da </service> tag.

    </log> <autoRefresh>false</autoRefresh> </service>

com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager

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 CA raiz válido com o rootCaPath parâmetro no arquivo de configuração fornecido ao instalador. Para ter mais informações, consulte Instalar o software do AWS IoT Greengrass Core.

com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime

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 trabalho de implantação. Faça o seguinte:

  • Verifique se o dispositivo principal está conectado à Internet e pode alcançar o ponto final de AWS IoT dados que você configurou. Para obter mais informações sobre endpoints que os dispositivos principais usam, consultePermitir o tráfego de dispositivos por meio de um proxy ou firewall.

  • Verifique os registros do Greengrass em busca de outros erros que revelem outras causas principais.

software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid

Você pode ver esse erro ao instalar o software AWS IoT Greengrass Core com provisionamento automático, e o instalador usa um token de AWS sessão que não é válido. Faça o seguinte:

  • Se você usar credenciais de segurança temporárias, verifique se o token da sessão está correto e se você está copiando e colando o token de sessão completo.

  • Se você usa credenciais de segurança de longo prazo, verifique se o dispositivo não tem um token de sessão de uma época em que você usava credenciais temporárias anteriormente. Faça o seguinte:

    1. Execute o comando a seguir para cancelar a configuração da variável de ambiente do token de sessão.

      Linux or Unix
      unset AWS_SESSION_TOKEN
      Windows Command Prompt (CMD)
      set AWS_SESSION_TOKEN=
      PowerShell
      Remove-Item Env:\AWS_SESSION_TOKEN
    2. 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 obter mais informações, consulte Instale o software AWS IoT Greengrass principal com provisionamento manual de recursos ou Instale o software AWS IoT Greengrass principal com provisionamento de AWS IoT frota.

software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy

Você pode ver esse erro ao instalar o software AWS IoT Greengrass Core com provisionamento automático, e o instalador usa AWS credenciais que não têm as permissões necessárias. Para obter mais informações sobre as permissões necessárias, consultePolítica mínima de IAM para o instalador provisionar recursos.

Verifique as permissões da identidade do IAM das credenciais e conceda à identidade do IAM todas as permissões necessárias que estejam faltando.

Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request

Você pode ver esse erro ao usar o componente gerenciador de sombras para sincronizar as sombras do dispositivo. 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 estão faltando. Para mais informações, consulte:

Operation aws.greengrass#<operation> is not supported by Greengrass

Você pode ver esse erro ao usar uma operação de comunicação entre processos (IPC) em um componente personalizado do Greengrass, e o componente AWS fornecido necessário 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 quando você implanta seu componente.

java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)

Você pode ver esse erro no arquivo de log do gerenciador de stream (aws.greengrass.StreamManager.log) ao configurar o stream manager para usar uma pasta raiz que não existe ou tem as permissões corretas. Para obter mais informações sobre como configurar essa pasta, consulte configuração do gerenciador de fluxo.

com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist

Esse erro ocorre quando o componente do provedor PKCS #11 não consegue encontrar 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 a etiqueta 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 seu HSM suportar IDs de objeto, verifique se a chave privada e o certificado usam o mesmo ID de objeto no HSM.

Consulte a documentação do seu HSM para saber como consultar detalhes sobre os tokens de segurança no HSM. Se você precisar alterar o slot, o rótulo do objeto ou o ID do objeto de um token de segurança, consulte a documentação do seu HSM para saber como fazer isso.

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: 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 a função IAM de troca de tokens do dispositivo principal não conceder permissão para obter o segredo, a implantação falhará e os registros do Greengrass incluirão esse erro.

Para autorizar um dispositivo principal a baixar um segredo
  1. Adicione a secretsmanager:GetSecretValue permissão à função 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 ter mais informações, consulte Autorize os dispositivos principais a interagir com os serviços AWS.

  2. Reaplique a implantação no dispositivo principal. Execute um destes procedimentos:

    • Revise a implantação sem nenhuma alteração. O dispositivo principal tenta baixar o segredo novamente quando recebe a implantação revisada. Para ter mais informações, consulte Revise as implantações.

    • Reinicie o software AWS IoT Greengrass principal para tentar a implantação novamente. Para mais informações, consulte Execute o software AWS IoT Greengrass Core.

    A implantação será bem-sucedida se o gerenciador secreto baixar o segredo com êxito.

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed

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 a função do IAM de troca de tokens do dispositivo principal não conceder permissão para descriptografar o segredo, a implantação falhará e os registros do Greengrass incluirão esse erro.

Para corrigir o problema, adicione a kms:Decrypt permissão à função de troca de tokens do dispositivo principal. Para mais informações, consulte:

java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi

Você pode ver 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, você deve usar o Greengrass nucleus v2.5.3 ou posterior.

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 Requisitos da documentação do Fornecedor PKCS #11 componente.

Greengrass core device stuck on nucleus v2.12.3

Se seu dispositivo principal do Greengrass não revisar sua implantação a partir da versão 2.12.3 do nucleus, talvez seja necessário baixar e substituir o arquivo Greengrass.jar pela versão 2.12.2 do núcleo do Greengrass. Faça o seguinte:

  1. Em seu dispositivo principal do Greengrass, execute o comando a seguir para interromper o software Greengrass Core.

    Linux or Unix
    sudo systemctl stop greengrass
    Windows Command Prompt (CMD)
    sc stop "greengrass"
    PowerShell
    Stop-Service -Name "greengrass"
  2. Em seu dispositivo principal, baixe o AWS IoT Greengrass software em um arquivo chamadogreengrass-2.12.2.zip.

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip -OutFile greengrass-2.12.2.zip
  3. Descompacte o software AWS IoT Greengrass Core em uma pasta no seu dispositivo. GreengrassInstallerSubstitua pela pasta que você deseja usar.

    Linux or Unix
    unzip greengrass-2.12.2.zip -d GreengrassInstaller && rm greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-2.12.2.zip -C GreengrassInstaller && del greengrass-2.12.2.zip
    PowerShell
    Expand-Archive -Path greengrass-2.12.2.zip -DestinationPath .\\GreengrassInstaller rm greengrass-2.12.2.zip
  4. Execute o comando a seguir para substituir o arquivo JAR do Greengrass versão 2.12.3 do núcleo pelo arquivo JAR do Greengrass versão 2.12.2 do núcleo.

    Linux or Unix
    sudo cp ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
    Windows Command Prompt (CMD)
    robocopy ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib /E
    PowerShell
    cp -Path ./GreengrassInstaller/lib/Greengrass.jar -Destination /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
  5. Execute o comando a seguir para iniciar o software Greengrass Core.

    Linux or Unix
    sudo systemctl start greengrass
    Windows Command Prompt (CMD)
    sc start "greengrass"
    PowerShell
    Start-Service -Name "greengrass"

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.

An error occurred (AccessDeniedException) when calling the CreateComponentVersion operation: User: arn:aws:iam::123456789012:user/<username> is not authorized to perform: null

Você pode ver esse erro ao criar uma versão do componente a partir do AWS IoT Greengrass console ou com a CreateComponentVersionoperação.

Esse erro indica que sua receita não é um JSON ou YAML válido. Verifique a sintaxe da sua receita, corrija os problemas de sintaxe e tente novamente. Você pode usar um verificador de sintaxe JSON ou YAML online para identificar problemas de sintaxe em sua receita.

Invalid Input: Encountered following errors in Artifacts: {<s3ArtifactUri> = Specified artifact resource cannot be accessed}

Você pode ver esse erro ao criar uma versão do componente a partir do AWS IoT Greengrass console ou com a CreateComponentVersionoperação. Esse erro indica que um artefato S3 na receita 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 de artefatos de componentes.

  • Verifique se o URI do artefato é um URL válido do objeto do S3 e verifique se o artefato existe nesse URL do objeto do S3.

  • Verifique se você Conta da AWS tem permissão para acessar o artefato na URL do objeto do S3.

INACTIVE deployment status

Você pode obter um status de INACTIVE implantação ao chamar a ListDeploymentsAPI sem as AWS IoT políticas dependentes necessárias. Você deve ter as permissões necessárias para obter um status de implantação preciso. Você pode encontrar as ações dependentes consultando as Ações definidas por AWS IoT Greengrass V2 e seguindo as permissões necessárias paraListDeployments. Sem as AWS IoT permissões dependentes necessárias, você ainda verá o status de implantação, mas poderá ver um status de implantação impreciso deINACTIVE.

Principais problemas de implantação de dispositivos

Solucione problemas de implantação nos dispositivos principais do Greengrass. Cada entrada corresponde a uma mensagem de registro que você pode ver no seu dispositivo principal.

Tópicos

Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact

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 como resultado desse erro.

Quando você recebe esse erro, o registro também inclui um rastreamento de pilha que você pode 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 Failed to download artifact erro.

software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)

O PackageDownloadException erro pode incluir esse rastreamento de pilha nos seguintes casos:

  • O artefato do componente não está disponível na URL do objeto do S3 que você especifica na receita 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 da URL do objeto S3 que você especifica na receita do componente. Verifique se a função de troca de tokens permite s3:GetObject a URL do objeto S3 em que o artefato está disponível.

software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <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 a seguinte mensagem.

reason: Failed to determine S3 bucket location

Verifique se a função de troca de tokens do dispositivo principal permite s3:GetBucketLocation o bucket S3 em que o artefato está disponível.

Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.

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 para a versão anterior que o dispositivo principal espera. Se você não conseguir restaurar o arquivo para a 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 seu dispositivo principal. Esse erro pode ocorrer se o arquivo do artefato for corrompido durante o download. Crie uma nova implantação e tente novamente.

Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>

Você pode ver esse erro quando um dispositivo principal não consegue encontrar uma versão do componente que atenda aos requisitos das implantações desse 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 uma coisa, um grupo de coisas ouLOCAL_DEPLOYMENT, que representa a implantação local no dispositivo principal.

Esse problema pode ocorrer nos seguintes casos:

  • O dispositivo principal é o alvo de várias implantações que têm requisitos de versão de componentes conflitantes. Por exemplo, o dispositivo principal pode ser o alvo de várias implantações que incluem um com.example.HelloWorld componente, 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, então a implantação falha.

  • 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 componentes 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:ResolveComponentCandidates permissão. Procure Status Code: 403 no registro de erros para identificar esse problema. Para resolver esse problema, adicione a greengrass:ResolveComponentCandidates permissão à AWS IoT política do dispositivo principal. Para ter mais informações, consulte AWS IoTPolítica mínima para dispositivos AWS IoT Greengrass V2 principais.

Para resolver esse problema, revise as implantações para incluir versões de componentes compatíveis ou remover as incompatíveis. Para obter mais informações sobre como revisar as implantações na nuvem, consulte. Revise as implantações Para obter mais informações sobre como revisar implantações locais, consulte o comando AWS IoT Greengrass CLI deployment create.

software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility

Você pode ver esse erro ao implantar um componente em um dispositivo principal, e o componente não lista uma plataforma compatível com a plataforma do dispositivo principal. Execute um destes procedimentos:

  • Se o componente for um componente personalizado do Greengrass, você poderá atualizar o componente para que seja compatível com o dispositivo principal. Adicione um novo manifesto que corresponda à plataforma do dispositivo principal ou atualize um manifesto existente para corresponder à plataforma do dispositivo principal. Para ter mais informações, consulte AWS IoT Greengrass referência da receita do 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 AWS re:Postusando a AWS IoT Greengrass tag ou entre em contato AWS Support.

com.aws.greengrass.componentmanager.exceptions.PackagingException: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-<version> to aws.greengrass.Nucleus-<version> but no component of type nucleus was included as target component

Você pode ver esse erro ao implantar um componente que depende do núcleo do Greengrass, e o dispositivo principal executa uma versão anterior do núcleo do Greengrass 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 ter mais informações, consulte Comportamento de atualização do núcleo Greengrass.

Você deve revisar a implantação para especificar a versão do núcleo do Greengrass que você deseja usar. Execute um destes procedimentos:

  • Revise a implantação para especificar a versão do núcleo do Greengrass que o dispositivo principal executa atualmente.

  • Revise a implantação para especificar uma versão secundária posterior do núcleo do Greengrass. 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 ter mais informações, consulte AWS-componentes fornecidos.

Error: com.aws.greengrass.deployment.exceptions.DeploymentException: Unable to process deployment. Greengrass launch directory is not set up or Greengrass is not set up as a system service

Você pode ver esse erro ao mover um dispositivo Greengrass de um grupo de coisas para outro e depois voltar 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 núcleo Greengrass.

A seguir está um script Linux para recriar o diretório de inicialização. Salve o script em um arquivo chamadofix_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 executar o script, execute o seguinte comando:

[root@ip-172-31-27-165 ~]# ./fix_directory.sh /greengrass/v2 2.9.5 Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro

Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration

Você pode ver esse erro quando o dispositivo principal recebe um documento de implantação grande, que é um documento de implantação maior que 7 KB (para implantações que visam coisas) ou 31 KB (para implantações que visam grupos de coisas). Para recuperar um documento de implantação grande, 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 tenta novamente indefinidamente e seu status é Em andamento ()IN_PROGRESS.

Para resolver esse problema, adicione a greengrass:GetDeploymentConfiguration permissão à AWS IoT política do dispositivo principal. Para ter mais informações, consulte Atualizar a AWS IoT política de um dispositivo principal.

Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy

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 seus grupos de coisas e remover componentes de qualquer grupo de coisas do qual você removeu o dispositivo principal. Se o dispositivo principal executar o Greengrass nucleus v2.5.0, a implantação falhará. Se o dispositivo principal executar o Greengrass nucleus v2.5.1 ou posterior, a implantação prosseguirá, mas não removerá os componentes. Para obter mais informações sobre o comportamento de remoção de grupos de coisas, consulteImplemente AWS IoT Greengrass componentes em dispositivos.

Para atualizar o comportamento do dispositivo principal para remover componentes de grupos de coisas dos quais você remove o dispositivo principal, adicione a greengrass:ListThingGroupsForCoreDevice permissão à AWS IoT política do dispositivo principal. Para ter mais informações, consulte Atualizar a AWS IoT política de um dispositivo principal.

Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration

Você pode ver essa mensagem informativa impressa várias vezes sem erros, porque o dispositivo principal registra o erro no nível do DEBUG registro. Esse problema pode ocorrer quando o dispositivo principal recebe um grande documento de implantação. Quando esse problema ocorre, a implantação tenta novamente indefinidamente e seu status é Em andamento ()IN_PROGRESS. Para obter mais informações sobre como resolver esse problema, consulte esta entrada de solução de problemas.

Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)

Talvez você veja esse erro quando uma API de plano de dados não tem iot:Connect permissão. Se você não tiver a política correta, você receberá umaGreengrassV2DataException: 403. Para criar uma política de permissão, siga estas instruções:Criar uma política do AWS IoT.

Problemas com os principais componentes do dispositivo

Solucione problemas com componentes do Greengrass nos dispositivos principais.

Warn: '<command>' is not recognized as an internal or external command

Você pode ver esse erro nos registros de um componente do Greengrass quando o software AWS IoT Greengrass principal falha ao executar um comando no script de ciclo de vida do componente. O estado do componente BROKEN se torna resultado desse erro. Esse erro pode ocorrer se o usuário do sistema que executa o componente, por exemploggc_user, não conseguir encontrar o executável do comando nas pastas do PATH.

Em dispositivos Windows, verifique se a pasta que contém o executável está na do PATH usuário do sistema que executa o componente. Se estiver ausente doPATH, faça o seguinte:

  • Adicione a pasta do executável à variável do PATH sistema, 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 PATH sistema, você deverá reiniciar o software AWS IoT Greengrass Core para executar os componentes com a atualização. PATH Se o software AWS IoT Greengrass Core não usar a atualização PATH depois de reiniciar o software, reinicie o dispositivo e tente novamente. Para ter mais informações, consulte Execute o software AWS IoT Greengrass Core.

  • Adicione a pasta do executável à variável de PATH usuário do sistema que executa o componente.

O script Python não registra mensagens

Os principais dispositivos do Greengrass coletam registros que você pode usar para identificar problemas com componentes. Se os scripts stdout e stderr as mensagens do Python não aparecerem nos registros do componente, talvez seja necessário limpar o buffer ou desativar o buffer para esses fluxos de saída padrão em Python. Faça o seguinte:

  • Execute o Python com o argumento -u para desativar o buffer em e. stdout stderr

    Linux or Unix
    python3 -u hello_world.py
    Windows
    py -3 -u hello_world.py
  • Use Setenv na receita do seu componente para definir a variável de ambiente PYTHONUNBUFFERED como uma string não vazia. Essa variável de ambiente desativa o buffer em e. stdout stderr

  • Limpe o buffer para os fluxos stdout oustderr. Execute um destes procedimentos:

    • Limpe uma mensagem ao imprimir.

      import sys print('Hello, error!', file=sys.stderr, flush=True)
    • Limpe uma mensagem depois de imprimir. Você pode enviar várias mensagens antes de liberar o stream.

      import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()

Para obter mais informações sobre como verificar se seu script Python gera mensagens de log, consulte. Monitore AWS IoT Greengrass os registros

A configuração do componente não é atualizada ao alterar a configuração padrão

Quando você altera o DefaultConfiguration na receita de um componente, a nova configuração padrão não substituirá a configuração existente do componente durante uma implantação. Para aplicar a nova configuração padrão, você deve redefinir a configuração do componente para as configurações padrão. Ao implantar o componente, especifique uma única string vazia como atualização de redefinição.

Console
Redefinir caminhos
[""]
AWS CLI

O comando a seguir cria uma implantação em um dispositivo principal.

aws greengrassv2 create-deployment --cli-input-json file://reset-configuration-deployment.json

O reset-configuration-deployment.json arquivo contém o seguinte documento JSON.

{ "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "deploymentName": "Deployment for MyGreengrassCore", "components": { "com.example.HelloWorld": { "componentVersion": "1.0.0", "configurationUpdate": {, "reset": [""] } } } }
Greengrass CLI

O comando CLI do Greengrass a seguir cria uma implantação local em um dispositivo principal.

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "com.example.HelloWorld=1.0.0" \ --update-config reset-configuration-deployment.json

O reset-configuration-deployment.json arquivo contém o seguinte documento JSON.

{ "com.example.HelloWorld": { "RESET": [""] } }

awsiot.greengrasscoreipc.model.UnauthorizedError

Você pode ver esse erro nos registros de um componente do Greengrass quando o componente não tem permissão para realizar 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 ter mais informações, consulte Autorize componentes a realizar operações de IPC.

dica

Se você alterar o DefaultConfiguration na receita de um componente, deverá redefinir a configuração do componente para sua nova configuração padrão. Ao implantar o componente, especifique uma única string vazia como atualização de redefinição. Para ter 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: Duplicate policy ID "<id>" for principal "<componentList>"

Você pode ver esse erro se várias políticas de autorização de IPC, inclusive em todos os componentes do dispositivo principal, usarem a mesma ID de política.

Verifique as políticas de autorização de IPC de seus componentes, corrija quaisquer duplicatas e tente novamente. Para criar IDs de política exclusivos, recomendamos combinar o nome do componente, o nome do serviço IPC e um contador. Para ter mais informações, consulte Autorize componentes a realizar operações de IPC.

dica

Se você alterar o DefaultConfiguration na receita de um componente, deverá redefinir a configuração do componente para sua nova configuração padrão. Ao implantar o componente, especifique uma única string vazia como atualização de redefinição. Para ter mais informações, consulte A configuração do componente não é atualizada ao alterar a configuração padrão.

com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from 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:

  1. Identifique a função de troca de tokens que o dispositivo principal usa. 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 pelo nome do alias da AWS IoT função na mensagem de erro.

    aws iot describe-role-alias --role-alias MyGreengrassCoreTokenExchangeRoleAlias

    A resposta inclui o Amazon Resource Name (ARN) da função 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" } }
  2. Verifique se a função existe. Execute o comando a seguir e substitua MyGreengrassV2 TokenExchangeRole pelo nome da função de troca de tokens.

    aws iam get-role --role-name MyGreengrassV2TokenExchangeRole

    Se o comando retornar um NoSuchEntity erro, a função não existe e você deve criá-la. Para obter mais informações sobre como criar e configurar essa função, consulteAutorize os dispositivos principais a interagir com os serviços AWS.

  3. 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 umAssumeRolePolicyDocument, que define as relações de confiança da função. A função deve definir uma relação de confiança que credentials.iot.amazonaws.com permita assumi-la. Esse documento deve ser semelhante ao exemplo a seguir.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    Se as relações de confiança da função não credentials.iot.amazonaws.com permitirem assumi-la, você deverá adicionar essa relação de confiança à função. 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: Error in retrieving AwsCredentials from 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 IoTPolí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: Could not load credentials from any providers

Você pode ver 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:

Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"

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 do componente do serviço de troca de tokens,. aws.greengrass.TokenExchangeService Caso contrário, adicione a dependência e reimplante o componente.

  • Verifique se o componente usa AWS credenciais em seu ciclo de install vida. AWS IoT Greengrass não garante a disponibilidade do serviço de troca de tokens durante o install ciclo de vida. Atualize o componente para mover o código que usa AWS credenciais para o run ciclo de vida startup ou e, em seguida, reimplante o componente.

copyFrom: <configurationPath> is already a container, not a leaf

Você pode ver esse erro ao alterar um valor de configuração de um tipo de contêiner (uma lista ou objeto) para um tipo que não seja de contêiner (uma string, número ou booleano). Faça o seguinte:

  1. Verifique a receita do componente para ver se sua configuração padrão define esse valor de configuração como uma lista ou um objeto. Em caso afirmativo, remova ou altere esse valor de configuração.

  2. Crie uma implantação para redefinir esse valor de configuração para o valor padrão. Para obter mais informações, consulte Criar implantações e Atualizar configurações de componentes.

Em seguida, você pode definir esse valor de configuração como uma string, número ou booleano.

com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'

Você pode ver esse erro nos registros do núcleo do Greengrass quando o componente gerenciador de aplicativos Docker tenta baixar uma imagem do Docker de um repositório privado no Amazon Elastic Container Registry (Amazon ECR). Esse erro ocorre se você usar o auxiliar de credenciais do wincred Docker (). docker-credential-wincred Como resultado, o Amazon ECR não consegue armazenar as credenciais de login.

Execute uma das seguintes ações:

  • Se você não usa o auxiliar de credenciais do wincred Docker, remova o docker-credential-wincred programa do dispositivo principal.

  • Se você usar o auxiliar de credenciais do wincred Docker, faça o seguinte:

    1. Renomeie o docker-credential-wincred programa no dispositivo principal. wincredSubstitua por um novo nome para o auxiliar de credenciais do Windows Docker. Por exemplo, você pode renomeá-lo paradocker-credential-wincredreal.

    2. Atualize a credsStore opção no arquivo de configuração do Docker (.docker/config.json) para usar o novo nome para o auxiliar de credenciais do Docker do Windows. Por exemplo, se você renomeou o programa paradocker-credential-wincredreal, atualize a credsStore opção parawincredreal.

      { "credsStore": "wincredreal" }

java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.

Você pode ver esse erro em um dispositivo principal do Windows quando o usuário do sistema que executa os processos do componente, comoggc_user, tem uma senha expirada. 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
  1. Execute o comando a seguir como administrador para definir a senha do usuário. Substitua ggc_user pelo usuário do sistema e substitua a senha pela senha a ser definida.

    net user ggc_user password
  2. Use o PsExec utilitário para armazenar a nova senha do usuário na instância do Credential Manager da LocalSystem conta. Substitua a senha 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 seus aplicativos Greengrass continuem operando, monitore quando a senha expira e atualize-a antes que ela expire. Você também pode definir a senha do usuário para nunca expirar.

  • Para verificar quando um usuário e sua senha expiram, execute o comando a seguir.

    net user ggc_user | findstr /C:expires
  • Para definir que a senha de um usuário nunca expire, execute o comando a seguir.

    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 exceeds minimum or maximum instant

Ao atualizar o stream manager v2.0.7 para uma versão entre v2.0.8 e v2.0.11, você pode ver o seguinte erro nos registros do componente do gerenciador de stream se o componente 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ê implantou o stream manager v2.0.7 e deseja atualizar para uma versão posterior, você deve atualizar diretamente para o stream manager v2.0.12. Para obter mais informações sobre o componente do gerenciador de fluxo, consulteGerenciador de fluxo.

Problemas com o componente da função Lambda do dispositivo principal

Solucione problemas de componentes da função Lambda em dispositivos principais.

The following cgroup subsystems are not mounted: devices, memory

Você pode ver esse erro ao executar uma função 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 habilitado. As funções Lambda do Greengrass exigem cgroups v1, e cgroups v1 e v2 são mutuamente exclusivos.

Para habilitar o cgroups v1, inicialize o dispositivo com os seguintes parâmetros do kernel Linux.

cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
dica

Em um Raspberry Pi, edite o /boot/cmdline.txt arquivo para definir os parâmetros do kernel do dispositivo.

ipc_client.py:64,HTTP Error 400:Bad Request, b'No subscription exists for the source <label-or-lambda-arn> and subject <label-or-lambda-arn>

Você pode ver esse erro ao executar uma função Lambda V1, que usa AWS IoT Greengrass o SDK principal, em um dispositivo V2 core sem especificar uma assinatura no componente antigo do roteador de assinatura. Para corrigir esse problema, implante e configure o roteador de assinatura antigo para especificar as assinaturas necessárias. Para ter mais informações, consulte Importar funções V1 Lambda.

Versão do componente descontinuada

Você pode ver uma notificação em seu Personal Health Dashboard (PHD) quando uma versão do componente em seu dispositivo principal for descontinuada. A versão do componente envia essa notificação ao seu PHD dentro de 60 minutos após ser descontinuada.

Para ver quais implantações você precisa revisar, faça o seguinte usando o: AWS Command Line Interface

  1. Execute o comando a seguir para obter uma lista dos seus dispositivos principais.

    aws greengrassv2 list-core-devices
  2. Execute o comando a seguir para recuperar o status dos componentes em cada dispositivo principal da Etapa 1. coreDeviceNameSubstitua pelo nome de cada dispositivo principal a ser consultado.

    aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  3. Reúna os dispositivos principais com a versão descontinuada do componente instalada nas etapas anteriores.

  4. Execute o comando a seguir para recuperar o status de todos os trabalhos de implantação de cada dispositivo principal da Etapa 3. coreDeviceNameSubstitua pelo nome do dispositivo principal a ser consultado.

    aws greengrassv2 list-effective-deployments --core-device-thing-name coreDeviceName

    A resposta contém a lista de trabalhos de implantação para o dispositivo principal. Você pode 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: Unable to create ipc client

Você pode ver 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 /greengrass/v2 substituí-lo pelo caminho para a instalação AWS IoT Greengrass do software Core:

  • Defina a variável de ambiente GGC_ROOT_PATH como /greengrass/v2.

  • Adicione o --ggcRootPath /greengrass/v2 argumento ao seu comando conforme mostrado no exemplo a seguir.

    greengrass-cli --ggcRootPath /greengrass/v2 <command> <subcommand> [arguments]

AWS Command Line Interface problemas

Solucione AWS CLI problemas para AWS IoT Greengrass V2.

Error: Invalid choice: '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 é compatível AWS IoT Greengrass V2. Para usar AWS IoT Greengrass V2 com o AWS CLI, você deve ter uma das seguintes versões ou posteriores:

  • Versão AWS CLI V1 mínima: v1.18.197

  • Versão AWS CLI V2 mínima: 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 .