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.
Tópicos
- Veja os AWS IoT Greengrass principais registros de software e componentes
- AWS IoT Greengrass Principais problemas de software
- AWS IoT Greengrass problemas de nuvem
- Principais problemas de implantação de dispositivos
- Problemas com os principais componentes do dispositivo
- Problemas com o componente da função Lambda do dispositivo principal
- Versão do componente descontinuada
- Problemas na interface de linha de comando do Greengrass
- AWS Command Line Interface problemas
- Códigos de erro de implantação detalhados
- Códigos detalhados de status do componente
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
- Não é possível iniciar o software AWS IoT Greengrass principal como um serviço do sistema
- Não é possível configurar o nucleus como um serviço do sistema
- Não é possível se conectar a AWS IoT Core
- Erro de falta de memória
- Não é possível instalar o Greengrass CLI
- User root is not allowed to execute
- com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with
- Failed to map segment from shared object: operation not permitted
- Falha ao configurar o serviço Windows
- com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
- com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
- software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
- software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
- Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
- Operation aws.greengrass#<operation> is not supported by Greengrass
- java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
- java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
- Greengrass core device stuck on nucleus v2.12.3
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
Execute um destes procedimentos:
-
Configure e execute o software AWS IoT Greengrass Core como um serviço do sistema. Você deve configurar o software como um serviço do sistema para usar todos os recursos do AWS IoT Greengrass. Você pode instalar o systemd
ou usar um sistema init diferente. Para ter mais informações, consulte Configurar o núcleo do Greengrass como um serviço do sistema. -
Execute o software AWS IoT Greengrass Core sem um serviço de sistema. Você pode executar o software usando um script de carregamento que o instalador configura na pasta raiz do Greengrass. Para ter 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 software AWS IoT Greengrass principal.
-
Verifique se o dispositivo AWS IoT principal usa um certificado que permite as
iot:Subscribe
permissõesiot:Connect
iot:Publish
iot: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õesiot:Connect
iot:Publish
iot: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 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 o Greengrass CLI.
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)/tmp
pasta por padrão.
Execute um destes procedimentos:
-
Execute o comando a seguir para remontar a
/tmp
pasta comexec
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:
-
Descompacte o arquivo de instalação AWS IoT Greengrass do Core baixado
-
No
Greengrass
diretório, abra obin/greengrass.xml.template
arquivo. -
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:
-
Execute o comando a seguir para cancelar a configuraçã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 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:
-
AWS IoT Core ações políticas no Guia do AWS IoT desenvolvedor
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.
-
Recupere valores secretos —
aws.greengrass.SecretManager
-
Interaja com sombras locais —
aws.greengrass.ShadowManager
-
Gerencie implantações e componentes locais —
aws.greengrass.Cli
v2.6.0 ou posterior -
Autenticar e autorizar dispositivos clientes —
aws.greengrass.clientdevices.Auth
v2.2.0 ou posterior
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
-
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.
-
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:
-
Criptografia e decodificação secretas no Guia do Usuário AWS Secrets Manager
-
Autorize os dispositivos principais a interagir com os serviços AWS
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 PKCSprovedor #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:
-
Em seu dispositivo principal do Greengrass, execute o comando a seguir para interromper o software Greengrass Core.
-
Em 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.
GreengrassInstaller
Substitua pela pasta que você deseja usar. -
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.
-
Execute o comando a seguir para iniciar o software Greengrass Core.
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
- Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
- Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
- software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
- 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
- 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
- Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration
- Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
- Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
- Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)
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.
Tópicos
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. ProcureStatus Code: 403
no registro de erros para identificar esse problema. Para resolver esse problema, adicione agreengrass: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:Post
usando 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.
Tópicos
- Warn: '<command>' is not recognized as an internal or external command
- O script Python não registra mensagens
- A configuração do componente não é atualizada ao alterar a configuração padrão
- awsiot.greengrasscoreipc.model.UnauthorizedError
- com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
- com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
- Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
- copyFrom: <configurationPath> is already a container, not a leaf
- com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
- java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.
- aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant
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çãoPATH
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
-
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.
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 os componentes a realizar operações 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 os componentes a realizar operações 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:
-
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
MyGreengrassCoreTokenExchangeRoleAlias
substitua 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" } }
-
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. -
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 um
AssumeRolePolicyDocument
, que define as relações de confiança da função. A função deve definir uma relação de confiança quecredentials.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:
-
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. -
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 do Docker (Linux)
-
Se o componente estiver escrito em NodeJS, defina dns. setDefaultResultFaça o pedido
para ipv4first
. -
Verifique se
/etc/hosts
há uma entrada que comece com::1
e contenhalocalhost
. Remova a entrada para ver se ela fez com que o componente se conectasse ao serviço de troca de tokens no endereço errado.
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 oinstall
ciclo de vida. Atualize o componente para mover o código que usa AWS credenciais para orun
ciclo de vidastartup
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:
-
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.
-
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
Dockerdocker-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 odocker-credential-wincred
programa do dispositivo principal. -
Se você usar o auxiliar de credenciais do
wincred
Docker, faça o seguinte:-
Renomeie o
docker-credential-wincred
programa no dispositivo principal.wincred
Substitua por um novo nome para o auxiliar de credenciais do Windows Docker. Por exemplo, você pode renomeá-lo paradocker-credential-wincredreal
. -
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 acredsStore
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
-
Execute o comando a seguir como administrador para definir a senha do usuário. Substitua
ggc_user pelo usuário
do sistema e substitua asenha pela senha
a ser definida.net user
ggc_user
password
-
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
wmic
comando 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.
Tópicos
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
-
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 a ser consultado.coreDeviceName
aws greengrassv2 list-installed-components --core-device-thing-name
coreDeviceName
-
Reúna os dispositivos principais com a versão descontinuada do componente instalada nas etapas anteriores.
-
Execute o comando a seguir para recuperar o status de todos os trabalhos de implantação de cada dispositivo principal da Etapa 3.
Substitua pelo nome do dispositivo principal a ser consultado.coreDeviceName
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
substituí-lo pelo caminho para a instalação AWS IoT Greengrass do software Core:/greengrass/v2
-
Defina a variável de ambiente
GGC_ROOT_PATH
como
./greengrass/v2
-
Adicione o
--ggcRootPath
argumento ao seu comando conforme mostrado no exemplo a seguir./greengrass/v2
greengrass-cli --ggcRootPath
<command> <subcommand> [arguments]/greengrass/v2
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 .