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à.
Configurazione di AWS IoT Greengrass Core
Un AWS IoT Greengrass core è un AWS IoT oggetto (dispositivo) che funge da hub o gateway in ambienti edge. Come altri dispositivi AWS IoT, un core è incluso nel registro, ha una shadow del dispositivo e utilizza un certificato del dispositivo per l'autenticazione su AWS IoT Core e AWS IoT Greengrass. Il dispositivo core esegue il software AWS IoT Greengrass Core, che consente di gestire i processi locali per i gruppi Greengrass, come la comunicazione, la sincronizzazione shadow e lo scambio di token.
Il software AWS IoT Greengrass Core offre le seguenti funzionalità:
-
Distribuzione ed esecuzione locale di connettori e funzioni Lambda.
-
Elabora i flussi di dati localmente con esportazioni automatiche verso. Cloud AWS
-
Messaggistica MQTT sulla rete locale tra dispositivi, connettori e funzioni Lambda utilizzando abbonamenti gestiti.
-
Messaggistica MQTT tra AWS IoT dispositivi, connettori e funzioni Lambda utilizzando abbonamenti gestiti.
-
Connessioni sicure tra dispositivi e Cloud AWS utilizzo dell'autenticazione e dell'autorizzazione dei dispositivi.
-
Sincronizzazione shadow locale dei dispositivi. Le ombre possono essere configurate per la sincronizzazione con. Cloud AWS
-
Accesso controllato alle risorse volume e dispositivo locali.
-
Distribuzione di modelli di machine learning formati nel cloud per l'esecuzione di un'inferenza locale.
-
Rilevamento automatico dell'indirizzo IP che permette ai dispositivi di scoprire il dispositivo Greengrass core.
-
Distribuzione centralizzata di una configurazione del gruppo, nuova o aggiornata. Dopo il download dei dati di configurazione, il dispositivo core viene riavviato automaticamente.
-
Aggiornamenti software sicuri over-the-air (OTA) delle funzioni Lambda definite dall'utente.
-
Archiviazione sicura e crittografata dei segreti locali e accesso controllato tramite connettori e funzioni Lambda.
File di configurazione di AWS IoT Greengrass Core
Il file di configurazione per il software AWS IoT Greengrass Core è config.json
. Si trova nella directory /
.greengrass-root
/config
Nota
greengrass-root
rappresenta il percorso dove è installato il software AWS IoT Greengrass Core sul dispositivo. In genere, questa è la directory /greengrass
.
Se si utilizza l'opzione di creazione del gruppo predefinito dalla AWS IoT Greengrass console, il config.json
file viene distribuito sul dispositivo principale in uno stato funzionante.
È possibile rivedere i contenuti di questo file eseguendo il seguente comando:
cat /
greengrass-root
/config/config.json
Di seguito è riportato un esempio del file config.json
. Questa è la versione generata quando crei il core dalla AWS IoT Greengrass console.
Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale
I tuoi endpoint AWS IoT Core e AWS IoT Greengrass devono corrispondere al tipo di certificato della CA root del dispositivo. Se gli endpoint e il tipo di certificato non corrispondono, i tentativi di autenticazione non riescono tra il dispositivo e AWS IoT Core o AWS IoT Greengrass. Per ulteriori informazioni, consulta Autenticazione del server nella Guida per gli sviluppatori di AWS IoT.
Se il tuo dispositivo utilizza un certificato CA root di Amazon Trust Services (ATS), che è il metodo preferito, deve utilizzare anche gli endpoint ATS per la gestione dei dispositivi e le operazioni del piano dati di rilevamento. Gli endpoint ATS includono il segmento ats
, come illustrato nella seguente sintassi per l'endpoint AWS IoT Core.
prefix
-ats.iot.region
.amazonaws.com
Nota
Per motivi di compatibilità con le versioni precedenti, AWS IoT Greengrass attualmente supporta i certificati e gli endpoint CA VeriSign root legacy in alcuni casi. Regione AWS Se utilizzi un certificato CA VeriSign radice legacy, ti consigliamo di creare un endpoint ATS e utilizzare invece un certificato CA radice ATS. Altrimenti utilizza i corrispondenti endpoint legacy. Per ulteriori informazioni, consulta Endpoint legacy supportati nella Riferimenti generali di Amazon Web Services.
Endpoint in config.json
Su un dispositivo principale di Greengrass, gli endpoint sono specificati nell'oggetto coreThing
nel config.json file. La proprietà iotHost
rappresenta l'endpoint AWS IoT Core. La proprietà ggHost
rappresenta l'endpoint AWS IoT Greengrass. In questo frammento di esempio, le proprietà specificano gli endpoint ATS.
{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
- Endpoint AWS IoT Core
-
Puoi ottenere l'endpoint AWS IoT Core eseguendo il comando CLI aws iot describe-endpoint con il parametro
--endpoint-type
appropriato.-
Per restituire un endpoint firmato con ATS, esegui:
aws iot describe-endpoint --endpoint-type iot:Data-ATS
-
Per restituire un endpoint VeriSign firmato legacy, esegui:
aws iot describe-endpoint --endpoint-type iot:Data
-
- Endpoint AWS IoT Greengrass
-
L'endpoint AWS IoT Greengrass corrisponde all'endpoint
iotHost
con il prefisso host sostituito da greengrass. Ad esempio, l'endpoint firmato con ATS ègreengrass-ats.iot.
. Utilizza la stessa regione dell'endpoint AWS IoT Core.region
.amazonaws.com
Connessione alla porta 443 o tramite un proxy di rete
Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.7 e versioni successive.
Il core Greengrass comunica con AWS IoT Core mediante il protocollo di messaggistica MQTT con l'autenticazione client TLS. Per convenzione, il protocollo MQTT su TLS utilizza la porta 8883. Tuttavia, come misura di sicurezza, gli ambienti restrittivi potrebbero limitare il traffico in entrata e in uscita a un numero ridotto di porte TCP. Ad esempio, un firewall aziendale potrebbe aprire la porta 443 per il traffico HTTPS, ma chiudere le altre porte utilizzate per i protocolli meno comuni, come la porta 8883 per il traffico MQTT. Altri ambienti restrittivi potrebbero richiedere l'indirizzamento di tutto il traffico a un proxy HTTP prima della connessione a Internet.
Per abilitare le comunicazioni in questi scenari, AWS IoT Greengrass consente di effettuare le seguenti configurazioni:
-
MQTT con autenticazione client TLS sulla porta 443. Se la rete in uso consente connessioni alla porta 443, è possibile configurare il core in modo da utilizzare la porta 443 anziché la porta predefinita 8883 per il traffico MQTT. Si può trattare di una connessione diretta alla porta 443 o di una connessione tramite un server proxy di rete.
AWS IoT Greengrass utilizza l'estensione TLS Application Layer Protocol Network
(ALPN) per abilitare questa connessione. Come per la configurazione predefinita, sulla porta 443 il protocollo MQTT su TLS utilizza l'autenticazione client basata sul certificato. Se configurato per utilizzare una connessione diretta alla porta 443, il core supporta gli aggiornamenti over-the-air (OTA) per AWS IoT Greengrass il software. Questo supporto richiede AWS IoT Greengrass Core v1.9.3 o versioni successive.
-
Comunicazione HTTPS sulla porta 443. AWS IoT Greengrass invia il traffico HTTPS sulla porta 8443 per impostazione predefinita, ma puoi configurarlo per utilizzare la porta 443.
-
Connessione tramite un proxy di rete. Puoi configurare un server proxy di rete in modo che funga da intermediario per la connessione al core Greengrass. Sono supportati solo l'autenticazione di base e i proxy HTTP e HTTPS.
La configurazione del proxy viene passata alle funzioni Lambda definite dall'utente tramite
http_proxy
le variabili dihttps_proxy
ambiente,no_proxy
e. Le funzioni Lambda definite dall'utente devono utilizzare queste impostazioni passate per connettersi tramite il proxy. Le librerie comuni utilizzate dalle funzioni Lambda per effettuare connessioni (come boto3 o cURL e pacchettirequests
python) in genere utilizzano queste variabili di ambiente per impostazione predefinita. Se una funzione Lambda specifica anche queste stesse variabili di ambiente, AWS IoT Greengrass non le sovrascrive.Importante
I dispositivi Greengrass Core che sono configurati per utilizzare un proxy di rete non supportano aggiornamenti OTA.
Per configurare MQTT sulla porta 443
Questa funzionalità richiede AWS IoT Greengrass Core v1.7 o versione successiva.
Questa procedura consente al core Greengrass di utilizzare la porta 443 per la messaggistica MQTT con AWS IoT 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àiotMqttPort
e impostare il valore su443
, come mostrato nel seguente esempio.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotMqttPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... } -
Avvia il daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Per configurare HTTPS sulla porta 443
Questa funzionalità richiede AWS IoT Greengrass Core v1.8 o versione successiva.
Questa procedura consente di configurare il core per utilizzare la porta 443 per la comunicazione HTTPS.
-
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 le proprietàiotHttpPort
eggHttpPort
, come mostrato nel seguente esempio.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com",
"iotHttpPort" : 443,
"ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com","ggHttpPort" : 443,
"keepAlive" : 600 }, ... } -
Avvia il daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Per configurare un proxy di rete
Questa funzionalità richiede AWS IoT Greengrass Core v1.7 o versione successiva.
Questa procedura consente a AWS IoT Greengrass di connettersi a Internet tramite un proxy di rete HTTP o HTTPS.
-
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 l'oggetto networkProxy come mostrato nel seguente esempio.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600,
"networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } }
}, ... } -
Avvia il daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
oggetto networkProxy
Utilizza l'oggetto networkProxy
per specificare le informazioni sul proxy di rete. Questo oggetto ha le proprietà seguenti.
Campo | Descrizione |
---|---|
noProxyAddresses |
Facoltativo. Un elenco separato da virgole di indirizzi IP o nomi host esenti dal proxy. |
proxy |
Il proxy a cui connettersi. Un proxy ha le seguenti proprietà.
|
Consentire gli endpoint
La comunicazione tra dispositivi Greengrass e AWS IoT Core o AWS IoT Greengrass deve essere autenticata. Questa autenticazione si basa su certificati di dispositivo X.509 registrati e chiavi crittografiche. Per consentire alle richieste autenticate di passare attraverso i proxy senza crittografia aggiuntiva, consentire i seguenti endpoint.
Endpoint | Porta | Descrizione |
---|---|---|
greengrass. |
443 |
Utilizzato per controllare le operazioni del piano per la gestione dei gruppi. |
oppure
|
MQTT: 8883 o 443 HTTPS: 8443 o 443 |
Utilizzato per operazioni del piano dei dati per la gestione dei dispositivi, ad esempio la sincronizzazione shadow. Consenti l'uso di uno o entrambi gli endpoint, a seconda che i dispositivi core e client utilizzino certificati CA root di Amazon Trust Services (preferiti), certificati CA root legacy o entrambi. Per ulteriori informazioni, consulta Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale. |
oppure
|
8443 o 443 |
Utilizzato per operazioni di rilevamento dispositivo. Consenti l'uso di uno o entrambi gli endpoint, a seconda che i dispositivi core e client utilizzino certificati CA root di Amazon Trust Services (preferiti), certificati CA root legacy o entrambi. Per ulteriori informazioni, consulta Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale. NotaI client che si connettono alla porta 443 devono implementare l'estensione TLS Application Layer Protocol Negotiation (ALPN) |
*.s3.amazonaws.com |
443 |
Utilizzato per le operazioni di distribuzione e over-the-air gli aggiornamenti. Questo formato include il carattere |
logs. |
443 |
Richiesto se il gruppo Greengrass viene configurato per scrivere i log in CloudWatch. |
Configurazione di una directory di scrittura per AWS IoT Greengrass
Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.6 e versioni successive.
Per impostazione predefinita, il software AWS IoT Greengrass Core è distribuito in un'unica directory principale in cui AWS IoT Greengrass esegue tutte le operazioni di lettura e scrittura. Tuttavia, puoi configurare AWS IoT Greengrass per l'utilizzo di una directory separata per tutte le operazioni di scrittura, tra cui la creazione di directory e file. In questo caso, AWS IoT Greengrass usa due directory di primo livello:
-
La directory
greengrass-root
, che può essere lasciata in lettura/scrittura o essere resa, se necessario, di sola lettura. Questa contiene il software AWS IoT Greengrass Core e altri componenti critici che devono mantenere lo stato non modificabile durante il runtime, ad esempio i certificati econfig.json
. -
La directory di scrittura specificata. Contiene contenuti scrivibili, come registri, informazioni sullo stato e funzioni Lambda definite dall'utente distribuite.
Questa configurazione determina la seguente struttura di directory.
- Directory principale Greengrass
-
greengrass-root
/ |-- certs/ | |-- root.ca.pem | |--hash
.cert.pem | |--hash
.private.key | |--hash
.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |--package-version
/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version
.html | |-- runtime/ | |-- java8
/ | |-- nodejs8.10
/ | |-- python3.8
/ | |-- core/ - Directory di scrittura
-
write-directory
/ |-- packages/ | |--package-version
/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/
Per configurare una directory di scrittura
-
Esegui il comando seguente per arrestare il daemon AWS IoT Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd stop -
Apri
per la modifica come utente su.greengrass-root
/config/config.json -
Aggiungi
writeDirectory
come parametro e specifica il percorso della directory di destinazione, come mostrato nel seguente esempio.{ "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/
write-directory
" }Nota
Puoi aggiornare le impostazioni di
writeDirectory
in qualsiasi momento. Dopo che le impostazioni sono state aggiornate, AWS IoT Greengrass utilizza la nuova directory di scrittura specificata all'avvio successivo, ma non migra il contenuto dalla precedente directory di scrittura. -
Ora che la directory di scrittura è configurata, puoi rendere la directory
greengrass-root
di sola lettura. Per maggiori istruzioni, consulta Come rendere la directory principale Greengrass di sola lettura.Altrimenti, avvia il daemon AWS IoT Greengrass:
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start
Per rendere la directory principale di Greengrass di sola lettura
Seguire queste fasi solo se si desidera rendere la directory principale Greengrass di sola lettura. La directory di scrittura deve essere configurata prima di iniziare.
-
Concedere le autorizzazioni di accesso alle directory richieste:
-
Fornisci le autorizzazioni di lettura e scrittura al proprietario di
config.json
.sudo chmod 0600 /
greengrass-root
/config/config.json -
Rendi ggc_user il proprietario dei certificati e delle directory Lambda del sistema.
sudo chown -R ggc_user:ggc_group /
greengrass-root
/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root
/ggc/packages/1.11.6/lambda/Nota
Gli account ggc_user e ggc_group vengono utilizzati di default per eseguire le funzioni Lambda di sistema. Se hai configurato l'identità di accesso predefinita a livello di gruppo per utilizzare account differenti, è consigliabile concedere le autorizzazioni a tali utente (UID) e gruppo (GID).
-
-
Rendi la directory
greengrass-root
di sola lettura utilizzando il tuo meccanismo preferito.Nota
Un modo per rendere la directory
greengrass-root
di sola lettura è montare la directory come di sola lettura. Tuttavia, per applicare gli aggiornamenti over-the-air (OTA) al software AWS IoT Greengrass Core in una directory montata, la directory deve prima essere smontata e poi rimontata dopo l'aggiornamento. Puoi aggiungere queste operazioniumount
emount
agli scriptota_pre_update
eota_post_update
. Per ulteriori informazioni sugli aggiornamenti OTA, consulta Agente di aggiornamento OTA di Greengrass e Rigenerazione gestita con aggiornamenti OTA. -
Avvia il daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd startSe le autorizzazioni della fase 1 non sono state impostate correttamente, il daemon non verrà avviato.
Configurazione delle impostazioni MQTT
Nell'AWS IoT Greengrassambiente, i dispositivi client locali, le funzioni Lambda, i connettori e i componenti di sistema possono comunicare tra loro e con. AWS IoT Core Tutta la comunicazione passa attraverso il core, che gestisce le sottoscrizioni che autorizzano la comunicazione MQTT tra entità.
Per informazioni sulle impostazioni MQTT che puoi configurare per AWS IoT Greengrass, consulta le sezioni seguenti:
Nota
OPC-UA è uno standard di scambio di informazioni per la comunicazione industriale. Per implementare il supporto per OPC-UA sul core Greengrass, puoi utilizzare il connettore IoT. SiteWise Il connettore invia i dati dei dispositivi industriali dai server OPC-UA alle proprietà degli asset in AWS IoT SiteWise.
Messaggio di qualità del servizio
AWS IoT Greengrass supporta i livelli 0 e 1 della qualità del servizio (QoS), a seconda della configurazione e della destinazione e direzione della comunicazione. Il core Greengrass agisce come un client per la comunicazione con AWS IoT Core e come un broker di messaggi per la comunicazione sulla rete locale.
Per ulteriori informazioni su MQTT e QoS, vedere Guida introduttiva
- Comunicazione con Cloud AWS
-
-
I messaggi in uscita utilizzano QoS 1
Il core invia messaggi destinati Cloud AWS agli obiettivi utilizzando QoS 1. AWS IoT Greengrassutilizza una coda di messaggi MQTT per elaborare questi messaggi. Se il recapito del messaggio non è confermato daAWS IoT, il messaggio viene spoolerato per essere riprovato in un secondo momento. Il messaggio non può essere riprovato se la coda è piena. La conferma del recapito del messaggio può aiutare a ridurre al minimo la perdita di dati dovuta alla connettività intermittente.
Poiché i messaggi in uscita AWS IoT utilizzano QoS 1, la velocità massima con cui il core Greengrass può inviare messaggi dipende dalla latenza tra il core e. AWS IoT Ogni volta che il core invia un messaggio, attende che lo AWS IoT confermi prima di inviare il messaggio successivo. Ad esempio, se il tempo di andata e ritorno tra il core e il suo Regione AWS è di 50 millisecondi, il core può inviare fino a 20 messaggi al secondo. Considerate questo comportamento quando scegliete il punto di connessione del coreRegione AWS. Per importare dati IoT ad alto volume suCloud AWS, puoi utilizzare stream manager.
Per ulteriori informazioni sulla coda di messaggi MQTT, incluso come configurare una cache di archiviazione locale in grado di rendere persistenti i messaggi destinati alle destinazioni, vedere. Cloud AWS Coda di messaggi MQTT per destinazioni sul cloud
-
I messaggi in entrata utilizzano QoS 0 (predefinito) o QoS 1
Per impostazione predefinita, il core si iscrive con QoS 0 ai messaggi Cloud AWS provenienti dalle sorgenti. Se si abilitano sessioni persistenti, il core effettua la sottoscrizione con QoS 1. Ciò consente di ridurre al minimo la perdita di dati causata dall'instabilità della connessione. Per gestire il QoS per queste sottoscrizioni, configura le impostazioni di persistenza sul componente di sistema di spooler locale.
Per ulteriori informazioni, incluso come consentire al core di stabilire una sessione persistente con Cloud AWS obiettivi, vedere. Sessioni persistenti MQTT con AWS IoT Core
-
- Comunicazione con target locali
-
Tutte le comunicazioni locali utilizzano QoS 0. Il core tenta di inviare un messaggio a una destinazione locale, che può essere una funzione Greengrass Lambda, un connettore o un dispositivo client. Il core non archivia i messaggi né conferma la consegna. I messaggi possono essere rimossi ovunque tra i componenti.
Nota
Sebbene la comunicazione diretta tra le funzioni Lambda non utilizzi la messaggistica MQTT, il comportamento è lo stesso.
Coda di messaggi MQTT per destinazioni sul cloud
I messaggi MQTT destinati alle destinazioni vengono messi in coda in Cloud AWS attesa dell'elaborazione. I messaggi in coda vengono elaborati in ordine FIFO (first-in-first-out). Dopo che è stato elaborato e pubblicato in AWS IoT Core, il messaggio viene rimosso dalla coda.
Per impostazione predefinita, il core Greengrass archivia in memoria i messaggi non elaborati destinati alle destinazioni. Cloud AWS Puoi configurare il core per archiviare invece i messaggi non elaborati in una cache di storage locale. A differenza dello storage in memoria, la cache dello storage locale possiede capacità di persistenza anche in caso di riavvio core (ad esempio, dopo una distribuzione di gruppo o un riavvio del dispositivo), in modo che AWS IoT Greengrass possa continuare a elaborare i messaggi. È anche possibile configurare le dimensioni dello storage.
avvertimento
Il core Greengrass potrebbe mettere in coda messaggi MQTT duplicati quando perde la connessione, perché tenta nuovamente un'operazione di pubblicazione prima che il client MQTT rilevi che è offline. Per evitare la duplicazione dei messaggi MQTT per gli obiettivi cloud, configura il valore del core a meno della metà del suo keepAlive
valore. mqttOperationTimeout
Per ulteriori informazioni, consulta File di configurazione di AWS IoT Greengrass Core.
AWS IoT Greengrassutilizza il componente del sistema spooler (la funzione GGCloudSpooler
Lambda) per gestire la coda dei messaggi. Puoi utilizzare le seguenti variabili di ambiente GGCloudSpooler
per configurare le impostazioni di storage.
-
GG_CONFIG_STORAGE_TYPE. La posizione della coda di messaggi. I seguenti valori sono validi:
-
FileSystem
. Archivia i messaggi non elaborati nella cache di archiviazione locale sul disco del dispositivo principale fisico. In caso di riavvio core, i messaggi in coda vengono conservati per l'elaborazione. I messaggi vengono rimossi dopo essere stati elaborati. -
Memory
(impostazione predefinita). Archivia i messaggi non elaborati in memoria. In caso di riavvio del core, i messaggi in coda vengono persi.Questa opzione è ottimizzata per dispositivi con funzionalità hardware limitate. Quando si utilizza questa configurazione, consigliamo di distribuire gruppi o riavviare il dispositivo nel momento in cui l'interruzione di servizio non crea particolari problemi.
-
-
GG_CONFIG_MAX_SIZE_BYTES. Le dimensioni dello storage, in byte. Questo valore può essere un qualsiasi numero intero non negativo maggiore o uguale a 262144 (256 KB); dimensioni minori impediscono l'avvio del software AWS IoT Greengrass Core. Le dimensioni predefinite sono di 2,5 MB. Quando viene raggiunto il limite di dimensioni, i messaggi in coda più vecchi vengono sostituiti da nuovi messaggi.
Nota
Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.6 e versioni successive. Le versioni precedenti utilizzavano l'archiviazione in memoria con una dimensione della coda di 2,5 MB. Non è possibile configurare le impostazioni di storage per le versioni precedenti.
Come aggiungere i messaggi alla cache nello storage locale
Puoi configurare AWS IoT Greengrass affinché memorizzi i messaggi nella cache del file system in modo che vengano mantenuti tra i riavvii del core. A tale scopo, distribuisci una versione di definizione della funzione in cui la funzione GGCloudSpooler
imposta il tipo di storage su FileSystem
. È necessario utilizzare l'API AWS IoT Greengrass per configurare la cache di storage locale. Questa operazione può essere eseguita nella console.
La procedura seguente utilizza il comando create-function-definition-version
CLI per configurare lo spooler per salvare i messaggi in coda nel file system. Configura anche una coda di 2,6 MB.
-
Ottieni gli ID del gruppo di destinazione Greengrass e la versione dei gruppi. Questa procedura presuppone che si tratti del gruppo e della versione del gruppo più recenti. La seguente query restituisce il gruppo creato più di recente.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
In alternativa, puoi eseguire query in base al nome. I nomi dei gruppi non devono essere univoci, pertanto potrebbero essere restituiti più gruppi.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Nota
Puoi trovare questi valori anche nella AWS IoT console. L'ID gruppo viene visualizzato nella pagina Settings (Impostazioni) del gruppo. Gli ID delle versioni del gruppo vengono visualizzati nella scheda Distribuzioni del gruppo.
-
Copiare i valori
Id
eLatestVersion
dal gruppo target nell'output. -
Ottieni la versione gruppo più recente.
-
Sostituisci
group-id
con l'Id
copiato. -
Sostituisci l’
latest-group-version-id
con l’LatestVersion
copiato.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Dall'oggetto
Definition
dell'output, copiareCoreDefinitionVersionArn
e gli ARN di tutti gli altri componenti del gruppo tranneFunctionDefinitionVersionArn
. Si usano questi valori quando si crea una nuova versione gruppo. -
Da
FunctionDefinitionVersionArn
nell'output, copia l'ID della definizione della funzione. L'ID è il GUID che segue il segmentofunctions
nell'ARN, come mostrato nell'esempio seguente.arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
Nota
In alternativa, è possibile creare una definizione di funzione eseguendo il
create-function-definition
comando e quindi copiando l'ID dall'output. -
Aggiungi una versione di definizione della funzione alla definizione della funzione.
-
function-definition-id
Sostituiscilo conId
quello che hai copiato per la definizione della funzione. -
Sostituire
arbitrary-function-id
con un nome per la funzione, ad esempiospooler-function
. -
Aggiungi all'array tutte le funzioni Lambda che desideri includere in questa versione.
functions
È possibile utilizzare ilget-function-definition-version
comando per ottenere le funzioni Greengrass Lambda da una versione di definizione di funzione esistente.
avvertimento
Assicurati di specificare un valore per
GG_CONFIG_MAX_SIZE_BYTES
che sia maggiore o uguale a 262144. Una dimensione minore impedisce l'avvio del software AWS IoT Greengrass Core.aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'Nota
Se in precedenza hai impostato la variabile di ambiente
GG_CONFIG_SUBSCRIPTION_QUALITY
per supportare sessioni persistenti con AWS IoT Core, includila in questa istanza di funzione. -
-
Copia l'
Arn
della definizione di funzione dall'output. -
Crea una versione di gruppo che contenga la funzione Lambda del sistema.
-
Sostituisci
group-id
con l'Id
per il gruppo. -
Sostituiscila
core-definition-version-arn
conCoreDefinitionVersionArn
quella che hai copiato dall'ultima versione del gruppo. -
Sostituiscilo
function-definition-version-arn
conArn
quello che hai copiato per la nuova versione della definizione di funzione. -
Sostituisci gli ARN per altri componenti del gruppo (ad esempio
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) copiati dalla versione gruppo più recente. -
Rimuovi eventuali parametri inutilizzati. Ad esempio, rimuovi
--resource-definition-version-arn
se la versione gruppo non contiene risorse.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copia il valore
Version
dall'output. Questo è l'ID della nuova versione gruppo. -
Distribuisci il gruppo con la nuova versione del gruppo.
-
Sostituisci
group-id
con l'Id
copiato per il gruppo. -
Sostituisci
group-version-id
conVersion
quello che hai copiato per la nuova versione del gruppo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Per aggiornare le impostazioni di storage, puoi utilizzare l'API AWS IoT Greengrass per creare una nuova versione di definizione della funzione che contiene la funzione GGCloudSpooler
con la configurazione aggiornata. Quindi aggiungi la versione della definizione della funzione a una nuova versione del gruppo (insieme agli altri componenti del gruppo) e distribuisci la versione del gruppo. Se desideri ripristinare la configurazione predefinita, puoi distribuire una versione di definizione della funzione che non include la funzione GGCloudSpooler
.
Questa funzione Lambda di sistema non è visibile nella console. Tuttavia, dopo che la funzione è stata aggiunta all'ultima versione del gruppo, è inclusa nelle distribuzioni eseguite dalla console, a meno che non usi l'API per sostituirla o rimuoverla.
Sessioni persistenti MQTT con AWS IoT Core
Questa caratteristica è disponibile per AWS IoT Greengrass Core v1.10 e versioni successive.
Il core Greengrass può stabilire una sessione persistente con il broker messaggi AWS IoT. Una sessione persistente è una connessione continua che consente al core di ricevere messaggi inviati mentre è offline. Il core è il client nella connessione.
In una sessione persistente, il broker messaggi AWS IoT salva tutte le sottoscrizioni effettuate dal core durante la connessione. Se il core si disconnette, il broker di AWS IoT messaggi archivia i messaggi nuovi e non riconosciuti pubblicati come QoS 1 e destinati a destinazioni locali, come le funzioni Lambda e i dispositivi client. Quando il core si ricollega, la sessione persistente viene ripristinata e il broker di messaggi AWS IoT invia i messaggi archiviati al core a una velocità massima di 10 messaggi al secondo. Le sessioni persistenti hanno un periodo di scadenza predefinito di 1 ora, che inizia quando il broker messaggi rileva che il core si disconnette. Per ulteriori informazioni, consulta Sessioni persistenti MQTT nella Developer Guide. AWS IoT
AWS IoT Greengrassutilizza il componente del sistema spooler (la funzione GGCloudSpooler
Lambda) per creare sottoscrizioni che hanno come origine. AWS IoT Puoi utilizzare la seguente variabile di ambiente GGCloudSpooler
per configurare sessioni persistenti.
-
GG_CONFIG_SUBSCRIPTION_QUALITY. La qualità delle sottoscrizioni che hanno come origine AWS IoT. I seguenti valori sono validi:
-
AtMostOnce
(impostazione predefinita). Disabilita sessioni persistenti. Le sottoscrizione utilizzano QoS 0. -
AtLeastOncePersistent
. Abilita sessioni persistenti. Imposta il flagcleanSession
su0
nei messaggiCONNECT
ed effettua la sottoscrizione con QoS 1.I messaggi pubblicati con QoS 1 ricevuti dal core raggiungono sicuramente la coda di lavoro in memoria del daemon Greengrass. Il core riconosce il messaggio dopo che è stato aggiunto alla coda. La comunicazione successiva dalla coda alla destinazione locale (ad esempio, la funzione, il connettore o il dispositivo Greengrass Lambda) viene inviata come QoS 0. AWS IoT Greengrassnon garantisce la consegna a destinazioni locali.
Nota
È possibile utilizzare la proprietà di configurazione maxWorkItemCount per controllare la dimensione della coda degli elementi di lavoro. Ad esempio, puoi aumentare le dimensioni della coda se il carico di lavoro richiede un intenso traffico MQTT.
Quando sono abilitate sessioni persistenti, il core apre almeno una connessione aggiuntiva per lo scambio di messaggi MQTT con AWS IoT. Per ulteriori informazioni, consulta ID client per connessioni MQTT con AWS IoT.
-
Per configurare sessioni persistenti MQTT
Puoi configurare AWS IoT Greengrass per utilizzare sessioni persistenti con AWS IoT Core. A tale scopo, distribuisci una versione di definizione della funzione in cui la funzione GGCloudSpooler
imposta la qualità della sottoscrizione su AtLeastOncePersistent
. Questa impostazione si applica a tutte le sottoscrizioni che hanno AWS IoT Core (cloud
) come origine. Utilizza l'API di AWS IoT Greengrass per configurare sessioni persistenti. Questa operazione può essere eseguita nella console.
La procedura seguente utilizza il comando create-function-definition-version
CLI per configurare lo spooler per l'utilizzo di sessioni persistenti. In questa procedura si presuppone che si stia aggiornando la configurazione dell'ultima versione di un gruppo esistente.
-
Ottieni gli ID del gruppo di destinazione Greengrass e la versione dei gruppi. Questa procedura presuppone che si tratti della versione più recente del gruppo e del gruppo. La seguente query restituisce il gruppo creato più di recente.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
In alternativa, puoi eseguire query in base al nome. I nomi dei gruppi non devono essere univoci, pertanto potrebbero essere restituiti più gruppi.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Nota
Puoi trovare questi valori anche nella AWS IoT console. L'ID gruppo viene visualizzato nella pagina Settings (Impostazioni) del gruppo. Gli ID delle versioni del gruppo vengono visualizzati nella scheda Distribuzioni del gruppo.
-
Copiare i valori
Id
eLatestVersion
dal gruppo target nell'output. -
Ottieni la versione gruppo più recente.
-
Sostituisci
group-id
con l'Id
copiato. -
Sostituisci l’
latest-group-version-id
con l’LatestVersion
copiato.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Dall'oggetto
Definition
dell'output, copiareCoreDefinitionVersionArn
e gli ARN di tutti gli altri componenti del gruppo tranneFunctionDefinitionVersionArn
. Si usano questi valori quando si crea una nuova versione gruppo. -
Da
FunctionDefinitionVersionArn
nell'output, copia l'ID della definizione della funzione. L'ID è il GUID che segue il segmentofunctions
nell'ARN, come mostrato nell'esempio seguente.arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
Nota
In alternativa, è possibile creare una definizione di funzione eseguendo il
create-function-definition
comando e quindi copiando l'ID dall'output. -
Aggiungi una versione di definizione della funzione alla definizione della funzione.
-
function-definition-id
Sostituiscilo conId
quello che hai copiato per la definizione della funzione. -
Sostituire
arbitrary-function-id
con un nome per la funzione, ad esempiospooler-function
. -
Aggiungi all'array tutte le funzioni Lambda che desideri includere in questa versione.
functions
È possibile utilizzare ilget-function-definition-version
comando per ottenere le funzioni Greengrass Lambda da una versione di definizione di funzione esistente.
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id
"}]'Nota
Se in precedenza hai impostano le variabili di ambiente
GG_CONFIG_STORAGE_TYPE
oGG_CONFIG_MAX_SIZE_BYTES
per definire le impostazioni di storage, includerle in questa istanza di funzione. -
-
Copia l'
Arn
della definizione di funzione dall'output. -
Crea una versione di gruppo che contenga la funzione Lambda del sistema.
-
Sostituisci
group-id
con l'Id
per il gruppo. -
Sostituiscila
core-definition-version-arn
conCoreDefinitionVersionArn
quella che hai copiato dall'ultima versione del gruppo. -
Sostituiscilo
function-definition-version-arn
conArn
quello che hai copiato per la nuova versione della definizione di funzione. -
Sostituisci gli ARN per altri componenti del gruppo (ad esempio
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) copiati dalla versione gruppo più recente. -
Rimuovi eventuali parametri inutilizzati. Ad esempio, rimuovi
--resource-definition-version-arn
se la versione gruppo non contiene risorse.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copia il valore
Version
dall'output. Questo è l'ID della nuova versione gruppo. -
Distribuisci il gruppo con la nuova versione del gruppo.
-
Sostituisci
group-id
con l'Id
copiato per il gruppo. -
Sostituisci
group-version-id
conVersion
quello che hai copiato per la nuova versione del gruppo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
-
(Facoltativo) Aumentate la proprietà maxWorkItemCount nel file di configurazione principale. Questo consente al core di gestire l'aumento del traffico MQTT e la comunicazione con i target locali.
Per aggiornare il core con queste modifiche di configurazione, utilizza l'API di AWS IoT Greengrass per creare una nuova versione di definizione della funzione che contiene la funzione GGCloudSpooler
con la configurazione aggiornata. Quindi aggiungi la versione della definizione della funzione a una nuova versione del gruppo (insieme agli altri componenti del gruppo) e distribuisci la versione del gruppo. Se desideri ripristinare la configurazione predefinita, puoi creare una versione di definizione della funzione che non include la funzione GGCloudSpooler
.
Questa funzione Lambda di sistema non è visibile nella console. Tuttavia, dopo che la funzione è stata aggiunta all'ultima versione del gruppo, è inclusa nelle distribuzioni eseguite dalla console, a meno che non usi l'API per sostituirla o rimuoverla.
ID client per connessioni MQTT con AWS IoT
Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.8 e versioni successive.
Il core Greengrass apre le connessioni MQTT con AWS IoT Core per operazioni quali la sincronizzazione e la gestione dei certificati shadow. Per queste connessioni, il core genera ID client prevedibili in base al nome. Gli ID client prevedibili possono essere utilizzati con funzionalità di monitoraggio, controllo e determinazione dei prezzi, inclusi AWS IoT Device Defender gli eventi del ciclo di vita. AWS IoT Puoi anche creare una logica intorno agli ID clienti prevedibili (ad esempio, modelli di policy di sottoscrizione basati su attributi dei certificati).
Nota
Gli ID client duplicati utilizzati nelle connessioni simultanee possono causare un ciclo infinito di disconnessione-connessione. Ciò può accadere se un altro dispositivo è hardcoded per utilizzare il nome del dispositivo core come ID client nelle connessioni. Per ulteriori informazioni, consulta questa fase della risoluzione dei problemi.
I dispositivi Greengrass sono anche completamente integrati con il servizio di indicizzazione del parco istanze di AWS IoT Device Management. In questo modo è possibile indicizzare e cercare dispositivi basati su attributi dei dispositivi, stato ombra e stato della connessione nel cloud. Ad esempio, i dispositivi Greengrass stabiliscono almeno una connessione che utilizza il nome dell'oggetto come ID del client, perciò è possibile utilizzare l'indicizzazione della connettività del dispositivo per rilevare quali dispositivi Greengrass sono attualmente collegati a AWS IoT Core o scollegati da esso. Per ulteriori informazioni, consulta il servizio di indicizzazione del parco veicoli nella Developer Guide. AWS IoT
Configurazione della porta MQTT per la messaggistica locale
Questa funzionalità richiede AWS IoT Greengrass Core v1.10 o versione successiva.
Il core Greengrass funge da broker di messaggi locale per la messaggistica MQTT tra funzioni Lambda locali, connettori e dispositivi client. Per impostazione predefinita, il core utilizza la porta 8883 per il traffico MQTT sulla rete locale. Potrebbe essere opportuno modificare la porta per evitare un conflitto con altro software in esecuzione sulla porta 8883.
Per configurare il numero di porta utilizzato dal core per il traffico MQTT locale
-
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àggMqttPort
e impostare il valore sul numero di porta che si desidera utilizzare. I valori validi sono compresi tra 1024 e 65535. Nell'esempio seguente il numero di porta viene impostato su9000
.{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com",
"ggMqttPort" : 9000,
"keepAlive" : 600 }, ... } -
Avvia il daemon.
cd /
greengrass-root
/ggc/core/ sudo ./greengrassd start -
Se il rilevamento IP automatico è abilitato per il core, la configurazione è completata.
Se il rilevamento IP automatico non è abilitato, è necessario aggiornare le informazioni di connettività per il core. Ciò consente ai dispositivi client di ricevere il numero di porta corretto durante le operazioni di rilevamento per acquisire le informazioni di connettività di base. È possibile utilizzare la AWS IoT console o l'AWS IoT GreengrassAPI per aggiornare le informazioni di connettività di base. Per questa procedura, aggiornare solo il numero di porta. L'indirizzo IP locale per il core non cambia.
- Per aggiornare le informazioni di connettività per il core (console)
-
-
Nella pagina di configurazione del gruppo, scegli il core Greengrass.
-
Nella pagina dei dettagli principali, scegli la scheda Endpoints del broker MQTT.
-
Scegli Gestisci endpoint, quindi scegli Aggiungi endpoint
-
Inserisci il tuo attuale indirizzo IP locale e il nuovo numero di porta. Nell'esempio seguente il numero di porta viene impostato su
9000
per l'indirizzo IP192.168.1.8
. -
Rimuovere l'endpoint obsoleto e quindi scegliere Update (Aggiorna)
-
- Per aggiornare le informazioni di connettività per il core (API)
-
-
Usa l'azione UpdateConnectivityInfo. Nell'esempio seguente viene utilizzato
update-connectivity-info
nella AWS CLI per impostare il numero di porta9000
per l'indirizzo IP192.168.1.8
.aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
-
Nota
Puoi inoltre configurare la porta utilizzata dal core per la messaggistica MQTT con AWS IoT Core. Per ulteriori informazioni, consulta Connessione alla porta 443 o tramite un proxy di rete.
Timeout per le operazioni di pubblicazione, sottoscrizione e annullamento dell'iscrizione nelle connessioni MQTT con Cloud AWS
Questa caratteristica è disponibile in AWS IoT Greengrass versione 1.10.2 o successiva.
È possibile configurare la quantità di tempo (in secondi) per consentire al core Greengrass di completare un'operazione di pubblicazione, sottoscrizione o annullamento della sottoscrizione nelle connessioni MQTT a AWS IoT Core. È possibile modificare questa impostazione se le operazioni vanno in timeout a causa di vincoli di larghezza di banda o latenza elevata. Per configurare questa impostazione nel file config.json aggiungere o modificare la proprietà mqttOperationTimeout
nell'oggetto coreThing
. Per esempio:
{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "
hash
.cert.pem", "keyPath": "hash
.private.key", ... }, ... }
Il timeout predefinito è 5 secondi. Il timeout minimo è di 5 secondi.
Attivazione del rilevamento automatico dell'IP
È possibile configurare AWS IoT Greengrass per consentire ai dispositivi client di un gruppo Greengrass di scoprire automaticamente il core Greengrass. Se abilitato, il core controlla le modifiche ai suoi indirizzi IP. Se un indirizzo cambia, il core pubblica un elenco aggiornato di indirizzi. Questi indirizzi sono resi disponibili ai dispositivi client che fanno parte dello stesso gruppo Greengrass del core.
Nota
La AWS IoT politica per i dispositivi client deve concedere l'greengrass:Discover
autorizzazione per consentire ai dispositivi di recuperare le informazioni di connettività per il core. Per ulteriori informazioni sull’istruzione di policy, consulta Rilevamento.
Per abilitare questa funzionalità dalla AWS IoT Greengrass console, scegli Rilevamento automatico quando distribuisci il tuo gruppo Greengrass per la prima volta. Puoi anche abilitare o disabilitare questa funzionalità nella pagina di configurazione del gruppo scegliendo la scheda Funzioni Lambda e selezionando il rilevatore IP. Il rilevamento automatico degli IP è abilitato se è selezionata l'opzione Rileva automaticamente e sostituisci gli endpoint del broker MQTT.
Per gestire il rilevamento automatico con l'AWS IoT GreengrassAPI, è necessario configurare la funzione Lambda IPDetector
del sistema. La procedura seguente mostra come utilizzare il comando create-function-definition-versionCLI per configurare il rilevamento automatico del core Greengrass.
-
Ottieni gli ID del gruppo di destinazione Greengrass e la versione dei gruppi. Questa procedura presuppone che si tratti della versione più recente del gruppo e del gruppo. La seguente query restituisce il gruppo creato più di recente.
aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"
In alternativa, puoi eseguire query in base al nome. I nomi dei gruppi non devono essere univoci, pertanto potrebbero essere restituiti più gruppi.
aws greengrass list-groups --query "Groups[?Name=='
MyGroup
']"Nota
Puoi trovare questi valori anche nella AWS IoT console. L'ID gruppo viene visualizzato nella pagina Settings (Impostazioni) del gruppo. Gli ID delle versioni del gruppo vengono visualizzati nella scheda Distribuzioni del gruppo.
-
Copiare i valori
Id
eLatestVersion
dal gruppo target nell'output. -
Ottieni la versione gruppo più recente.
-
Sostituisci
group-id
con l'Id
copiato. -
Sostituisci l’
latest-group-version-id
con l’LatestVersion
copiato.
aws greengrass get-group-version \ --group-id
group-id
\ --group-version-idlatest-group-version-id
-
-
Dall'oggetto
Definition
dell'output, copiareCoreDefinitionVersionArn
e gli ARN di tutti gli altri componenti del gruppo tranneFunctionDefinitionVersionArn
. Si usano questi valori quando si crea una nuova versione gruppo. -
Da
FunctionDefinitionVersionArn
nell'output, copia l'ID della definizione della funzione e la versione della definizione della funzione:arn:aws:greengrass:
region
:account-id
:/greengrass/groups/function-definition-id
/versions/function-definition-version-id
Nota
È anche possibile creare una definizione di funzione eseguendo il comando
create-function-definition
e quindi copiare l'ID dall'output. -
Usa il comando
get-function-definition-version
per ottenere lo stato della definizione corrente. Usa quellifunction-definition-id
che hai copiato per la definizione della funzione. Ad esempio,4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
.aws greengrass get-function-definition-version --function-definition-id
function-definition-id
--function-definition-version-idfunction-definition-version-id
Prendi nota delle configurazioni della funzione elencate. Dovrai includerle al momento della creazione di una nuova versione della definizione della funzione per evitare di perdere le impostazioni della definizione corrente.
-
Aggiungi una versione di definizione della funzione alla definizione della funzione.
-
Sostituisci
function-definition-id
con quelloId
che hai copiato per la definizione della funzione. Ad esempio,4d941bc7-92a1-4f45-8d64-EXAMPLEf76c3
. -
Sostituire
arbitrary-function-id
con un nome per la funzione, ad esempioauto-detection-function
. -
Aggiungi all'
functions
array tutte le funzioni Lambda che desideri includere in questa versione, come quelle elencate nel passaggio precedente.
aws greengrass create-function-definition-version \ --function-definition-id
function-definition-id
\ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id
","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2 -
-
Copia l'
Arn
della definizione di funzione dall'output. -
Crea una versione di gruppo che contenga la funzione Lambda del sistema.
-
Sostituisci
group-id
con l'Id
per il gruppo. -
Sostituiscila
core-definition-version-arn
conCoreDefinitionVersionArn
quella che hai copiato dall'ultima versione del gruppo. -
Sostituiscilo
function-definition-version-arn
conArn
quello che hai copiato per la nuova versione della definizione di funzione. -
Sostituisci gli ARN per altri componenti del gruppo (ad esempio
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) copiati dalla versione gruppo più recente. -
Rimuovi eventuali parametri inutilizzati. Ad esempio, rimuovi
--resource-definition-version-arn
se la versione gruppo non contiene risorse.
aws greengrass create-group-version \ --group-id
group-id
\ --core-definition-version-arncore-definition-version-arn
\ --function-definition-version-arnfunction-definition-version-arn
\ --device-definition-version-arndevice-definition-version-arn
\ --logger-definition-version-arnlogger-definition-version-arn
\ --resource-definition-version-arnresource-definition-version-arn
\ --subscription-definition-version-arnsubscription-definition-version-arn
-
-
Copia il valore
Version
dall'output. Questo è l'ID della nuova versione gruppo. -
Distribuisci il gruppo con la nuova versione del gruppo.
-
Sostituisci
group-id
con l'Id
copiato per il gruppo. -
Sostituisci
group-version-id
conVersion
quello che hai copiato per la nuova versione del gruppo.
aws greengrass create-deployment \ --group-id
group-id
\ --group-version-idgroup-version-id
\ --deployment-type NewDeployment -
Se vuoi immettere manualmente l'indirizzo IP del core Greengrass, puoi completare questo tutorial con un'altra definizione della funzione che non includa la funzione IPDetector
. Ciò impedirà alla funzione di rilevamento di localizzare e inserire automaticamente l'indirizzo IP principale di Greengrass.
Questa funzione Lambda di sistema non è visibile nella console Lambda. Una volta aggiunta all'ultima versione del gruppo, la funzione viene inclusa nelle distribuzioni eseguite dalla console, a meno che non usi l'API per sostituirla o rimuoverla.
Configurazione del sistema di inizializzazione per avviare il daemon Greengrass
È buona norma impostare il sistema di inizializzazione in modo tale che il lancio del daemon Greengrass avvenga all'avvio, soprattutto in caso di gestione di grandi gruppi di dispositivi.
Nota
Se è stato utilizzato apt
per installare il software AWS IoT Greengrass Core, è possibile utilizzare gli script systemd per abilitare l'avvio all'avvio. Per ulteriori informazioni, consulta Utilizzare gli script systemd per gestire il ciclo di vita del daemon Greengrass.
Esistono diversi tipi di sistema di inizializzazione, ad esempio initd, systemd e SystemV, i quali utilizzano parametri di configurazione simili. L'esempio seguente è un file di servizio per systemd. Il parametro Type
è impostato su forking
perché greengrassd (che viene utilizzato per avviare Greengrass) biforca il processo del daemon Greengrass, mentre il parametro Restart
è impostato su on-failure
per indirizzare systemd in modo tale da riavviare Greengrass se Greengrass presenta uno stato di errore.
Nota
Per vedere se il dispositivo utilizza systemd, eseguire lo script check_ggc_dependencies
come descritto nel Modulo 1. Quindi, per utilizzare systemd fai in modo che il parametro useSystemd
in config.json sia impostato su yes
.
[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target