Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risoluzione dei problemi AWS IoT Greengrass V2
Utilizza le informazioni e le soluzioni per la risoluzione dei problemi in questa sezione per aiutarti a risolvere i problemi con. AWS IoT Greengrass Version 2
Argomenti
Vista AWS IoT Greengrass Software di base e log dei componenti
Il software AWS IoT Greengrass principale scrive i log nel file system locale che è possibile utilizzare per visualizzare informazioni in tempo reale sul dispositivo principale. Puoi anche configurare i dispositivi principali per scrivere i log nei CloudWatch log, in modo da poter risolvere i problemi dei dispositivi principali in remoto. Questi registri possono aiutarti a identificare i problemi relativi ai componenti, alle distribuzioni e ai dispositivi principali. Per ulteriori informazioni, consulta Monitora AWS IoT Greengrass i registri.
AWS IoT Greengrass Problemi software principali
Risolvi i problemi relativi al software AWS IoT Greengrass principale.
Argomenti
Impossibile avviare il AWS IoT Greengrass Software di base come servizio di sistema
Impossibile mappare il segmento dall'oggetto condiviso: operazione non consentita
com.aws.greengrass.util.exceptions. TLSAuthException: Impossibile ottenere Trust Manager
L'operazione aws.greengrass# < non > è supportata da Greengrass
java.lang. NoClassDefFoundError:// com/awsgreengrass/securityCryptoKeySpi
com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
Il dispositivo principale Greengrass è bloccato su nucleus v2.12.3
Problema con il modello systemd di Greengrass nucleus v2.14.0
ThrottlingException dall'API ListDeployments
ThrottlingExceptiondall'ListDeploymentsAPI: potresti vederlo quando hai un numero elevato di distribuzioni nell'account.
Per risolvere questo problema, esegui una delle seguenti operazioni:
Se usi SDK, specifica il MaxResult parametro. Ad esempio, per JavaSDK
con un valore piccolo (ad esempio 5). Puoi utilizzare AWS Service Quotas per richiedere un aumento del limite di velocità dell'API.
DescribeJobPuoi accedere alla console delle quote di servizio, selezionare le quote di AWS IoT e il nome del limite è DescribeJob Throttle limit. Puoi aumentarlo da 10 a 50.
Impossibile configurare il dispositivo principale
Se il programma di installazione del software AWS IoT Greengrass principale non riesce e non riesci a configurare un dispositivo principale, potresti dover disinstallare il software e riprovare. Per ulteriori informazioni, consulta Disinstalla il AWS IoT Greengrass Software di base.
Impossibile avviare il AWS IoT Greengrass Software di base come servizio di sistema
Se il software AWS IoT Greengrass principale non si avvia, controlla i registri dei servizi di sistema per identificare il problema. Un problema comune è quando Java non è disponibile nella variabile di ambiente PATH (Linux) o nella variabile di sistema PATH (Windows).
Impossibile configurare nucleus come servizio di sistema
Potresti visualizzare questo errore quando il programma di installazione del software AWS IoT Greengrass Core non riesce a configurarsi AWS IoT Greengrass come servizio di sistema. Sui dispositivi Linux, questo errore si verifica in genere se il dispositivo principale non dispone del sistema di inizializzazione systemd.
Esegui una delle seguenti operazioni:
-
Configura ed esegui il software AWS IoT Greengrass Core come servizio di sistema. È necessario configurare il software come servizio di sistema per utilizzare tutte le funzionalità di AWS IoT Greengrass. È possibile installare systemd
o utilizzare un sistema di inizializzazione diverso. Per ulteriori informazioni, consulta Configurare il nucleo Greengrass come servizio di sistema. -
Esegui il software AWS IoT Greengrass Core senza un servizio di sistema. È possibile eseguire il software utilizzando uno script di caricamento che il programma di installazione configura nella cartella principale di Greengrass. Per ulteriori informazioni, consulta Esegui il software AWS IoT Greengrass Core senza un servizio di sistema.
Impossibile connettersi a AWS IoT Core
Potresti visualizzare questo errore quando il software AWS IoT Greengrass principale non riesce a connettersi per AWS IoT Core recuperare i processi di distribuzione, ad esempio. Esegui questa operazione:
-
Verifica che il tuo dispositivo principale sia in grado di connettersi a Internet e. AWS IoT Core Per ulteriori informazioni sull' AWS IoT Core endpoint a cui si connette il dispositivo, consultaConfigura il AWS IoT Greengrass Software di base.
-
Verifica che il dispositivo AWS IoT principale utilizzi un certificato che consenta le
iot:Subscribeautorizzazioniiot:Connectiot:Publish,iot:Receive, e. -
Se il tuo dispositivo principale utilizza un proxy di rete, verifica che il dispositivo principale abbia un ruolo di dispositivo e che il suo ruolo consenta le
iot:Subscribeautorizzazioniiot:Connectiot:Publish,iot:Receive, e.
Errore di memoria insufficiente
Questo errore si verifica in genere se il dispositivo non dispone di memoria sufficiente per allocare un oggetto nell'heap Java. Sui dispositivi con memoria limitata, potrebbe essere necessario specificare una dimensione massima dell'heap per controllare l'allocazione della memoria. Per ulteriori informazioni, consulta Controlla l'allocazione della memoria con le opzioni JVM.
Impossibile installare Greengrass CLI
Potresti visualizzare il seguente messaggio nella console quando usi l'--deploy-dev-toolsargomento nel comando di installazione per AWS IoT Greengrass 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
Ciò si verifica quando il componente Greengrass CLI non è installato perché il dispositivo principale è membro di un gruppo di oggetti con una distribuzione esistente. Se viene visualizzato questo messaggio, è possibile distribuire manualmente il componente Greengrass CLI (aws.greengrass.Cli) sul dispositivo per installare il Greengrass CLI. Per ulteriori informazioni, consulta Installazione della CLI di Greengrass.
L'utente root non è autorizzato all'esecuzione
Potresti visualizzare questo errore quando l'utente che esegue il software AWS IoT Greengrass Core (in genereroot) non dispone dell'autorizzazione per l'esecuzione sudo con alcun utente e gruppo. Per l'utente ggc_user di sistema predefinito, questo errore è simile al seguente:
Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.
Verifica che il tuo /etc/sudoers file dia all'utente il permesso di funzionare sudo come altri gruppi. L'autorizzazione per l'utente in /etc/sudoers dovrebbe essere simile all'esempio seguente.
root ALL=(ALL:ALL) ALL
com.aws.greengrass.lifecyclemanager. GenericExternalService: Non è stato possibile determinare se eseguire con user/group
Potresti visualizzare questo errore quando il dispositivo principale tenta di eseguire un componente e Greengrass nucleus non specifica un utente di sistema predefinito da utilizzare per eseguire i componenti.
Per risolvere questo problema, configurate Greengrass nucleus per specificare l'utente di sistema predefinito che esegue i componenti. Per ulteriori informazioni, consulta Configurare l'utente che esegue i componenti e Configura l'utente predefinito del componente.
Impossibile mappare il segmento dall'oggetto condiviso: operazione non consentita
Potresti visualizzare questo errore quando il software AWS IoT Greengrass Core non si avvia perché la /tmp cartella è montata con noexec le autorizzazioni. La libreria AWS Common Runtime (CRT) /tmp cartella per impostazione predefinita.
Esegui una delle seguenti operazioni:
-
Esegui il comando seguente per rimontare la
/tmpcartella con leexecautorizzazioni e riprova.sudo mount -o remount,exec /tmp -
Se si esegue Greengrass nucleus v2.5.0 o successivo, è possibile impostare un'opzione JVM per modificare la cartella utilizzata dalla libreria CRT. AWS È possibile specificare il
jvmOptionsparametro nella configurazione del componente Greengrass nucleus in una distribuzione o quando si installa il software Core. AWS IoT Greengrass Sostituiscilo/path/to/usecon il percorso di una cartella utilizzabile dalla libreria AWS CRT.{ "jvmOptions": "-Daws.crt.lib.dir=\"/path/to/use\"" }
Impossibile configurare il servizio Windows
Potresti visualizzare questo errore se installi il software AWS IoT Greengrass Core su un dispositivo Microsoft Windows 2016. Il software AWS IoT Greengrass Core non è supportato in Windows 2016, per un elenco dei sistemi operativi supportati, consultaPiattaforme supportate.
Se è necessario utilizzare Windows 2016, è possibile effettuare le seguenti operazioni:
-
Decomprimi l'archivio di installazione di AWS IoT Greengrass Core scaricato
-
Nella
Greengrasscartella apri ilbin/greengrass.xml.templatefile. -
Aggiungete il
<autoRefresh>tag alla fine del file subito prima del</service>tag.</log> <autoRefresh>false</autoRefresh> </service>
com.aws.greengrass.util.exceptions. TLSAuthException: Impossibile ottenere Trust Manager
Potresti visualizzare questo errore quando installi il software AWS IoT Greengrass Core senza un file CA (Root Certificate Authority).
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
Verificate di specificare un file CA root valido con il rootCaPath parametro nel file di configurazione fornito al programma di installazione. Per ulteriori informazioni, consulta Installare il software AWS IoT Greengrass Core.
com.aws.greengrass.deployment. IotJobsHelper: Nessuna connessione disponibile durante l'iscrizione all'argomento relativo alle descrizioni di Iot Jobs. Riproverò tra qualche tempo
Potresti visualizzare questo messaggio di avviso quando il dispositivo principale non riesce a connettersi per iscriversi AWS IoT Core alle notifiche dei processi di distribuzione. Esegui questa operazione:
-
Verifica che il dispositivo principale sia connesso a Internet e possa raggiungere l'endpoint di AWS IoT dati che hai configurato. Per ulteriori informazioni sugli endpoint utilizzati dai dispositivi principali, consulta. Consenti il traffico dei dispositivi tramite un proxy o un firewall
-
Controlla i log di Greengrass per altri errori che rivelano altre cause principali.
software.amazon.awssdk.services.iam.model. IamException: il token di sicurezza incluso nella richiesta non è valido
Potresti visualizzare questo errore quando installi il software AWS IoT Greengrass Core con provisioning automatico e il programma di installazione utilizza un token di AWS sessione non valido. Esegui questa operazione:
-
Se utilizzi credenziali di sicurezza temporanee, verifica che il token di sessione sia corretto e che tu stia copiando e incollando il token di sessione completo.
-
Se utilizzi credenziali di sicurezza a lungo termine, verifica che il dispositivo non disponga di un token di sessione risalente a un periodo in cui in precedenza utilizzavi credenziali temporanee. Esegui questa operazione:
-
Esegui il comando seguente per annullare l'impostazione della variabile di ambiente del token di sessione.
-
Controlla se il file delle AWS credenziali,
~/.aws/credentials, contiene un token di sessione,.aws_session_tokenIn tal caso, rimuovi quella riga dal file.aws_session_token =AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
-
Puoi anche installare il software AWS IoT Greengrass Core senza fornire AWS le credenziali. Per ulteriori informazioni, consulta Installa AWS IoT Greengrass Software di base con fornitura manuale delle risorse o Installa AWS IoT Greengrass Software di base con AWS IoT approvvigionamento della flotta.
software.amazon.awssdk.services.iot.model. IotException: Utente: l'utente non è autorizzato a eseguire: iot: < > GetPolicy
Potresti visualizzare questo errore quando installi il software AWS IoT Greengrass Core con provisioning automatico e il programma di installazione utilizza AWS credenziali che non dispongono delle autorizzazioni richieste. Per ulteriori informazioni sulle autorizzazioni richieste, vedere. Policy IAM minima per l'installatore per il provisioning delle risorse
Verifica le autorizzazioni per l'identità IAM delle credenziali e concedi all'identità IAM tutte le autorizzazioni richieste mancanti.
Errore: com.aws.greengrass.shadowmanager.sync.model. FullShadowSyncRequest: Impossibile eseguire la richiesta cloud shadow get
Potresti visualizzare questo errore quando usi il componente shadow manager con AWS IoT Core cui sincronizzare le ombre del dispositivo. Il codice di stato HTTP 403 indica che questo errore si è verificato perché la AWS IoT policy del dispositivo principale non concede l'autorizzazione alla chiamata. GetThingShadow
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)
Per sincronizzare le ombre locali con AWS IoT Core, la AWS IoT policy del dispositivo principale deve concedere le seguenti autorizzazioni:
-
iot:GetThingShadow -
iot:UpdateThingShadow -
iot:DeleteThingShadow
Controlla la AWS IoT politica del dispositivo principale e aggiungi le autorizzazioni richieste mancanti. Per ulteriori informazioni, consulta gli argomenti seguenti:
-
AWS IoT Core azioni politiche nella Guida per gli AWS IoT sviluppatori
L'operazione aws.greengrass# < non > è supportata da Greengrass
È possibile che AWS venga visualizzato questo errore quando si utilizza un'operazione di comunicazione tra processi (IPC) in un componente Greengrass personalizzato e il componente richiesto non è installato sul dispositivo principale.
Per risolvere questo problema, aggiungete il componente richiesto come dipendenza nella composizione del componente, in modo che il software AWS IoT Greengrass Core installi il componente richiesto al momento della distribuzione del componente.
-
Recupera valori segreti —
aws.greengrass.SecretManager -
Interagisci con le ombre locali —
aws.greengrass.ShadowManager -
Gestisci le implementazioni e i componenti locali (aws.greengrass.Cliv2.6.0 o versioni successive)
-
Autentica e autorizza i dispositivi client: v2.2.0 o successivo
aws.greengrass.clientdevices.Auth
java.io. FileNotFoundException: < stream-manager-store-root-dir > /stream_manager_metadata_store (autorizzazione negata)
Potresti visualizzare questo errore nel file di registro di stream manager (aws.greengrass.StreamManager.log) quando configuri stream manager per utilizzare una cartella principale che non esiste o dispone delle autorizzazioni corrette. Stream manager Per ulteriori informazioni su come configurare questa cartella, consulta la configurazione Configurazione dello stream manager.
com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: la chiave privata o il certificato con etichetta non esiste < >
Questo errore si verifica quando il componente del provider PKCS #11 non riesce a trovare o caricare la chiave privata o il certificato specificato quando si configura il software AWS IoT Greengrass Core per l'utilizzo di un modulo di sicurezza hardware (HSM). Esegui questa operazione:
-
Verifica che la chiave privata e il certificato siano archiviati nell'HSM utilizzando lo slot, il PIN utente e l'etichetta dell'oggetto per i quali hai configurato il software AWS IoT Greengrass Core.
-
Verifica che la chiave privata e il certificato utilizzino la stessa etichetta oggetto nell'HSM.
-
Se il tuo HSM supporta gli ID oggetto, verifica che la chiave privata e il certificato utilizzino lo stesso ID oggetto nell'HSM.
Consulta la documentazione del tuo HSM per scoprire come richiedere dettagli sui token di sicurezza nell'HSM. Se devi modificare lo slot, l'etichetta dell'oggetto o l'ID dell'oggetto per un token di sicurezza, consulta la documentazione del tuo HSM per scoprire come farlo.
software.amazon.awssdk.services.secretsmanager.model. SecretsManagerException: Utente: l'utente non è autorizzato a eseguire: secretsmanager: on resource: arn < > GetSecretValue < >
Questo errore può verificarsi quando si utilizza il componente secret manager per distribuire un segreto. AWS Secrets Manager Se il ruolo IAM di scambio di token del dispositivo principale non concede l'autorizzazione per ottenere il segreto, la distribuzione ha esito negativo e i log di Greengrass includono questo errore.
Per autorizzare un dispositivo principale a scaricare un segreto
-
Aggiungi l'
secretsmanager:GetSecretValueautorizzazione al ruolo di scambio di token del dispositivo principale. La seguente dichiarazione politica di esempio concede il permesso di ottenere il valore di un segreto.{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }Per ulteriori informazioni, consulta Autorizza i dispositivi principali a interagire con i servizi AWS.
-
Riapplica la distribuzione al dispositivo principale. Esegui una delle seguenti operazioni:
-
Rivedi la distribuzione senza apportare modifiche. Il dispositivo principale tenta di scaricare nuovamente il segreto quando riceve la distribuzione modificata. Per ulteriori informazioni, consulta Rivedi le distribuzioni.
-
Riavvia il software AWS IoT Greengrass principale per riprovare la distribuzione. Per ulteriori informazioni, consulta Esegui il software AWS IoT Greengrass Core
La distribuzione ha esito positivo se Secret Manager scarica il segreto con successo.
-
software.amazon.awssdk.services.secretsmanager.model. SecretsManagerException: L'accesso a KMS non è consentito
Questo errore può verificarsi quando si utilizza il componente secret manager per distribuire un AWS Secrets Manager segreto crittografato da una AWS Key Management Service chiave. Se il ruolo IAM di scambio di token del dispositivo principale non concede l'autorizzazione per decrittografare il segreto, la distribuzione fallisce e i log di Greengrass includono questo errore.
Per risolvere il problema, aggiungi l'kms:Decryptautorizzazione al ruolo di scambio di token del dispositivo principale. Per ulteriori informazioni, consulta gli argomenti seguenti:
-
Crittografia e decrittografia segrete nella Guida per l'utente AWS Secrets Manager
-
Autorizza i dispositivi principali a interagire con i servizi AWS
java.lang. NoClassDefFoundError:// com/awsgreengrass/securityCryptoKeySpi
Potresti visualizzare questo errore quando provi a installare il software AWS IoT Greengrass Core con sicurezza hardware e utilizzi una versione precedente di Greengrass Nucleus che non supporta l'integrazione della sicurezza hardware. Per utilizzare l'integrazione della sicurezza hardware, è necessario utilizzare Greengrass nucleus v2.5.3 o successivo.
com.aws.greengrass.security.provider.pkcs11. PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
Potresti visualizzare questo errore quando usi la libreria TPM2 quando esegui Core come servizio di sistema. AWS IoT Greengrass
Questo errore indica che è necessario aggiungere una variabile di ambiente che fornisca la posizione dell'archivio PKCS #11 nel file di servizio AWS IoT Greengrass Core systemd.
Per ulteriori informazioni, consulta la sezione Requisiti della documentazione del Fornitore PKCS #11 componente.
Il dispositivo principale Greengrass è bloccato su nucleus v2.12.3
Se il dispositivo Greengrass core non modifica la distribuzione dalla versione 2.12.3 di nucleus, potrebbe essere necessario scaricare e sostituire il file con la versione 2.12.2 di Greengrass nucleus. Greengrass.jar Esegui questa operazione:
-
Sul dispositivo Greengrass Core, eseguite il seguente comando per arrestare il software Greengrass Core.
-
Sul dispositivo principale, scaricate il AWS IoT Greengrass software in un file denominato.
greengrass-2.12.2.zip -
Decomprimi il software AWS IoT Greengrass Core in una cartella sul tuo dispositivo. Sostituiscilo
GreengrassInstallercon la cartella che desideri utilizzare. -
Esegui il comando seguente per sovrascrivere il file JAR Greengrass versione 2.12.3 di nucleus con il file JAR Greengrass della versione 2.12.2 di nucleus.
-
Eseguite il comando seguente per avviare il software Greengrass Core.
Problema con il modello systemd di Greengrass nucleus v2.14.0
Potresti riscontrare questo problema se hai installato Greengrass nucleus v2.14.0 su un dispositivo Linux con il modello di servizio systemd predefinito. Esegui questa operazione:
-
Sul tuo dispositivo principale Greengrass, esegui il comando seguente per ripristinare il file di servizio systemd così com'è in nucleus v2.13.0 e versioni precedenti.
-
Applica le modifiche.
AWS IoT Greengrass problemi relativi al cloud
Utilizza le seguenti informazioni per risolvere i problemi relativi alla AWS IoT Greengrass console e all'API. Ogni voce corrisponde a un messaggio di errore che potresti visualizzare quando esegui un'azione.
Si è verificato un errore (AccessDeniedException) durante la chiamata all' CreateComponentVersion operazione: User: arn:aws:iam: < :123456789012:user/ username non è autorizzato a eseguire: null >
Potresti visualizzare questo errore quando crei una versione del componente dalla console o con l'operazione. AWS IoT Greengrass CreateComponentVersion
Questo errore indica che la tua ricetta non è un JSON o YAML valido. Controlla la sintassi della tua ricetta, correggi eventuali problemi di sintassi e riprova. Puoi utilizzare un correttore di sintassi JSON o YAML online per identificare i problemi di sintassi nella tua ricetta.
Input non valido: sono stati rilevati i seguenti errori in Artifacts: {s3 = Impossibile accedere alla risorsa artefatto specificata} < ArtifactUri >
Potresti visualizzare questo errore quando crei una versione del componente dalla console o con l' AWS IoT Greengrass operazione. CreateComponentVersion Questo errore indica che un elemento S3 nella composizione del componente non è valido.
Esegui questa operazione:
-
Verifica che il bucket S3 si trovi nello stesso in Regione AWS cui crei il componente. AWS IoT Greengrass non supporta le richieste interregionali per gli artefatti dei componenti.
-
Verifica che l'URI dell'artefatto sia un URL di oggetto S3 valido e controlla che l'artefatto esista nell'URL dell'oggetto S3.
-
Verifica di disporre dell'autorizzazione per accedere all' Account AWS artefatto tramite l'URL dell'oggetto S3.
Stato di distribuzione INATTIVO
Potresti ottenere uno stato di INACTIVE distribuzione quando chiami l'ListDeploymentsAPI senza le politiche dipendenti richieste. AWS IoT È necessario disporre delle autorizzazioni necessarie per ottenere uno stato di distribuzione accurato. Puoi trovare le azioni dipendenti cercando nelle Azioni definite da AWS IoT Greengrass V2 e seguendo le autorizzazioni necessarie per. ListDeployments Senza le AWS IoT autorizzazioni dipendenti richieste, vedrai comunque lo stato di distribuzione, ma potresti vedere uno stato di distribuzione impreciso di. INACTIVE
CreateDeployment restituisce una risposta positiva ma GetDeployment restituisce un errore 404
Potresti riscontrare questo problema quando chiami l'CreateDeploymentoperazione per la distribuzione su un AWS IoT oggetto o un gruppo di oggetti. La CreateDeployment chiamata restituisce un codice di 200 stato con un ID di distribuzione valido. Tuttavia, quando chiami GetDeployment con quell'ID di distribuzione, ricevi un ResourceNotFoundException errore. La AWS IoT Greengrass console mostra una pagina «Distribuzione non trovata» per l'URL di distribuzione. La distribuzione precedente per la destinazione potrebbe inoltre mostrare uno INACTIVE stato senza sostituzione.
Questo problema può verificarsi quando più CreateDeployment richieste hanno come obiettivo la stessa AWS IoT cosa contemporaneamente. Una condizione di gara può far sì che il cloud non riesca a registrare la distribuzione. Il dispositivo principale riceve e applica comunque la distribuzione tramite AWS IoT
Device Shadow, ma il servizio AWS IoT Greengrass cloud non ne ha alcuna registrazione. Una volta verificato questo problema, potrebbe influire anche sulle distribuzioni successive sullo stesso target.
Per risolvere e prevenire il problema, procedi come segue:
-
Evita di inviare
CreateDeploymentrichieste simultanee che hanno come obiettivo la stessa AWS IoT cosa. Serializza le tue richieste di distribuzione o aggiungi un ritardo tra di esse per assicurarti che solo unaCreateDeploymentchiamata sia indirizzata a un oggetto specifico alla volta. -
Se questo problema riguarda già il tuo obiettivo, le distribuzioni successive potrebbero continuare a restituire errori 404. Per risolvere il problema, elimina il record di distribuzione obsoleto per la destinazione interessata in modo che la distribuzione successiva possa procedere normalmente.
Principali problemi di distribuzione dei dispositivi
Risolvi i problemi di distribuzione sui dispositivi principali di Greengrass. Ogni voce corrisponde a un messaggio di registro che potresti visualizzare sul tuo dispositivo principale.
Errore: com.aws.greengrass.componentmanager.exceptions. PackageDownloadException: Impossibile scaricare l'artefatto
Potresti visualizzare questo errore quando il software AWS IoT Greengrass principale non riesce a scaricare un artefatto del componente quando il dispositivo principale applica una distribuzione. La distribuzione non riesce a causa di questo errore.
Quando si riceve questo errore, il registro include anche una traccia dello stack che è possibile utilizzare per identificare il problema specifico. Ciascuna delle seguenti voci corrisponde a un messaggio che potresti visualizzare nello stack trace del messaggio di Failed to download artifact errore.
Argomenti
Software.amazon.awssdk.services.s3.model.s3Exception: null (Servizio: S3, codice di stato: 403, ID richiesta: null,...)
L'errore potrebbe includere questa traccia PackageDownloadException dello stack nei seguenti casi:
-
L'artefatto del componente non è disponibile nell'URL dell'oggetto S3 specificato nella composizione del componente. Verifica di aver caricato l'artefatto nel bucket S3 e che l'URI dell'artefatto corrisponda all'URL dell'oggetto S3 dell'artefatto nel bucket.
-
Il ruolo di scambio di token del dispositivo principale non consente al software AWS IoT Greengrass Core di scaricare l'artefatto del componente dall'URL dell'oggetto S3 specificato nella ricetta del componente. Verifica che il ruolo di scambio di token
s3:GetObjectconsenta l'URL dell'oggetto S3 in cui l'artefatto è disponibile.
Software.amazon.awssdk.services.s3.model.s3Exception: accesso negato (servizio: S3, codice di stato: 403, ID richiesta: RequestID) < >
L'errore potrebbe includere questa traccia dello stack quando il PackageDownloadException dispositivo principale non dispone dell'autorizzazione per la chiamata. s3:GetBucketLocation Il messaggio di errore include anche il seguente messaggio.
reason: Failed to determine S3 bucket location
Verifica che il ruolo di scambio di token del dispositivo principale consenta s3:GetBucketLocation il bucket S3 in cui l'artefatto è disponibile.
Errore: com.aws.greengrass.componentmanager.exceptions. ArtifactChecksumMismatchException: il controllo di integrità dell'artefatto scaricato non è riuscito. Probabilmente a causa di un danneggiamento del file.
Potresti visualizzare questo errore quando il software AWS IoT Greengrass principale non riesce a scaricare un artefatto del componente quando il dispositivo principale applica una distribuzione. La distribuzione non riesce perché il checksum del file di artefatto scaricato non corrisponde al checksum AWS IoT Greengrass calcolato al momento della creazione del componente.
Esegui questa operazione:
-
Controlla se il file degli artefatti è stato modificato nel bucket S3 in cui è ospitato. Se il file è cambiato da quando hai creato il componente, ripristinalo alla versione precedente prevista dal dispositivo principale. Se non riesci a ripristinare il file alla versione precedente o se desideri utilizzare la nuova versione del file, crea una nuova versione del componente con il file artefatto.
-
Controlla la connessione Internet del tuo dispositivo principale. Questo errore può verificarsi se il file artefatto viene danneggiato durante il download. Crea una nuova distribuzione e riprova.
Errore: com.aws.greengrass.componentmanager.exceptions. NoAvailableComponentVersionException: Impossibile negoziare la versione del nome del componente con il cloud e nessuna versione locale applicabile che soddisfi i requisiti richiesti < > < >
Potresti visualizzare questo errore quando un dispositivo principale non riesce a trovare una versione del componente che soddisfi i requisiti delle distribuzioni per quel dispositivo principale. Il dispositivo principale verifica la presenza del componente nel AWS IoT Greengrass servizio e nel dispositivo locale. Il messaggio di errore include la destinazione di ciascuna distribuzione e i requisiti di versione di tale distribuzione per il componente. L'obiettivo di distribuzione può essere un oggetto, un gruppo di oggetti oLOCAL_DEPLOYMENT, che rappresenta la distribuzione locale sul dispositivo principale.
Questo problema può verificarsi nei seguenti casi:
-
Il dispositivo principale è l'obiettivo di più distribuzioni con requisiti di versione dei componenti in conflitto. Ad esempio, il dispositivo principale potrebbe essere l'obiettivo di più distribuzioni che includono un
com.example.HelloWorldcomponente, in cui una distribuzione richiede la versione 1.0.0 e l'altra richiede la versione 1.0.1. È impossibile avere un componente che soddisfi entrambi i requisiti, quindi l'implementazione non riesce. -
La versione del componente non esiste nel AWS IoT Greengrass servizio o nel dispositivo locale. Il componente potrebbe essere stato eliminato, ad esempio.
-
Esistono versioni dei componenti che soddisfano i requisiti di versione, ma nessuna è compatibile con la piattaforma del dispositivo principale.
-
La AWS IoT politica del dispositivo principale non concede l'
greengrass:ResolveComponentCandidatesautorizzazione. CercaStatus Code: 403nel registro degli errori per identificare questo problema. Per risolvere questo problema, aggiungi l'greengrass:ResolveComponentCandidatesautorizzazione alla AWS IoT policy del dispositivo principale. Per ulteriori informazioni, consulta AWS IoT Politica minima per i dispositivi AWS IoT Greengrass V2 principali.
Per risolvere questo problema, rivedi le distribuzioni per includere le versioni dei componenti compatibili o rimuovi quelle incompatibili. Per ulteriori informazioni su come rivedere le distribuzioni cloud, consulta. Rivedi le distribuzioni Per ulteriori informazioni su come rivedere le distribuzioni locali, vedere il comando AWS IoT Greengrass CLI deployment create.
software.amazon.awssdk.services.greengrassv2data.model. ResourceNotFoundException: l'ultima versione di Component ComponentName non dichiara la compatibilità di base della piattaforma < > < DevicePlatform >
Potresti visualizzare questo errore quando distribuisci un componente su un dispositivo principale e il componente non elenca una piattaforma compatibile con la piattaforma del dispositivo principale. Esegui una delle seguenti operazioni:
-
Se il componente è un componente Greengrass personalizzato, puoi aggiornarlo per renderlo compatibile con il dispositivo principale. Aggiungi un nuovo manifesto che corrisponda alla piattaforma del dispositivo principale o aggiorna un manifest esistente in modo che corrisponda alla piattaforma del dispositivo principale. Per ulteriori informazioni, consulta AWS IoT Greengrass riferimento alla ricetta dei componenti.
-
Se il componente è fornito da AWS, controlla se un'altra versione del componente è compatibile con il dispositivo principale. Se nessuna versione è compatibile, contattaci sull'AWS re:Post
uso del AWS IoT Greengrass tag o contattaci Supporto .
com.aws.greengrass.componentmanager.exceptions. PackagingException: l'implementazione tenta di aggiornare il nucleo dalla versione aws.greengrass.NUCLEUS- alla versione aws.greengrass.NUCLEUS- ma nessun componente di tipo nucleus è stato incluso come componente di destinazione < > < >
È possibile che si verifichi questo errore quando si distribuisce un componente che dipende dal nucleo di Greengrass e il dispositivo principale esegue una versione di Greengrass nucleus precedente rispetto all'ultima versione secondaria disponibile. Questo errore si verifica perché il software AWS IoT Greengrass Core tenta di aggiornare automaticamente i componenti all'ultima versione compatibile. Tuttavia, il software AWS IoT Greengrass Core impedisce l'aggiornamento di Greengrass nucleus a una nuova versione secondaria, poiché diversi componenti AWS forniti dipendono da versioni secondarie specifiche del nucleo Greengrass. Per ulteriori informazioni, consulta Comportamento degli aggiornamenti di Greengrass Nucleus.
È necessario rivedere la distribuzione per specificare la versione di Greengrass Nucleus che si desidera utilizzare. Esegui una delle seguenti operazioni:
-
Rivedi la distribuzione per specificare la versione di Greengrass Nucleus attualmente in esecuzione sul dispositivo principale.
-
Rivedi la distribuzione per specificare una versione secondaria successiva di Greengrass nucleus. Se scegli questa opzione, devi anche aggiornare le versioni di tutti i componenti AWS forniti che dipendono da specifiche versioni secondarie del nucleo di Greengrass. Per ulteriori informazioni, consulta AWS-componenti forniti.
Errore: com.aws.greengrass.deployment.exceptions. DeploymentException: impossibile elaborare la distribuzione. La directory di avvio di Greengrass non è impostata o Greengrass non è configurato come servizio di sistema
Potresti visualizzare questo errore quando sposti un dispositivo Greengrass da un gruppo di elementi a un altro e poi ritorna al gruppo originale con distribuzioni che richiedono il riavvio di Greengrass.
Per risolvere questo problema, ricreate la directory di avvio del dispositivo. Consigliamo inoltre vivamente di eseguire l'aggiornamento alla versione 2.9.6 o successiva di Greengrass nucleus.
Quello che segue è uno script Linux per ricreare la directory di avvio. Salvate lo script in un file chiamatofix_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
Per eseguire lo script, esegui il comando seguente:
[root@ip-172-31-27-165 ~]#./fix_directory.sh /greengrass/v22.9.5Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro
Informazioni: com.aws.greengrass.deployment.exceptions. RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service ha restituito un errore durante l'ottenimento della configurazione completa della distribuzione
Potresti visualizzare questo errore quando il dispositivo principale riceve un documento di distribuzione di grandi dimensioni, ovvero un documento di distribuzione più grande di 7 KB (per le distribuzioni destinate agli oggetti) o 31 KB (per le distribuzioni destinate a gruppi di oggetti). Per recuperare un documento di distribuzione di grandi dimensioni, la policy di un dispositivo principale deve consentire l' AWS IoT autorizzazione. greengrass:GetDeploymentConfiguration Questo errore può verificarsi quando il dispositivo principale non dispone di questa autorizzazione. Quando si verifica questo errore, la distribuzione riprova a tempo indeterminato e il suo stato è In corso (). IN_PROGRESS
Per risolvere questo problema, aggiungi l'greengrass:GetDeploymentConfigurationautorizzazione alla policy del dispositivo principale. AWS IoT Per ulteriori informazioni, consulta Aggiorna la politica di un dispositivo principale AWS IoT.
Avviso: com.aws.greengrass.deployment. DeploymentService: Impossibile ottenere la gerarchia dei gruppi di oggetti
Potresti visualizzare questo avviso quando il dispositivo principale riceve una distribuzione e la AWS IoT politica del dispositivo principale non consente l'greengrass:ListThingGroupsForCoreDeviceautorizzazione. Quando si crea una distribuzione, il dispositivo principale utilizza questa autorizzazione per identificare i relativi gruppi di oggetti e rimuovere i componenti per tutti i gruppi di oggetti da cui è stato rimosso il dispositivo principale. Se il dispositivo principale esegue Greengrass nucleus v2.5.0, la distribuzione ha esito negativo. Se il dispositivo principale esegue Greengrass nucleus v2.5.1 o successivo, la distribuzione procede ma non rimuove i componenti. Per ulteriori informazioni sul comportamento di rimozione dei gruppi di oggetti, vedere. Implementazione AWS IoT Greengrass dei componenti sui dispositivi
Per aggiornare il comportamento del dispositivo principale in modo da rimuovere i componenti per i gruppi di oggetti da cui rimuovi il dispositivo principale, aggiungi l'greengrass:ListThingGroupsForCoreDeviceautorizzazione alla AWS IoT policy del dispositivo principale. Per ulteriori informazioni, consulta Aggiorna la politica di un dispositivo principale AWS IoT.
La distribuzione rimuove inaspettatamente i componenti da un dispositivo principale
Una distribuzione rimuove dal dispositivo principale i componenti di cui non era prevista la rimozione e il dispositivo ne interrompe l'esecuzione.
In Greengrass nucleus v2.18.2 e versioni precedenti, una sequenza specifica di eventi fa sì che un dispositivo perda la registrazione dei componenti distribuiti da ciascun gruppo di oggetti. Dopo questa perdita, una distribuzione considera tali componenti come orfani e li rimuove. Greengrass nucleus v2.18.3 risolve questo problema.
La sequenza inizia quando la prima distribuzione su un dispositivo fallisce e viene ripristinata. Per la sequenza completa, vedereIn che modo un dispositivo perde questo record.
Come verificare se un dispositivo ha perso questo record
Questi passaggi controllano la configurazione del dispositivo per determinare la causa della rimozione. Non identificano quali componenti sono stati rimossi da una distribuzione. Esegui l'ispezione sul dispositivo principale./config/effectiveConfig.yaml/greengrass/v2
-
Per verificare se lo stato interno del dispositivo è danneggiato, esamina l'
dependencieselenco sotto ilmainservizio inservices. Lo stato interno danneggiato è la condizione che porta alla perdita del record. Su un dispositivo che ha completato almeno una distribuzione con successo, questo elenco includeDeploymentService, FleetStatusServiceTelemetryAgent, eUpdateSystemPolicyService. Se questi nomi sono assenti su un dispositivo che ha precedentemente completato una distribuzione corretta, lo stato interno è danneggiato. Su un dispositivo che non ha mai completato una distribuzione corretta, un elenco contenente solo il nucleo è normale e non indica un problema. -
Per verificare se il dispositivo ha già perso il record, cerca DeploymentService sotto
servicese cerca la GroupToRootComponents configurazione. Su un dispositivo integro che ha ricevuto almeno una distribuzione, questa configurazione elenca ogni gruppo di oggetti e i componenti distribuiti dal gruppo. Se questa configurazione è mancante o è vuota mentre i componenti sono installati e in esecuzione sul dispositivo, il dispositivo ha perso il record.
Se le distribuzioni rimuovono i componenti dopo che il dispositivo ha perso questo record
Dopo che un dispositivo ha perso questo record, la perdita o meno dei componenti dipende dalla distribuzione successiva.
Una distribuzione rimuove i componenti quando viene eseguita mentre il record è mancante e non contiene l'elenco dei componenti del gruppo mancante:
-
Viene eseguita una distribuzione locale. Una distribuzione locale apporta solo le proprie modifiche e si basa sui record locali del dispositivo per conservare tutto il resto. Alcune flotte utilizzano un componente che invia una distribuzione locale ogni volta che il dispositivo viene avviato. Questo è il motivo per cui la rimozione appare spesso subito dopo il riavvio.
-
Su un dispositivo che appartiene a più di un gruppo di elementi, una distribuzione è destinata solo ad alcuni di questi gruppi. Tale distribuzione recupera i gruppi a cui si rivolge. Rimuove i componenti dei gruppi a cui non si rivolge.
Una distribuzione non rimuove i componenti quando:
-
Non viene eseguita alcuna distribuzione sul dispositivo. I componenti installati continuano a funzionare normalmente. Il dispositivo potrebbe rimanere in questo stato a tempo indeterminato senza alcun impatto.
-
La distribuzione successiva è destinata al gruppo di oggetti il cui record di componenti del dispositivo è mancante. Tale distribuzione contiene l'elenco completo dei componenti del gruppo e ripristina il record, che recupera automaticamente il dispositivo.
Importante
Finché non ripristini il dispositivo, evita di eseguire distribuzioni locali su di esso. Se un componente del dispositivo invia una distribuzione locale all'avvio del dispositivo, ripristina il dispositivo prima che venga riavviato nuovamente. Tale distribuzione rimuove i componenti.
Ripristino
Il riavvio del dispositivo non ripristina il record mancante. È necessario creare distribuzioni per ripristinare il dispositivo.
Per recuperare un dispositivo che ha perso questo record, crea una distribuzione destinata a ciascun gruppo di oggetti a cui appartiene il dispositivo principale. Una distribuzione destinata a un gruppo di oggetti contiene l'elenco completo dei componenti di quel gruppo. Questo ricostruisce il record locale mancante. Una distribuzione locale non può ripristinare il dispositivo perché non contiene informazioni sui componenti di altri gruppi.
Importante
Su un dispositivo che appartiene a più gruppi di oggetti, ogni distribuzione recupera solo il gruppo di destinazione. Una distribuzione in un gruppo potrebbe rimuovere componenti appartenenti a gruppi in cui non hai ancora effettuato la ridistribuzione. Crea una distribuzione per ogni gruppo di oggetti a cui appartiene il dispositivo.
Dopo aver creato le distribuzioni di ripristino, verifica che ciascuna distribuzione venga completata correttamente. Se una distribuzione di ripristino fallisce ed esegue il rollback su una versione di Nucleus precedente alla 2.18.3, il dispositivo perde nuovamente il record. È necessario ripetere il ripristino.
Una volta completata con successo l'implementazione del ripristino, il dispositivo non perde nuovamente questo record. Ciò è vero anche se sul dispositivo è ancora installato Greengrass nucleus v2.18.2 o versioni precedenti. L'implementazione ripristina lo stato interno che protegge il record, in modo che gli errori di distribuzione e i rollback successivi non causino questa perdita. Se si reinstalla il software AWS IoT Greengrass Core, il dispositivo potrebbe perdere nuovamente questo record.
Prevenzione
Aggiorna il dispositivo principale a Greengrass nucleus v2.18.3 o successivo per evitare questo problema.
Nota
Monitora le implementazioni di aggiornamento di Nucleus sui dispositivi che potrebbero aver perso questo record. Se l'implementazione di un aggiornamento di Nucleus non riesce e viene ripristinata su un dispositivo non riparato, il dispositivo potrebbe perdere immediatamente questo record. In tal caso, crea una distribuzione mirata a ciascun gruppo di oggetti del dispositivo subito dopo l'aggiornamento fallito per evitare la perdita dei componenti.
In che modo un dispositivo perde questo record
Un dispositivo perde questo record quando si verificano tutte le seguenti condizioni:
-
Il dispositivo non ha ancora ricevuto una distribuzione corretta.
-
La prima distribuzione sul dispositivo non riesce dopo l'attivazione e viene ripristinata.
-
Sul dispositivo viene eseguita una distribuzione successiva, che danneggia lo stato interno.
-
Il dispositivo si riavvia in un secondo momento.
Un dispositivo la cui prima distribuzione è stata completata correttamente non perde questo record.
Informazioni: com.aws.greengrass.deployment. DeploymentDocumentDownloader: chiamata a Greengrass cloud per ottenere la configurazione completa della distribuzione
Potresti vedere questo messaggio informativo stampato più volte senza errori, perché il dispositivo principale registra l'errore a livello di DEBUG registro. Questo problema può verificarsi quando il dispositivo principale riceve un documento di distribuzione di grandi dimensioni. Quando si verifica questo problema, la distribuzione riprova a tempo indeterminato e il suo stato è In corso (). IN_PROGRESS Per ulteriori informazioni su come risolvere questo problema, consulta questa voce sulla risoluzione dei problemi.
Causato da: software.amazon.awssdk.services.greengrassv2data.model. GreengrassV2DataException: null (Servizio: Greengrassv2Data, codice di stato: 403, ID richiesta: some_request_id, ID richiesta estesa: null) < >
Potresti visualizzare questo errore quando l'API di un dataplane non dispone dell'autorizzazione. iot:Connect Se non disponi della politica corretta, riceverai un. GreengrassV2DataException: 403 Per creare una politica di autorizzazione, segui queste istruzioni:Crea una politica AWS IoT.
Problemi relativi ai componenti principali del dispositivo
Risolvi i problemi relativi ai componenti Greengrass sui dispositivi principali.
Argomenti
Avvertenza: < il «comando>» non è riconosciuto come comando interno o esterno
La configurazione dei componenti non si aggiorna quando si modifica la configurazione predefinita
copyFrom: < > ConfigurationPath è già un contenitore, non una foglia
aws.greengrass. StreamManager: L'istantaneo supera l'istante minimo o massimo
Avvertenza: < il «comando>» non è riconosciuto come comando interno o esterno
Potresti vedere questo errore nei log di un componente Greengrass quando il software AWS IoT Greengrass Core non riesce a eseguire un comando nello script del ciclo di vita del componente. Lo stato del componente diventa il BROKEN risultato di questo errore. Questo errore può verificarsi se l'utente del sistema che esegue il componente, ad esempioggc_user, non riesce a trovare l'eseguibile del comando nelle cartelle del PATH
Sui dispositivi Windows, verificate che la cartella contenente l'eseguibile si trovi nella cartella PATH dedicata all'utente di sistema che esegue il componente. Se non è presente nelPATH, effettuate una delle seguenti operazioni:
-
Aggiungete la cartella dell'eseguibile alla variabile di
PATHsistema, disponibile per tutti gli utenti. Quindi, riavvia il componente.Se si esegue Greengrass nucleus 2.5.0, dopo aver aggiornato la variabile di
PATHsistema, è necessario riavviare il software AWS IoT Greengrass Core per eseguire i componenti con l'aggiornamento.PATHSe il software AWS IoT Greengrass principale non utilizza l'aggiornamentoPATHdopo il riavvio del software, riavvia il dispositivo e riprova. Per ulteriori informazioni, consulta Esegui il software AWS IoT Greengrass Core. -
Aggiungi la cartella dell'eseguibile alla variabile
PATHutente per l'utente del sistema che esegue il componente.
Lo script Python non registra i messaggi
I dispositivi principali di Greengrass raccolgono i log che puoi utilizzare per identificare i problemi con i componenti. Se gli script stdout e i stderr messaggi di Python non vengono visualizzati nei log dei componenti, potrebbe essere necessario svuotare il buffer o disabilitare il buffering per questi flussi di output standard in Python. Effettua una delle seguenti operazioni:
-
Esegui Python con l'argomento -u per disabilitare il buffering su e
. stdoutstderr -
Usa Setenv nella ricetta del tuo componente per impostare la variabile di ambiente https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFERED
PYTHONUNBUFFERED su una stringa non vuota. Questa variabile di ambiente disabilita il buffering su e. stdoutstderr -
Svuota il buffer per gli stream o.
stdoutstderrEsegui una delle seguenti operazioni:-
Svuota un messaggio durante la stampa.
import sys print('Hello, error!', file=sys.stderr, flush=True) -
Svuota un messaggio dopo averlo stampato. Puoi inviare più messaggi prima di svuotare lo stream.
import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()
-
Per ulteriori informazioni su come verificare che lo script Python emetta messaggi di log, consulta. Monitora AWS IoT Greengrass i registri
La configurazione dei componenti non si aggiorna quando si modifica la configurazione predefinita
Quando si modifica la DefaultConfiguration ricetta di un componente, la nuova configurazione predefinita non sostituirà la configurazione esistente del componente durante una distribuzione. Per applicare la nuova configurazione predefinita, è necessario ripristinare la configurazione del componente alle impostazioni predefinite. Quando distribuite il componente, specificate una singola stringa vuota come aggiornamento di ripristino.
awsiot.greengrasscoreipc.model. UnauthorizedError
Potresti vedere questo errore nei log di un componente Greengrass quando il componente non dispone dell'autorizzazione per eseguire un'operazione IPC su una risorsa. Per concedere a un componente il permesso di chiamare un'operazione IPC, definite una politica di autorizzazione IPC nella configurazione del componente. Per ulteriori informazioni, consulta Autorizza i componenti a eseguire operazioni IPC.
Suggerimento
Se modificate la DefaultConfiguration composizione di un componente, dovete reimpostare la configurazione del componente alla nuova configurazione predefinita. Quando distribuisci il componente, specifica una singola stringa vuota come aggiornamento di ripristino. Per ulteriori informazioni, consulta La configurazione dei componenti non si aggiorna quando si modifica la configurazione predefinita.
com.aws.greengrass.authorization.exceptions. AuthorizationException: ID "id" della policy duplicato per "ComponentList» principale < > < >
Potresti visualizzare questo errore se più policy di autorizzazione IPC, incluse tutte le componenti del dispositivo principale, utilizzano lo stesso ID della policy.
Controlla le politiche di autorizzazione IPC dei tuoi componenti, correggi eventuali duplicati e riprova. Per creare ID di policy univoci, ti consigliamo di combinare il nome del componente, il nome del servizio IPC e un contatore. Per ulteriori informazioni, consulta Autorizza i componenti a eseguire operazioni IPC.
Suggerimento
Se si modifica la DefaultConfiguration composizione di un componente, è necessario reimpostare la configurazione del componente alla nuova configurazione predefinita. Quando distribuisci il componente, specifica una singola stringa vuota come aggiornamento di ripristino. Per ulteriori informazioni, consulta La configurazione dei componenti non si aggiorna quando si modifica la configurazione predefinita.
com.aws.greengrass.tes. CredentialRequestHandler: Errore durante il recupero AwsCredentials da TES (HTTP 400)
Potresti visualizzare questo errore quando un dispositivo principale non riesce a ottenere AWS le credenziali dal servizio di scambio di token. Il codice di stato HTTP 400 indica che questo errore si è verificato perché il ruolo IAM di scambio di token del dispositivo principale non esiste o non ha una relazione di fiducia che consenta al fornitore di AWS IoT credenziali di assumerlo.
Esegui questa operazione:
-
Identifica il ruolo di scambio di token utilizzato dal dispositivo principale. Il messaggio di errore include l'alias del AWS IoT ruolo del dispositivo principale, che rimanda al ruolo di scambio di token. Esegui il comando seguente sul tuo computer di sviluppo e sostituiscilo
MyGreengrassCoreTokenExchangeRoleAliascon il nome dell'alias del AWS IoT ruolo indicato nel messaggio di errore.aws iot describe-role-alias --role-aliasMyGreengrassCoreTokenExchangeRoleAliasLa risposta include l'Amazon Resource Name (ARN) del ruolo IAM di token exchange.
{ "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" } } -
Verifica che il ruolo esista. Esegui il comando seguente e sostituiscilo
MyGreengrassV2TokenExchangeRolecon il nome del ruolo di scambio di token.aws iam get-role --role-nameMyGreengrassV2TokenExchangeRoleSe il comando restituisce un
NoSuchEntityerrore, il ruolo non esiste ed è necessario crearlo. Per ulteriori informazioni su come creare e configurare questo ruolo, vedereAutorizza i dispositivi principali a interagire con i servizi AWS. -
Verifica che il ruolo abbia una relazione di fiducia che consenta al fornitore di AWS IoT credenziali di assumerlo. La risposta del passaggio precedente contiene una
AssumeRolePolicyDocument, che definisce le relazioni di fiducia del ruolo. Il ruolo deve definire una relazione di fiducia checredentials---iot.amazonaws.com.rproxy.goskope.comconsenta di assumerla. Questo documento dovrebbe avere un aspetto simile all'esempio seguente.Se le relazioni di fiducia del ruolo non
credentials---iot.amazonaws.com.rproxy.goskope.comconsentono di assumerlo, è necessario aggiungere questa relazione di fiducia al ruolo. Per ulteriori informazioni, consulta Modifica di un ruolo nella AWS Identity and Access Management Guida per l'utente di IAM.
com.aws.greengrass.tes. CredentialRequestHandler: Errore durante il recupero AwsCredentials da TES (HTTP 403)
Potresti visualizzare questo errore quando un dispositivo principale non riesce a ottenere AWS le credenziali dal servizio di scambio di token. Interagisci con AWS i servizi Il codice di stato HTTP 403 indica che questo errore si è verificato perché le AWS IoT policy del dispositivo principale non concedono l'iot:AssumeRoleWithCertificateautorizzazione per l'alias di AWS IoT ruolo del dispositivo principale.
Rivedi le AWS IoT policy del dispositivo principale e aggiungi l'iot:AssumeRoleWithCertificateautorizzazione per l'alias di AWS IoT ruolo del dispositivo principale. Il messaggio di errore include l'alias del AWS IoT ruolo corrente del dispositivo principale. Per ulteriori informazioni su questa autorizzazione e su come aggiornare le AWS IoT politiche del dispositivo principale, consulta AWS IoT Politica minima per i dispositivi AWS IoT Greengrass V2 principali eAggiorna la politica di un dispositivo principale AWS IoT.
com.aws.greengrass.tes. CredentialsProviderError: Impossibile caricare le credenziali di nessun provider
Potresti visualizzare questo errore quando il componente tenta di richiedere le AWS credenziali e non riesce a connettersi al servizio di scambio di token.
Esegui questa operazione:
-
Verifica che il componente dichiari una dipendenza dal componente del servizio di scambio di token,.
aws.greengrass.TokenExchangeServiceIn caso contrario, aggiungi la dipendenza e ridistribuisci il componente. -
Se il componente viene eseguito in docker, assicurati di applicare le impostazioni di rete e le variabili di ambiente corrette, in base a. Utilizzo AWS credenziali nei componenti del contenitore Docker (Linux)
-
Se il componente è scritto in NodeJS, imposta dns.set su. DefaultResultOrder
ipv4first -
/etc/hostsIspeziona una voce che inizia con e contiene.::1localhostRimuovi la voce per vedere se ha causato la connessione del componente al servizio di scambio di token all'indirizzo sbagliato.
Errore ricevuto durante il tentativo di recuperare i metadati ECS: impossibile connettersi all'URL dell'endpoint: "token» < ExchangeServiceEndpoint >
Potresti visualizzare questo errore quando il componente non esegue il servizio di scambio di token e un componente tenta di richiedere le credenziali. AWS
Esegui questa operazione:
-
Verifica che il componente dichiari una dipendenza dal componente del servizio di scambio di token,.
aws.greengrass.TokenExchangeServiceIn caso contrario, aggiungi la dipendenza e ridistribuisci il componente. -
Verifica se il componente utilizza le AWS credenziali nel suo ciclo di vita.
installAWS IoT Greengrass non garantisce la disponibilità del servizio di scambio di token durante il ciclo di vita.installAggiorna il componente per spostare il codice che utilizza AWS le credenziali nelrunciclo di vitastartupor, quindi ridistribuisci il componente.
copyFrom: < > ConfigurationPath è già un contenitore, non una foglia
Potresti visualizzare questo errore quando modifichi un valore di configurazione da un tipo di contenitore (un elenco o un oggetto) a un tipo non contenitore (una stringa, un numero o un valore booleano). Esegui questa operazione:
-
Controlla la ricetta del componente per vedere se la sua configurazione predefinita imposta quel valore di configurazione su un elenco o un oggetto. In tal caso, rimuovi o modifica quel valore di configurazione.
-
Crea una distribuzione per ripristinare il valore di configurazione al valore predefinito. Per ulteriori informazioni, consulta Creare distribuzione e Aggiornamento delle configurazioni dei componenti.
Quindi, puoi impostare quel valore di configurazione su una stringa, un numero o un valore booleano.
com.aws.greengrass.componentmanager.plugins.docker.exceptions. DockerLoginException: Errore durante l'accesso al registro utilizzando le credenziali: «Lo stub ha ricevuto dati errati».
Potresti visualizzare questo errore nei log di Greengrass nucleus quando il componente Docker Application Manager tenta di scaricare un'immagine Docker da un repository privato in Amazon Elastic Container Registry (Amazon ECR). Questo errore si verifica se utilizzi il Docker credential helper (). wincred https://github.com/docker/docker-credential-helpersdocker-credential-wincred Di conseguenza, Amazon ECR non è in grado di memorizzare le credenziali di accesso.
Esegui una delle seguenti azioni:
-
Se non utilizzi l'helper per le credenziali
wincredDocker, rimuovi ildocker-credential-wincredprogramma dal dispositivo principale. -
Se utilizzi l'helper per le credenziali
wincredDocker, procedi come segue:-
Rinomina il
docker-credential-wincredprogramma sul dispositivo principale. Sostituisciwincredcon un nuovo nome l'helper per le credenziali di Windows Docker. Ad esempio, puoi rinominarlo in.docker-credential-wincredreal -
Aggiorna l'
credsStoreopzione nel file di configurazione Docker (.docker/config.json) per utilizzare il nuovo nome per l'helper per le credenziali di Windows Docker. Ad esempio, se hai rinominato il programma indocker-credential-wincredreal, aggiorna l'opzione in.credsStorewincredreal{ "credsStore": "wincredreal" }
-
java.io.IOException: Impossibile eseguire il programma «cmd»...: [LogonUser] La password per questo account è scaduta.
Potresti visualizzare questo errore su un dispositivo Windows core quando l'utente di sistema che esegue i processi del componente, ad esempio, ha una password scaduta. ggc_user Di conseguenza, il software AWS IoT Greengrass Core non è in grado di eseguire i processi dei componenti come tale utente di sistema.
Per aggiornare la password di un utente del sistema Greengrass
-
Esegui il seguente comando come amministratore per impostare la password dell'utente. Sostituisci
ggc_usercon l'utente del sistema e sostituiscipasswordcon la password da impostare.net userggc_userpassword -
Utilizzate l'PsExec utilità
per memorizzare la nuova password dell'utente nell'istanza di Credential Manager per l' LocalSystem account. Sostituiscila passwordcon la password dell'utente che hai impostato.psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
Suggerimento
A seconda della configurazione di Windows, la password dell'utente potrebbe essere impostata per scadere in una data futura. Per garantire che le applicazioni Greengrass continuino a funzionare, tieni traccia della scadenza della password e aggiornala prima che scada. Puoi anche impostare la password dell'utente in modo che non scada mai.
-
Per verificare la scadenza di un utente e della relativa password, esegui il comando seguente.
net userggc_user| findstr /C:expires -
Per impostare la password di un utente in modo che non scada mai, esegui il comando seguente.
wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False -
Se utilizzi Windows 10 o versioni successive in cui il
wmiccomando è obsoleto, esegui il comando seguente. PowerShell Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
aws.greengrass. StreamManager: L'istantaneo supera l'istante minimo o massimo
Quando aggiorni lo stream manager v2.0.7 a una versione compresa tra v2.0.8 e v2.0.11, potresti visualizzare il seguente errore nei log del componente stream manager se il componente non si avvia.
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 hai distribuito stream manager v2.0.7 e desideri eseguire l'aggiornamento a una versione successiva, devi eseguire l'aggiornamento direttamente a stream manager v2.0.12. Per ulteriori informazioni sul componente stream manager, consulta. Stream manager
Problemi relativi ai componenti della funzione Lambda del dispositivo principale
Risolvi i problemi relativi ai componenti della funzione Lambda sui dispositivi principali.
Argomenti
I seguenti sottosistemi cgroup non sono montati: dispositivi, memoria
Potresti visualizzare questo errore quando esegui una funzione Lambda containerizzata nei seguenti casi:
-
Il dispositivo principale non ha cgroup v1 abilitato per la memoria o i cgroups del dispositivo.
-
Il dispositivo principale ha cgroups v2 abilitato. Le funzioni Lambda di Greengrass richiedono cgroups v1 e cgroups v1 e v2 si escludono a vicenda.
Per abilitare cgroups v1, avvia il dispositivo con i seguenti parametri del kernel Linux.
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
Suggerimento
Su un Raspberry Pi, modifica il /boot/cmdline.txt file per impostare i parametri del kernel del dispositivo.
ipc_client.py:64, Errore HTTP 400:Bad Request, B'Non esiste alcuna sottoscrizione per i sorgenti label-or-lambda-arn e subject label-or-lambda-arn < > < >
Potresti visualizzare questo errore quando esegui una funzione Lambda V1, che utilizza il Core SDK, su un dispositivo core V2 senza specificare una sottoscrizione nel componente precedente del router di abbonamento. AWS IoT Greengrass Router con abbonamento legacy Per risolvere questo problema, implementa e configura il router di abbonamento legacy per specificare gli abbonamenti richiesti. Per ulteriori informazioni, consulta Importa funzioni Lambda V1.
La versione del componente è stata interrotta
Potresti visualizzare una notifica sul tuo Personal Health Dashboard (PHD) quando una versione del componente sul tuo dispositivo principale viene interrotta. La versione del componente invia questa notifica al tuo PHD entro 60 minuti dall'interruzione della produzione.
Per vedere quali distribuzioni devi rivedere, procedi come segue utilizzando: AWS Command Line Interface
-
Esegui il comando seguente per ottenere un elenco dei tuoi dispositivi principali.
aws greengrassv2 list-core-devices -
Esegui il comando seguente per recuperare lo stato dei componenti su ciascun dispositivo principale dal passaggio 1. Sostituisci
con il nome di ogni dispositivo principale da interrogare.coreDeviceNameaws greengrassv2 list-installed-components --core-device-thing-namecoreDeviceName -
Raccogli i dispositivi principali con la versione del componente fuori produzione installata nei passaggi precedenti.
-
Esegui il comando seguente per recuperare lo stato di tutti i processi di distribuzione per ciascun dispositivo principale dal passaggio 3. Sostituisci
con il nome del dispositivo principale da interrogare.coreDeviceNameaws greengrassv2 list-effective-deployments --core-device-thing-namecoreDeviceNameLa risposta contiene l'elenco dei processi di distribuzione per il dispositivo principale. È possibile modificare la distribuzione per scegliere un'altra versione del componente. Per ulteriori informazioni su come rivedere una distribuzione, consulta Revisione delle distribuzioni. https://docs.aws.amazon.com/greengrass/v2/developerguide/revise-deployments.html
Problemi con l'interfaccia a riga di comando di Greengrass
Risolvi i problemi relativi alla CLI di Greengrass. Interfaccia a riga di comando Greengrass
java.lang. RuntimeException: impossibile creare un client ipc
Potresti visualizzare questo errore quando esegui un comando CLI di Greengrass e specifichi una cartella principale diversa da quella in cui è installato il software AWS IoT Greengrass Core.
Effettuate una delle seguenti operazioni per impostare il percorso principale e sostituirlo con il percorso dell'installazione del software AWS IoT Greengrass Core:/greengrass/v2
-
Impostare la variabile di ambiente
GGC_ROOT_PATHsu./greengrass/v2 -
Aggiungete l'
--ggcRootPathargomento al comando come mostrato nell'esempio seguente./greengrass/v2greengrass-cli --ggcRootPath<command> <subcommand> [arguments]/greengrass/v2
AWS Command Line Interface problemi
Risolvi i AWS CLI problemi relativi a. AWS IoT Greengrass V2
Errore: scelta non valida: 'greengrassv2'
Potresti visualizzare questo errore quando esegui un AWS IoT Greengrass V2 comando con AWS CLI (ad esempio,). aws greengrassv2 list-core-devices
Questo errore indica che hai una versione di AWS CLI che non supporta AWS IoT Greengrass V2. Per utilizzarlo AWS IoT Greengrass V2 con AWS CLI, è necessario disporre di una delle seguenti versioni o successive:
-
Versione minima AWS CLI V1: v1.18.197
-
Versione minima AWS CLI V2: v2.1.11
Suggerimento
Puoi eseguire il seguente comando per verificare la versione che possiedi. AWS CLI
aws --version
Per risolvere questo problema, esegui l'aggiornamento AWS CLI a una versione successiva che supporti AWS IoT Greengrass V2. Per ulteriori informazioni, vedere Installazione, aggiornamento e disinstallazione di AWS CLI nella Guida per l'AWS Command Line Interface utente.