AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.
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à.
Questa sezione fornisce informazioni sulla risoluzione dei problemi e le possibili soluzioni per aiutare a risolvere i problemi relativi a. AWS IoT Greengrass
Per informazioni sulle AWS IoT Greengrass quote (limiti), vedere Service Quotas in. Riferimenti generali di Amazon Web Services
AWS IoT Greengrass Questioni principali
Se il software AWS IoT Greengrass Core non si avvia, prova i seguenti passaggi generali per la risoluzione dei problemi:
-
Assicurati di installare i file binari appropriati per l'architettura. Per ulteriori informazioni, consulta AWS IoT Greengrass Core Software.
-
Assicurati che il tuo dispositivo core disponga di storage locale. Per ulteriori informazioni, consulta Risoluzione dei problemi di storage.
-
Controlla
runtime.log
ecrash.log
per i messaggi di errore. Per ulteriori informazioni, consulta Risoluzione dei problemi con i log.
Cerca tra i seguenti sintomi ed errori per trovare informazioni utili a risolvere i problemi relativi a un AWS IoT Greengrass core.
Problemi
Errore: impossibile analizzare/<greengrass-root> /config/config.json.
Errore: l'avvio di Runtime non è riuscito: impossibile avviare i worker: test del container scaduto.
Errore: la dimensione di spool deve essere almeno 262144 byte.
Errore: [DEBUG] - Impossibile ottenere route. Eliminare il messaggio.
Errore: [Errno 24] Troppi file aperti <lambda-function>, [Errno 24] Troppi file aperti
Errore: nel file di configurazione manca il CaPath, CertPath o. KeyPath Il processo daemon Greengrass con [pid = <pid>] è terminato.
Soluzione: questo errore potrebbe comparire crash.log
quando il software AWS IoT Greengrass Core non si avvia. Questa situazione può verificarsi se esegui v1.6 o una versione precedente. Esegui una di queste operazioni:
-
Esegui l'aggiornamento alla versione 1.7 o successiva. Ti consigliamo di utilizzare sempre la versione più recente del software AWS IoT Greengrass Core. Per scaricare le informazioni, consulta AWS IoT Greengrass Core Software.
-
Utilizzate il
config.json
formato corretto per la versione AWS IoT Greengrass del software Core in uso. Per ulteriori informazioni, consulta AWS IoT Greengrass file di configurazione principale.Nota
Per scoprire quale versione del software AWS IoT Greengrass Core è installata sul dispositivo principale, esegui i seguenti comandi nel terminale del dispositivo.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd --version
Errore: impossibile analizzare/<greengrass-root> /config/config.json.
Soluzione: è possibile visualizzare questo errore quando il software AWS IoT Greengrass Core non si avvia. Verifica che il file di configurazione Greengrass utilizzi un formato JSON valido.
Apri config.json
(situato in /
) e convalida il formato JSON. Ad esempio, verifica che le virgole siano utilizzate correttamente.greengrass-root
/config
Errore: si è verificato un errore durante la generazione della configurazione TLS: ErrUnknown URIScheme
Soluzione: è possibile visualizzare questo errore quando il software AWS IoT Greengrass Core non si avvia. Assicurati che le proprietà nella sezione crypto del file di configurazione Greengrass siano valide. Il messaggio di errore fornisce ulteriori informazioni.
Aprire config.json
(disponibile in /
) e controllare la sezione greengrass-root
/configcrypto
. Ad esempio, i percorsi dei certificati e delle chiavi devono utilizzare il formato URI corretto e puntare alla posizione corretta.
Errore: l'avvio di Runtime non è riuscito: impossibile avviare i worker: test del container scaduto.
Soluzione: è possibile visualizzare questo errore quando il software AWS IoT Greengrass
Core non si avvia. Imposta la proprietà postStartHealthCheckTimeout
nel file di configurazione Greengrass. Questa proprietà facoltativa configura la quantità di tempo (in millisecondi) che il daemon Greengrass attende per completare il controllo dello stato post-avvio. Il valore predefinito è 30 secondi (30000 ms).
Apri config.json
(situato in /
). Nell'oggetto greengrass-root
/configruntime
, aggiungi la proprietà postStartHealthCheckTimeout
e imposta il valore su un numero maggiore di 30000. Aggiungi una virgola dove necessario per creare un documento JSON valido. Per esempio:
...
"runtime" : {
"cgroup" : {
"useSystemd" : "yes"
},
"postStartHealthCheckTimeout" : 40000
},
...
<address>Errore: Impossibile richiamare PutLogEvents su Cloudwatch locale, LogGroup:/GreengrassSystem/connection_manager, errore:: invio della richiesta non riuscito causato da: Post http RequestError://<path>/cloudwatch/logs/: dial tcp: getsockopt: connessione rifiutata, risposta: {}.
Soluzione: è possibile visualizzare questo errore quando il software AWS IoT Greengrass Core non si avvia. Ciò può verificarsi se si utilizza un Raspberry Pi e la configurazione della memoria richiesta non è stata completata. AWS IoT Greengrass Per ulteriori informazioni, consultare questa fase.
<region><account-id><function-name><version><file-name>Errore: impossibile creare il server a causa di: failed to load group: chmod/<greengrass-root>/:aws:lambda: :function::/ggc/deployment/lambda/arn: nessun file o directory di questo tipo.
Soluzione: è possibile visualizzare questo errore quando il software AWS IoT Greengrass
Core non si avvia. Se hai distribuito un eseguibile Lambda nel core, controlla la proprietà Handler
della funzione nel file (che si trova in group.json
greengrass-root
//ggc/deployment/group). Se il nome dell'handler non corrisponde esattamente al nome del file eseguibile compilato, sostituisci i contenuti del file group.json
con un oggetto JSON vuoto ({}
) ed esegui i comandi seguenti per avviare AWS IoT Greengrass:
cd /greengrass/ggc/core/
sudo ./greengrassd start
Quindi, utilizza l'API AWS Lambda per aggiornare il parametro handler
della configurazione della funzione, pubblicare una nuova versione della funzione e aggiornare l'alias. Per ulteriori informazioni, consulta Funzione Versioni multiple e alias di funzioni AWS Lambda.
Se hai aggiunto la funzione al gruppo Greengrass per alias (consigliato), puoi ora ridistribuire il gruppo. In caso contrario, prima di distribuire il gruppo, devi puntare alla nuova versione o al nuovo alias della funzione nella definizione del gruppo e nelle sottoscrizioni.
Il software AWS IoT Greengrass Core non si avvia dopo il passaggio dall'esecuzione senza containerizzazione all'esecuzione in un contenitore Greengrass.
Soluzione: controlla che tutte le dipendenze container siano presenti.
Errore: la dimensione di spool deve essere almeno 262144 byte.
Soluzione: è possibile visualizzare questo errore quando il software AWS IoT Greengrass
Core non si avvia. Apri il file group.json
(situato in /
), sostituisci i contenuti del file con un oggetto JSON vuoto (greengrass-root
/ggc/deployment/group{}
) ed esegui i comandi seguenti per avviare AWS IoT Greengrass:
cd /greengrass/ggc/core/
sudo ./greengrassd start
Quindi, segui i passaggi nella procedura Come aggiungere i messaggi alla cache nello storage locale. Per la funzione GGCloudSpooler
, assicurati di specificare un valore GG_CONFIG_MAX_SIZE_BYTES
maggiore o uguale a 262144.
Errore: [ERROR]-Cloud messaging error: si è verificato un errore durante il tentativo di pubblicare un messaggio. {"errorString": "operation timed out"}
Soluzione: potresti visualizzare questo errore in GGCloudSpooler.log
quando il core Greengrass non è in grado di inviare messaggi MQTT a AWS IoT Core. Ciò può verificarsi se l'ambiente core dispone di larghezza di banda limitata e latenza elevata. Se utilizzi la versione AWS IoT Greengrass 1.10.2 o successiva, prova ad aumentare il valore nel file config.json. mqttOperationTimeout Se la proprietà non è presente, aggiungerla all'oggetto coreThing
. Per esempio:
{
"coreThing": {
"mqttOperationTimeout": 10,
"caPath": "root-ca.pem",
"certPath": "hash
.cert.pem",
"keyPath": "hash
.private.key",
...
},
...
}
Il valore predefinito è 5
e il valore minimo è 5
.
<version>Errore: container_linux.go:344: l'avvio del processo del contenitore ha causato «process_linux.go:424: l'init del contenitore ha causato\" rootfs_linux.go:64: mount\\\»///_ipc.sock: autorizzazione negata\\\ "\"». greengrass/ggc/socket/greengrass_ipc.sock\\\" to rootfs \\\"/greengrass/ggc/packages rootfs/merged\\\" at \\\"/greengrass_ipc.sock\\\" caused \\\"stat /greengrass/ggc/socket/greengrass
Soluzione: questo runtime.log
errore potrebbe verificarsi AWS IoT Greengrass quando il software Core non si avvia. Questo si verifica se umask
è maggiore di 0022
. Per risolvere questo problema, devi impostare umask
su 0022
o un valore inferiore. Il valore 0022
concede a tutti le autorizzazioni in lettura dei nuovi file per impostazione predefinita.
Errore: daemon Greengrass in esecuzione con PID: <process-id>. Alcuni componenti di sistema non sono stati avviati. Controlla se ci sono errori in 'runtime.log'.
Soluzione: è possibile visualizzare questo errore quando il software AWS IoT Greengrass
Core non si avvia. Controlla runtime.log
e crash.log
per le informazioni di errore specifiche. Per ulteriori informazioni, consulta Risoluzione dei problemi con i log.
La shadow del dispositivo non si sincronizza con il cloud.
Soluzione: assicurati di disporre AWS IoT Greengrass delle autorizzazioni iot:UpdateThingShadow
e delle iot:GetThingShadow
azioni per il ruolo del servizio Greengrass. Se il ruolo del servizio usa la policy gestita AWSGreengrassResourceAccessRolePolicy
, queste autorizzazioni sono incluse per impostazione predefinita.
Per informazioni, consulta Risoluzione dei problemi di timeout della sincronizzazione shadow.
ERRORE: non in grado di accettare la connessione TCP. accept tcp [::]:8000: accept4: troppi file aperti.
Soluzione: è possibile visualizzare questo errore nell'output di script greengrassd
. Ciò può verificarsi se il limite dei descrittori di file per il software AWS IoT Greengrass Core ha raggiunto la soglia e deve essere aumentato.
Utilizzate il seguente comando e riavviate il software AWS IoT Greengrass Core.
ulimit -n 2048
Nota
In questo esempio, il limite è aumentato a 2048. Scegli un valore adatto per il tuo caso d'uso.
Errore: errore di esecuzione runtime: impossibile avviare il container lambda. container_linux.go:259: l'avvio del processo del container ha causato "process_linux.go:345: container init caused \"rootfs_linux.go:50: preparing rootfs caused \\\"permission denied\\\"\"".
Soluzione: AWS IoT Greengrass installatelo direttamente nella directory principale oppure assicuratevi che la directory in cui è installato il software AWS IoT Greengrass Core e le relative directory principali dispongano delle execute
autorizzazioni per tutti.
Avviso: [WARN] - [5] GK Remote: errore durante il recupero dei dati della chiave pubblica: la chiave privata per non è ErrPrincipalNotConfigured impostata. MqttCertificate
Soluzione: AWS IoT Greengrass utilizza un gestore comune per convalidare le proprietà di tutti i principali di sicurezza. Questo avviso in runtime.log
è previsto se non viene specificata una chiave privata personalizzata per il server MQTT locale. Per ulteriori informazioni, consulta AWS IoT Greengrass principi di sicurezza fondamentali.
<account-id><role-name><region>Errore: autorizzazione negata durante il tentativo di utilizzare il ruolo arn:aws:iam: :role/ per accedere a s3 url https://-greengrass-updates.s3. <region><architecture><distribution-version>.amazonaws.com/core/ /greengrass-core- .tar.gz.
Soluzione: potresti visualizzare questo errore quando un aggiornamento (OTA) fallisce. over-the-air Nella politica del ruolo del firmatario, aggiungi l'obiettivo Regione AWS comeResource
. Questo ruolo di firmatario viene utilizzato per preassegnare l'URL S3 per l'aggiornamento del software. AWS IoT Greengrass Per ulteriori informazioni, consulta Ruolo firmatario URL S3.
Il AWS IoT Greengrass core è configurato per utilizzare un proxy di rete e la funzione Lambda non può effettuare connessioni in uscita.
Soluzione: a seconda del runtime e degli eseguibili utilizzati dalla funzione Lambda per creare connessioni, potresti ricevere anche errori di timeout della connessione. Assicurati che le funzioni Lambda utilizzino la configurazione proxy appropriata per connettersi tramite il proxy di rete. AWS IoT Greengrass passa la configurazione del proxy alle funzioni Lambda definite dall'utente tramite http_proxy
le variabili di https_proxy
ambiente, no_proxy
e. È possibile accedervi come mostrato nel seguente frammento di codice Python.
import os
print(os.environ['http_proxy'])
Utilizzare la stessa capitalizzazione della variabile definita nell'ambiente, ad esempio utilizzare tutte lettere minuscole http_proxy
o maiuscole HTTP_PROXY
. Per queste variabili, AWS IoT Greengrass supporta entrambe.
Nota
La maggior parte delle librerie comuni utilizzate per effettuare le connessioni (ad esempio i pacchetti boto3 o cURL e requests
python) utilizzano queste variabili di ambiente per impostazione predefinita.
Il core si trova in un ciclo infinito di connessione-disconnessione. Il file runtime.log contiene una serie di voci di connessione e disconnessione.
Soluzione: ciò può accadere quando un altro dispositivo è hardcoded per utilizzare il nome dell'oggetto core come ID client per le connessioni MQTT a AWS IoT. Connessioni simultanee nella stessa unità Regione AWS e Account AWS devono utilizzare un client IDs unico. Per impostazione predefinita, il core utilizza il nome dell'oggetto core come ID client per queste connessioni.
Per risolvere questo problema, è possibile modificare l'ID client utilizzato dall'altro dispositivo per la connessione (scelta consigliata) oppure sovrascrivere il valore predefinito per il core.
Per sovrascrivere l'ID client predefinito per il dispositivo core
-
Eseguite il seguente comando per arrestare il demone Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Apri
per la modifica come utente su.greengrass-root
/config/config.json -
Nell'oggetto
coreThing
, aggiungere la proprietàcoreClientId
e impostare il valore sull'ID client personalizzato. Il valore deve essere costituito da un numero di caratteri compreso tra 1 e 128. Deve essere unico nella versione corrente Regione AWS per. Account AWS"coreClientId": "MyCustomClientId"
-
Avvia il daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Errore: impossibile avviare il container lambda. container_linux.go: 259: l'avvio del processo del container ha causato "process_linux.go: 345: container init caused\"rootfs_linux.go: 62: mounting \\" proc\\\" to rootfs \\"
Soluzione: su alcune piattaforme, potresti visualizzare questo errore runtime.log
quando AWS IoT Greengrass tenti di montare il /proc
file system per creare un contenitore Lambda. In alternativa, potresti visualizzare errori simili, ad esempio operation not permitted
o EPERM
. Questi errori possono verificarsi anche se i test eseguiti sulla piattaforma dallo script dello strumento di controllo delle dipendenze vengono superati.
Prova una delle seguenti soluzioni possibili:
-
Abilitare l'opzione
CONFIG_DEVPTS_MULTIPLE_INSTANCES
nel kernel Linux. -
Impostare le opzioni di montaggio
/proc
sull'host solo surw,relatim
. -
Aggiornare il kernel Linux alla versione 4.9 o successiva.
Nota
Questo problema non è correlato al montaggio di /proc
per l'accesso alle risorse locali.
[ERRORE] -errore di esecuzione in fase di esecuzione: impossibile avviare il contenitore lambda. <ggc-path>{"errorString»: «impossibile inizializzare i supporti dei contenitori: impossibile mascherare la radice di greengrass nella directory superiore di overlay: impossibile creare il dispositivo maschera nella directory: il file esiste"}
Soluzione: potresti visualizzare questo errore in runtime.log quando la distribuzione fallisce. Questo errore si verifica se una funzione Lambda del AWS IoT Greengrass gruppo non è in grado di accedere alla /usr
directory nel file system del core.
Per risolvere il problema, aggiungere una risorsa volume locale al gruppo e quindi distribuire il gruppo. Questa risorsa deve:
-
Specificare
/usr
come percorso di origine e percorso di destinazione. -
Aggiungere automaticamente le autorizzazioni del gruppo OS del gruppo Linux che possiede la risorsa
-
Diventa affiliato alla funzione Lambda e consenti l'accesso in sola lettura.
[ERRORE] -Distribuzione non riuscita. {"DeploymentId»: <deployment-id>"«, «errorString»: «Processo di test del contenitore con <pid>pid non riuscito: stato del processo del contenitore: stato di uscita 1"}
Soluzione: potresti visualizzare questo errore in runtime.log quando la distribuzione fallisce. Questo errore si verifica se una funzione Lambda del AWS IoT Greengrass gruppo non è in grado di accedere alla /usr
directory nel file system del core.
Puoi confermare che questo è il caso verificando la presenza GGCanary.log
di errori aggiuntivi. Se la funzione Lambda non può accedere alla /usr
directory, GGCanary.log
conterrà il seguente errore:
[ERROR]-standard_init_linux.go:207: exec user process caused "no such file or directory"
Per risolvere il problema, aggiungere una risorsa volume locale al gruppo e quindi distribuire il gruppo. Questa risorsa deve:
-
Specificare
/usr
come percorso di origine e percorso di destinazione. -
Aggiungere automaticamente le autorizzazioni del gruppo OS del gruppo Linux che possiede la risorsa
-
Diventa affiliato alla funzione Lambda e consenti l'accesso in sola lettura.
Errore: [ERROR] -Errore di esecuzione di runtime: impossibile avviare il contenitore lambda. <ggc-version><ggc-version>{"errorString»: «impossibile inizializzare i supporti del contenitore: impossibile creare l'overlay fs per il contenitore: montaggio dell'overlay su/////<ggc-version><ggc-version><ggc-version>/dns:/,greengrass/ggc/packages/rootfs/merged failed: failed to mount with args source=\"no_source\" dest=\"/greengrass/ggc/packagesrootfs/merged\" fstype=\"overlay\" flags=\"0\" data=\"lowerdir=/greengrass/ggc/packages//rootfs/work\»: troppi livelli di collegamenti upperdir=/greengrass/ggc/packages simbolici "} rootfs/upper,workdir=/greengrass/ggc/packages
Soluzione: è possibile che venga visualizzato questo errore nel file quando il software Core non si avvia. runtime.log
AWS IoT Greengrass Questo problema potrebbe essere più comune sui sistemi operativi Debian.
Per risolvere il problema, procedere come segue:
-
Aggiorna il software AWS IoT Greengrass Core alla versione 1.9.3 o successiva. Questo dovrebbe risolvere automaticamente il problema.
-
Se l'errore persiste dopo l'aggiornamento del software AWS IoT Greengrass Core, imposta la
system.useOverlayWithTmpfs
proprietà sutrue
nel file config.json.Esempio
{ "system": { "useOverlayWithTmpfs": true }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }
Nota
La versione AWS IoT Greengrass del software Core è mostrata nel messaggio di errore. Per trovare la versione del kernel Linux, eseguire uname -r
.
Errore: [DEBUG] - Impossibile ottenere route. Eliminare il messaggio.
Soluzione: controllare le sottoscrizioni nel gruppo e verificare l’esistenza della sottoscrizione elencata nel messaggio [DEBUG]
.
Errore: [Errno 24] Troppi file aperti <lambda-function>, [Errno 24] Troppi file aperti
Soluzione: potresti visualizzare questo errore nel file di registro della funzione Lambda se la funzione crea un'istanza StreamManagerClient
nel gestore delle funzioni. Si consiglia di creare il client all'esterno del gestore. Per ulteriori informazioni, consulta Utilizzalo StreamManagerClient per lavorare con gli stream.
Errore: il server ds non è riuscito ad avviare l'ascolto di socket: listen unix<ggc-path>/ggc/socket/greengrass_ipc.sock: bind: argomento non valido
Soluzione: potresti visualizzare questo errore quando il software Core non si avvia. AWS IoT Greengrass Questo errore si verifica quando il software AWS IoT Greengrass Core viene installato in una cartella con un percorso di file lungo. Reinstalla il software AWS IoT Greengrass Core in una cartella con un percorso di file con meno di 79 byte, se non usi una directory di scrittura, o 83 byte, se utilizzi una directory di scrittura.
[INFORMAZIONI] (Copier) aws.greengrass. StreamManager: stdout. Causato da: com.fasterxml.jackson.databind. JsonMappingException: Instant supera l'istante minimo o massimo
Quando aggiorni il software di AWS IoT Greengrass base alla versione 1.11.3, potresti visualizzare il seguente errore nei log dello stream manager se lo stream manager 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 utilizzi una versione del software di AWS IoT Greengrass base precedente alla v1.11.3 e desideri eseguire l'aggiornamento a una versione successiva, utilizza un aggiornamento OTA per eseguire l'aggiornamento alla v1.11.4.
GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
Quando esegui apt update
su un dispositivo in cui hai installato il software di AWS IoT Greengrass base da un repository APT, potresti visualizzare il seguente errore.
Err:4 https://dnw9lb6lzp2d8.cloudfront.net stable InRelease The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key Reading package lists... Done W: GPG error: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: The following signatures were invalid: EXPKEYSIG 68D644ABD2327D47 AWS Greengrass Master Key
Questo errore si verifica perché AWS IoT Greengrass non offre più la possibilità di installare o aggiornare il software di AWS IoT Greengrass base dal repository APT. Per eseguirlo correttamenteapt
update
, rimuovi il AWS IoT Greengrass repository dall'elenco delle fonti del dispositivo.
sudo rm /etc/apt/sources.list.d/greengrass.list sudo apt update
Problemi relativi alla distribuzione
Utilizza le informazioni seguenti per risolvere i problemi di distribuzione.
La distribuzione corrente non funziona e si desidera ripristinare una distribuzione funzionante precedente.
Soluzione: utilizza la AWS IoT console o l' AWS IoT Greengrass API per ridistribuire una distribuzione funzionante precedente. In questo modo viene distribuita la versione del gruppo corrispondente sul dispositivo core.
Per ridistribuire una distribuzione (console)
-
Nella pagina di configurazione del gruppo, scegli la scheda Distribuzioni. Questa pagina mostra la cronologia di distribuzione per il gruppo, incluse la data e l'ora, la versione del gruppo e lo stato di ogni tentativo di distribuzione.
-
Trova la riga contenente la distribuzione che desideri ridistribuire. Seleziona la distribuzione che desideri ridistribuire e scegli Ridistribuisci.
Per ridistribuire una distribuzione (CLI)
-
Utilizzalo ListDeploymentsper trovare l'ID della distribuzione che desideri ridistribuire. Per esempio:
aws greengrass list-deployments --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7
Il comando restituisce l'elenco delle distribuzioni per il gruppo.
{ "Deployments": [ { "DeploymentId": "8d179428-f617-4a77-8a0c-3d61fb8446a6", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2:123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/8dd1d899-4ac9-4f5d-afe4-22de086efc62", "CreatedAt": "2019-07-01T20:56:49.641Z" }, { "DeploymentId": "f8e4c455-8ac4-453a-8252-512dc3e9c596", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/4ad66e5d-3808-446b-940a-b1a788898382", "CreatedAt": "2019-07-01T20:41:47.048Z" }, { "DeploymentId": "e4aca044-bbd8-41b4-b697-930ca7c40f3e", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/1f3870b6-850e-4c97-8018-c872e17b235b", "CreatedAt": "2019-06-18T15:16:02.965Z" } ] }
Nota
Questi AWS CLI comandi utilizzano valori di esempio per il gruppo e l'ID di distribuzione. Quando esegui i comandi, assicurati di sostituire i valori di esempio.
-
Utilizzato CreateDeploymentper ridistribuire la distribuzione di destinazione. Imposta il tipo di distribuzione su
Redeployment
. Per esempio:aws greengrass create-deployment --deployment-type Redeployment \ --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7 \ --deployment-id f8e4c455-8ac4-453a-8252-512dc3e9c596
Il comando restituisce l'ARN e l'ID della nuova distribuzione.
{ "DeploymentId": "f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2", "DeploymentArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/deployments/f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2" }
-
Utilizzare GetDeploymentStatusper ottenere lo stato della distribuzione.
Visualizzi un errore 403 Forbidden sulla distribuzione nei log.
Soluzione: assicurati che la policy del AWS IoT Greengrass core nel cloud includa tra "greengrass:*"
le azioni consentite.
Si verifica un ConcurrentDeployment errore quando si esegue il comando create-deployment per la prima volta.
Soluzione: potrebbe essere in corso una distribuzione. Puoi eseguire get-deployment-status per vedere se una distribuzione è stata creata. In caso contrario, prova a creare nuovamente la distribuzione.
Errore: Greengrass non è autorizzato ad assumere il ruolo di servizio associato a questo account, oppure l'errore: Non riuscito: il ruolo di servizio TES non è associato a questo account.
Soluzione: è possibile visualizzare questo errore quando la distribuzione ha esito negativo. Verifica che un ruolo di servizio Greengrass sia associato al tuo Account AWS ruolo attuale. Regione AWS Per ulteriori informazioni, consulta Gestione del ruolo del servizio Greengrass (CLI) o Gestione del ruolo del servizio Greengrass (console).
Errore: impossibile eseguire il passaggio di download nella distribuzione. errore durante il download: errore durante il download del file di definizione del gruppo:... x509: il certificato è scaduto o non è ancora valido
Soluzione: è possibile visualizzare questo errore in runtime.log
quando la distribuzione ha esito negativo. Se viene visualizzato un errore Deployment failed
che contiene il messaggio x509:
certificate has expired or is not yet valid
, controllare l'orologio del dispositivo. I certificati TLS e X.509 forniscono una base sicura per la creazione di sistemi IoT, ma richiedono tempi precisi su server e client. I dispositivi IoT devono avere l'ora corretta (entro 15 minuti) prima di tentare di connettersi a AWS IoT Greengrass o ad altri servizi TLS che utilizzano certificati server. Per ulteriori informazioni, consulta Using Device Time per convalidare i certificati del AWS IoT server
La distribuzione non viene completata.
Soluzione: eseguire quanto segue:
-
Assicurati che il AWS IoT Greengrass demone sia in esecuzione sul tuo dispositivo principale. Nel terminale del dispositivo principale, esegui i seguenti comandi per verificare se il demone è in esecuzione e avvialo, se necessario.
Per controllare se il daemon è in esecuzione:
ps aux | grep -E 'greengrass.*daemon'
Se l'output contiene una voce
root
per/greengrass/ggc/packages/1.11.6/bin/daemon
, allora il daemon è in esecuzione.La versione indicata nel percorso dipende dalla versione del software AWS IoT Greengrass Core installata sul dispositivo principale.
Per avviare il demone:
cd /greengrass/ggc/core/ sudo ./greengrassd start
-
Assicurati che il dispositivo core sia collegato e gli endpoint di connessione core siano configurati correttamente.
Errore: impossibile trovare gli eseguibili java o java8 oppure l'errore: Implementazione <deployment-id>di tipo NewDeployment per gruppo <group-id>non riuscita errore: worker with <worker-id>failed to initialize with reason La versione Java installata deve essere maggiore o uguale a 8
Soluzione: se stream manager è abilitato per il AWS IoT Greengrass core, è necessario installare il runtime Java 8 sul dispositivo principale prima di distribuire il gruppo. Per ulteriori informazioni, consulta i requisiti per Gestore di flussi. Lo stream manager è abilitato per impostazione predefinita quando si utilizza il flusso di lavoro di creazione del gruppo predefinito nella AWS IoT console per creare un gruppo.
In alternativa, disabilita stream manager e quindi distribuisci il gruppo. Per ulteriori informazioni, consulta Configurazione delle impostazioni di Stream Manager (console).
La distribuzione non viene completata e il file runtime.log contiene più voci "wait 1s for container to stop".
Soluzione: esegui i seguenti comandi nel terminale del dispositivo principale per riavviare il AWS IoT Greengrass demone.
cd /greengrass/ggc/core/
sudo ./greengrassd stop
sudo ./greengrassd start
La distribuzione non viene completata e runtime.log
mostra il seguente messaggio di errore: "[ERROR]-Greengrass deployment error: failed to report deployment status back to cloud {"deploymentId": "<deployment-id>", "errorString": "Failed to initiate PUT, endpoint: https://<deployment-status>, error: Put https://<deployment-status>: proxyconnect tcp: x509: certificate signed by unknown authority"}"
Soluzione: questo errore potrebbe essere visualizzato in runtime.log
quando Greengrass Core è configurato per utilizzare una connessione proxy HTTPS e la catena di certificati del server proxy non è attendibile nel sistema. Per provare a risolvere questo problema, aggiungere la catena di certificati al certificato CA radice. Greengrass Core aggiunge i certificati di questo file al pool di certificati utilizzato per l'autenticazione TLS nelle connessioni HTTPS e MQTT con AWS IoT Greengrass.
L'esempio seguente mostra un certificato CA del server proxy aggiunto al file del certificato della CA radice:
# My proxy CA -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ...
content of proxy CA certificate
... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- # Amazon Root CA 1 -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ...content of root CA certificate
... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----
Per impostazione predefinita, il file del certificato della CA radice si trova in /
. Per trovare la posizione sul dispositivo principale, controllare la proprietà greengrass-root
/certs/root.ca.pemcrypto.caPath
in config.json.
Nota
greengrass-root
rappresenta il percorso in cui il software AWS IoT Greengrass Core è installato sul dispositivo. In genere, questa è la directory /greengrass
.
<path>Errore: la distribuzione <deployment-id>del tipo NewDeployment per il gruppo <group-id>non è riuscita. Errore durante l'elaborazione. group config non è valido: 112 o [119 0] non dispongono dell'autorizzazione rw sul file:.
Soluzione: assicurati che il gruppo proprietario della directory disponga delle autorizzazioni di lettura e scrittura per la <path>
directory.
Errore: < list-of-function-arns > sono configurati per l'esecuzione come root ma Greengrass non è configurato per eseguire funzioni Lambda con autorizzazioni root.
Soluzione: è possibile visualizzare questo errore in runtime.log
quando la distribuzione ha esito negativo. Assicurati di aver configurato AWS IoT Greengrass per consentire l'esecuzione delle funzioni Lambda con i permessi di root. Cambia il valore di allowFunctionsToRunAsRoot
in greengrass_root/config/config.json
to yes
o modifica la funzione Lambda per eseguirla come un altro utente/gruppo. Per ulteriori informazioni, consulta Esecuzione di una funzione Lambda come utente root.
Errore: distribuzione <deployment-id>di tipo NewDeployment per gruppo <group-id>non riuscita Errore di distribuzione di Greengrass: impossibile eseguire la fase di download nella distribuzione. errore durante l'elaborazione: impossibile caricare il file di gruppo scaricato: impossibile trovare l'UID in base al nome utente, UserName: ggc_user: user: unknown user ggc_user.
Soluzione: se l'identità di accesso predefinita del AWS IoT Greengrass gruppo utilizza gli account di sistema standard, l'utente e il gruppo devono essere presenti sul dispositivo. ggc_user
ggc_group
Per istruzioni che mostrano come aggiungere l'utente e il gruppo, consulta questa fase. Assicurati di inserire i nomi esattamente come mostrato.
Errore: errore di esecuzione [ERROR]-runtime: impossibile avviare il container lambda. {"errorString": "failed to initialize container mounts: failed to mask greengrass root in overlay upper dir: failed to create mask device at directory <ggc-path>: file exists"}
Soluzione: è possibile visualizzare questo errore in runtime.log
quando la distribuzione ha esito negativo. Questo errore si verifica se una funzione Lambda del gruppo Greengrass non può accedere alla /usr
directory nel file system del core. Per risolvere il problema, aggiungere una risorsa volume locale al gruppo e quindi distribuire il gruppo. La risorsa deve:
-
Specificare
/usr
come percorso di origine e percorso di destinazione. -
Aggiungere automaticamente le autorizzazioni del gruppo OS del gruppo Linux che possiede la risorsa
-
Diventa affiliato alla funzione Lambda e consenti l'accesso in sola lettura.
Errore: distribuzione <deployment-id>di tipo NewDeployment per gruppo <group-id>non riuscita errore: avvio del processo non riuscito: container_linux.go:259: l'avvio del processo contenitore ha causato «process_linux.go:250: l'esecuzione del processo exec setns per init ha causato\" wait: nessun processo figlio\ "».
Soluzione: è possibile visualizzare questo errore quando la distribuzione ha esito negativo. Riprova a eseguire la distribuzione.
Errore: [<host-prefix>WARN] -MQTT [client] dial tcp: lookup -ats.iot. <region>.amazonaws.com: nessun host di questo tipo... [ERROR] -Errore di implementazione di Greengrass: impossibile riportare lo stato della distribuzione al cloud... net/http: richiesta annullata in attesa della connessione (Client.Timeout superato in attesa delle intestazioni)
Soluzione: questo potrebbe essere visualizzato se utilizzi systemd-resolved
, che abilita l'impostazione DNSSEC
per impostazione predefinita. Di conseguenza, molti domini pubblici non vengono riconosciuti. I tentativi di raggiungere l' AWS IoT Greengrass endpoint non riescono a trovare l'host, quindi le distribuzioni rimangono invariate. In
Progress
Puoi utilizzare i comandi e l'output seguenti per verificare questo problema. Sostituisci il region
segnaposto negli endpoint con il tuo. Regione AWS
$
ping greengrass-ats.iot.region
.amazonaws.comping: greengrass-ats.iot.
region
.amazonaws.com: Name or service not known
$
systemd-resolve greengrass-ats.iot.region
.amazonaws.comgreengrass-ats.iot.
region
.amazonaws.com: resolve call failed: DNSSEC validation failed: failed-auxiliary
Una possibile soluzione è disabilitare DNSSEC
. Quando DNSSEC
è false
, le ricerche DNS non vengono convalidate DNSSEC
. Per ulteriori informazioni, consulta questo problema notosystemd
.
-
Aggiungere
DNSSEC=false
a/etc/systemd/resolved.conf
. -
Riavviare
systemd-resolved
.
Per informazioni su resolved.conf
e DNSSEC
, esegui man resolved.conf
nel terminale.
Problemi relativi alla creazione del gruppo e della funzione
Utilizzate le seguenti informazioni per risolvere i problemi relativi alla creazione di un AWS IoT Greengrass gruppo o di una funzione Greengrass Lambda.
Problemi
Errore: la configurazione 'IsolationMode' per il gruppo non è valida.
Soluzione: questo errore si verifica quando il valore IsolationMode
in DefaultConfig
di function-definition-version
non è supportato. I valori supportati sono GreengrassContainer
e NoContainer
.
Errore: la configurazione 'IsolationMode' per la funzione con arn non <function-arn>è valida.
Soluzione: questo errore si verifica quando il valore IsolationMode
in <function-arn> di function-definition-version
non è supportato. I valori supportati sono GreengrassContainer
e NoContainer
.
Errore: la MemorySize configurazione per la funzione con arn <function-arn>non è consentita in =. IsolationMode NoContainer
Soluzione: questo errore si verifica quando si specifica un MemorySize
valore e si sceglie di eseguirlo senza containerizzazione. Le funzioni Lambda eseguite senza containerizzazione non possono avere limiti di memoria. Puoi rimuovere il limite o modificare la funzione Lambda per eseguirla in un AWS IoT Greengrass
contenitore.
Errore: la configurazione di Access Sysfs per la funzione con arn <function-arn>non è consentita in =. IsolationMode NoContainer
Soluzione: questo errore si verifica quando si specifica true
for AccessSysfs
e si sceglie di eseguirlo senza containerizzazione. Le funzioni Lambda eseguite senza containerizzazione devono avere il codice aggiornato per accedere direttamente al file system e non possono essere utilizzate. AccessSysfs
È possibile specificare un valore di false
for AccessSysfs
oppure modificare la funzione Lambda per eseguirla in un AWS IoT Greengrass contenitore.
Errore: la MemorySize configurazione per la funzione con arn <function-arn>è richiesta in IsolationMode =. GreengrassContainer
Soluzione: questo errore si verifica perché non è stato specificato un MemorySize
limite per una funzione Lambda in esecuzione in un AWS IoT Greengrass contenitore. Specifica un valore MemorySize
per risolvere l'errore.
Errore: la funzione <function-arn>si riferisce a una risorsa <resource-type>di tipo non consentito in IsolationMode =NoContainer.
Soluzione: non è possibile accedere a Local.Device
Local.Volume
, ML_Model.SageMaker.Job
ML_Model.S3_Object
, o tipi di S3_Object.Generic_Archive
risorse quando si esegue una funzione Lambda senza containerizzazione. Se hai bisogno di questi tipi di risorse, devi eseguirli in un contenitore. AWS IoT Greengrass Puoi anche accedere direttamente ai dispositivi locali durante l'esecuzione senza containerizzazione modificando il codice nella funzione Lambda.
Errore: la configurazione dell'esecuzione per la funzione con arn <function-arn> non è consentita.
Soluzione: questo errore si verifica quando si crea una funzione Lambda di sistema con GGIPDetector
o GGCloudSpooler
e la configurazione o è stata specificataIsolationMode
. RunAs
È necessario omettere i Execution
parametri per questa funzione Lambda di sistema.
Problemi di individuazione
Utilizza le seguenti informazioni per risolvere i problemi relativi al servizio Discovery. AWS IoT Greengrass
Errore: il dispositivo è membro di troppi gruppi, è possibile che i dispositivi non siano presenti in più di 10 gruppi
Soluzione: si tratta di una limitazione nota. Un dispositivo client può far parte di un massimo di 10 gruppi.
Problemi relativi alle risorse di Machine Learning
Utilizza le seguenti informazioni per risolvere i problemi relativi alle risorse di machine learning.
Problemi
MLModelProprietario non valido: GroupOwnerSetting viene fornito nella risorsa del modello ML, ma non è presente GroupOwner o non GroupPermission è presente
Soluzione: viene visualizzato questo errore se una risorsa di machine learning contiene l'ResourceDownloadOwnerSettingoggetto ma il requisito GroupOwner
o la GroupPermission
proprietà non sono definiti. Per risolvere questo problema, definisci la proprietà mancante.
NoContainer la funzione non può configurare l'autorizzazione quando si collegano risorse di Machine Learning. <function-arn>si riferisce alla risorsa Machine Learning <resource-id>con autorizzazione <ro/rw> nella politica di accesso alle risorse.
Soluzione: viene visualizzato questo errore se una funzione Lambda non containerizzata specifica autorizzazioni a livello di funzione per una risorsa di machine learning. Le funzioni non containerizzate devono ereditare le autorizzazioni dalle autorizzazioni del proprietario della risorsa definite nella risorsa di machine learning. Per risolvere questo problema, scegli di ereditare le autorizzazioni del proprietario della risorsa (console) o rimuovere le autorizzazioni dalla politica di accesso alle risorse (API) della funzione Lambda.
La funzione <function-arn>si riferisce alla risorsa di Machine Learning <resource-id>con autorizzazione mancante in entrambe ResourceAccessPolicy le risorse OwnerSetting.
Soluzione: viene visualizzato questo errore se le autorizzazioni per la risorsa di machine learning non sono configurate per la funzione Lambda o la risorsa allegata. Per risolvere questo problema, configura le autorizzazioni nella ResourceAccessPolicyproprietà per la funzione Lambda o nella proprietà per OwnerSettingla risorsa.
La funzione <function-arn>si riferisce alla risorsa Machine Learning <resource-id>con autorizzazione\ "rw\», mentre l'impostazione del proprietario della risorsa consente GroupPermission solo\ "ro\».
Soluzione: viene visualizzato questo errore se le autorizzazioni di accesso definite per la funzione Lambda allegata superano le autorizzazioni del proprietario della risorsa definite per la risorsa di machine learning. Per risolvere questo problema, imposta autorizzazioni più restrittive per la funzione Lambda o autorizzazioni meno restrittive per il proprietario della risorsa.
NoContainer La funzione <function-arn>si riferisce alle risorse del percorso di destinazione annidato.
Soluzione: viene visualizzato questo errore se più risorse di machine learning collegate a una funzione Lambda non containerizzata utilizzano lo stesso percorso di destinazione o un percorso di destinazione annidato. Per risolvere questo problema, specifica percorsi di destinazione separati per le risorse.
Lambda <function-arn> ottiene l'accesso alla risorsa <resource-id> condividendo lo stesso ID del proprietario del gruppo
Soluzione: viene visualizzato questo errore runtime.log
se viene specificato lo stesso gruppo di sistema operativo come identità Esegui come identità della funzione Lambda e proprietario della risorsa per una risorsa di machine learning, ma la risorsa non è associata alla funzione Lambda. Questa configurazione fornisce alla funzione Lambda autorizzazioni implicite che può utilizzare per accedere alla risorsa senza autorizzazione. AWS IoT Greengrass
Per risolvere questo problema, usa un gruppo di sistemi operativi diverso per una delle proprietà o collega la risorsa di machine learning alla funzione Lambda.
AWS IoT Greengrass problemi principali di Docker
Utilizza le seguenti informazioni per risolvere i problemi relativi all'esecuzione di un AWS IoT Greengrass core in un contenitore Docker.
Errore: opzioni sconosciute: -. no-include-email
Soluzione: questo errore può verificarsi quando si esegue il comando aws ecr get-login
. Assicurati di avere installata la AWS CLI versione più recente (ad esempio, esegui:pip install awscli --upgrade --user
). Se utilizzi Windows e hai installato l'interfaccia a riga di comando utilizzando il programma di installazione di MSI, è necessario ripetere il processo di installazione. Per ulteriori informazioni, vedere Installazione di AWS Command Line Interface su Microsoft Windows nella Guida per l'AWS Command Line Interface utente.
Attenzione: IPv4 è disattivata. Networking non funzionerà.
Soluzione: è possibile che venga visualizzato questo avviso o un messaggio simile quando si esegue AWS IoT Greengrass su un computer Linux. Abilita l'inoltro di IPv4 rete come descritto in questo passaggio. AWS IoT Greengrass l'implementazione nel cloud e le comunicazioni MQTT non funzionano quando l' IPv4 inoltro non è abilitato. Per ulteriori informazioni, consulta Configurazione di parametri kernel associati a uno spazio dei nomi (sysctls) durante il runtime
Errore: un firewall sta bloccando la condivisione di file tra finestre e contenitori.
Soluzione: è possibile ricevere questo errore o un messaggio Firewall Detected
quando viene eseguito Docker su un computer Windows. Questo errore può inoltre verificarsi se sei connesso a una rete privata virtuale (VPN, Virtual Private Network) e le impostazioni di rete impediscono il montaggio dell'unità condivisa. In tal caso, disattivare la rete VPN e riavviare il container Docker.
Errore: si è verificato un errore (AccessDeniedException) durante la chiamata dell' GetAuthorizationToken operazione: User: arn:aws:iam: :user/ <account-id><user-name>non è autorizzato a eseguire: ecr: on resource: * GetAuthorizationToken
Potresti ricevere questo errore durante l'esecuzione del aws ecr get-login-password
comando se non disponi di autorizzazioni sufficienti per accedere a un repository Amazon ECR. Per ulteriori informazioni, consulta Esempi di policy per i repository di Amazon ECR e Accesso a un repository Amazon ECR nella Amazon ECR User Guide.
Errore: impossibile creare container per il servizio greengrass: Conflict. Il nome del contenitore «/aws-iot-greengrass" è già in uso.
Soluzione: questo può verificarsi quando il nome del container viene utilizzato da un container precedente. Per risolvere questo problema, eseguire il comando seguente per rimuovere il vecchio container Docker:
docker rm -f $(docker ps -a -q -f "name=aws-iot-greengrass")
Errore: [FATAL]-Non è riuscito a reimpostare lo spazio dei nomi del montaggio del thread a causa di un errore inaspettato: "operation not permitted". Per mantenere la coerenza, GGC si arresterà e dovrà essere riavviato manualmente.
Soluzione: questo errore runtime.log
può verificarsi quando si tenta di distribuire una funzione GreengrassContainer
Lambda su un core in esecuzione in AWS IoT Greengrass un contenitore Docker. Attualmente, solo le funzioni NoContainer
Lambda possono essere implementate in un contenitore Greengrass Docker.
Per risolvere questo problema, assicurati che tutte le funzioni Lambda siano in NoContainer modalità e avvia una nuova distribuzione. Quindi, quando avvii il contenitore, non monta in associazione la deployment
directory esistente sul contenitore Docker principale AWS IoT Greengrass . Al contrario, crea una directory deployment
vuota al suo posto ed esegui il montaggio vincolato nel container Docker. Ciò consente al nuovo contenitore Docker di ricevere la distribuzione più recente con le funzioni Lambda in esecuzione in NoContainer
modalità.
Per ulteriori informazioni, consulta Esecuzione AWS IoT Greengrass in un contenitore Docker.
Risoluzione dei problemi con i log
È possibile configurare le impostazioni di registrazione per un gruppo Greengrass, ad esempio se inviare i log a Logs CloudWatch , archiviare i log nel file system locale o entrambi. Per ottenere informazioni dettagliate durante la risoluzione dei problemi, è possibile modificare temporaneamente il livello di registrazione in DEBUG
. Le modifiche alle impostazioni di registrazione diventano effettive quando si distribuisce il gruppo. Per ulteriori informazioni, consulta Configurare la registrazione per AWS IoT Greengrass.
Nel file system locale, AWS IoT Greengrass archivia i log nelle seguenti posizioni. La lettura dei log nel file system richiede autorizzazioni root.
greengrass-root
/ggc/var/log/crash.log-
Mostra i messaggi generati quando un AWS IoT Greengrass core si blocca.
greengrass-root
/ggc/var/log/system/runtime.log-
Mostra i messaggi che indicano quale componente restituisce un errore.
greengrass-root
/ggc/var/log/system/-
Contiene tutti i log dei componenti del AWS IoT Greengrass sistema, come il gestore dei certificati e il gestore delle connessioni. Utilizzando i messaggi in
ggc/var/log/system/
andggc/var/log/system/runtime.log
, dovresti essere in grado di scoprire quale errore si è verificato nei componenti AWS IoT Greengrass del sistema. greengrass-root
/ggc/var/log/system/localwatch/-
Contiene i log del AWS IoT Greengrass componente che gestisce il caricamento dei log di Greengrass su Logs. CloudWatch Se non riesci a visualizzare i log in di Greengrass CloudWatch, puoi utilizzare questi registri per la risoluzione dei problemi.
greengrass-root
/ggc/var/log/user/-
Contiene tutti i log delle funzioni Lambda definite dall'utente. Controlla questa cartella per trovare i messaggi di errore delle funzioni Lambda locali.
Nota
Come impostazione predefinita, greengrass-root
è la directory /greengrass
. Se è configurata una directory di scrittura, i log si trovano in tale directory.
Se i log sono configurati per essere archiviati nel cloud, usa CloudWatch Logs per visualizzare i messaggi di log. crash.log
si trova solo nei log del file system sul dispositivo principale AWS IoT Greengrass .
Se AWS IoT è configurato per la scrittura di registri CloudWatch, controllali se si verificano errori di connessione quando i componenti del sistema tentano di connettersi a. AWS IoT
Per ulteriori informazioni sulla AWS IoT Greengrass registrazione, vedere. Monitoraggio con AWS IoT Greengrass registri
Nota
I log del software AWS IoT Greengrass Core v1.0 sono archiviati nella directory. greengrass-root
/var/log
Risoluzione dei problemi di storage
Quando lo storage di file locale è pieno, alcuni componenti potrebbero iniziare a restituire errori:
-
Gli aggiornamenti shadow locali non si verificano.
-
I nuovi certificati AWS IoT Greengrass principali del server MQTT non possono essere scaricati localmente.
-
Le distribuzioni hanno esito negativo.
È sempre consigliabile conoscere la quantità di spazio libero disponibile in locale. È possibile calcolare lo spazio libero in base alle dimensioni delle funzioni Lambda distribuite, alla configurazione di registrazione (Risoluzione dei problemi con i logvedi) e al numero di shadow archiviate localmente.
Risoluzione dei problemi relativi ai messaggi
Tutti i messaggi inviati localmente AWS IoT Greengrass vengono inviati con QoS 0. Per impostazione predefinita, AWS IoT Greengrass archivia i messaggi in una coda in memoria. Pertanto, i messaggi non elaborati andranno persi quando il core Greengrass viene riavviato, ad esempio dopo la distribuzione di un gruppo o il riavvio di un dispositivo. Tuttavia, è possibile configurare AWS IoT Greengrass (versione 1.6 o successiva) la memorizzazione nella cache dei messaggi nel file system in modo che persistano anche dopo i riavvii principali. Puoi inoltre configurare le dimensioni della coda. Se configuri le dimensioni della coda, assicurati che siano maggiori o uguali a 262144 byte (256 KB). In caso contrario, AWS IoT Greengrass potrebbe non avviarsi correttamente. Per ulteriori informazioni, consulta Coda di messaggi MQTT per destinazioni sul cloud.
Nota
Se utilizzi la coda in memoria predefinita, è consigliabile distribuire gruppi o riavviare il dispositivo nel momento in cui l'interruzione di servizio non crea particolari problemi.
Puoi inoltre configurare il core per stabilire sessioni persistenti con AWS IoT. Ciò consente al core di ricevere messaggi inviati Cloud AWS mentre il core è offline. Per ulteriori informazioni, consulta Sessioni persistenti MQTT con AWS IoT Core.
Risoluzione dei problemi di timeout della sincronizzazione shadow
Ritardi significativi nelle comunicazioni tra un dispositivo core Greengrass e il cloud potrebbero causare un errore nella sincronizzazione shadow a causa di un timeout. In questo caso, ti consigliamo di controllare le voci di log simili alle seguenti:
[2017-07-20T10:01:58.006Z][ERROR]-cloud_shadow_client.go:57,Cloud shadow client error: unable to get cloud shadow what_the_thing_is_named for synchronization. Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
[2017-07-20T10:01:58.006Z][WARN]-sync_manager.go:263,Failed to get cloud copy: Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
[2017-07-20T10:01:58.006Z][ERROR]-sync_manager.go:375,Failed to execute sync operation {what_the_thing_is_named VersionDiscontinued []}"
Una possibile soluzione consiste nel configurare la quantità di tempo che il dispositivo core deve attendere per ricevere una risposta dell'host. Apri il file config.json in
e aggiungi un campo greengrass-root
/configsystem.shadowSyncTimeout
con un valore di timeout in secondi. Per esempio:
{
"system": {
"shadowSyncTimeout": 10
},
"coreThing": {
"caPath": "root-ca.pem",
"certPath": "cloud.pem.crt",
"keyPath": "cloud.pem.key",
...
},
...
}
Se non è specificato alcun valore shadowSyncTimeout
in config.json
, il valore predefinito è 5 secondi.
Nota
Per il software AWS IoT Greengrass Core v1.6 e versioni precedenti, l'impostazione predefinita shadowSyncTimeout
è 1 secondo.
Seleziona Re:post AWS
Se non riesci a risolvere il problema utilizzando le informazioni sulla risoluzione dei problemi contenute in questo argomento, puoi cercare Risoluzione dei problemi AWS IoT Greengrass o controllare il AWS IoT Greengrass tag su AWS re:post