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à.
Un AWS IoT Greengrass core è un AWS IoT oggetto (dispositivo) che funge da hub o gateway in ambienti edge. Come gli altri AWS IoT dispositivi, nel registro esiste un core, dispone di un'ombra del dispositivo e utilizza un certificato del dispositivo per l'autenticazione con 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.
AWS IoT Greengrass file di configurazione principale
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 in cui il software AWS IoT Greengrass Core è installato 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.
{
"coreThing": {
"caPath": "root.ca.pem",
"certPath": "hash
.cert.pem",
"keyPath": "hash
.private.key",
"thingArn": "arn:partition
:iot:region
:account-id
:thing/core-thing-name
",
"iotHost": "host-prefix
-ats.iot.region
.amazonaws.com",
"ggHost": "greengrass-ats.iot.region
.amazonaws.com",
"keepAlive": 600,
"ggDaemonPort": 8000,
"systemComponentAuthTimeout": 5000
},
"runtime": {
"maxWorkItemCount": 1024,
"maxConcurrentLimit": 25,
"lruSize": 25,
"mountAllBlockDevices": "no",
"cgroup": {
"useSystemd": "yes"
}
},
"managedRespawn": false,
"crypto": {
"principals": {
"SecretsManager": {
"privateKeyPath": "file:///greengrass/certs/hash
.private.key"
},
"IoTCertificate": {
"privateKeyPath": "file:///greengrass/certs/hash
.private.key",
"certificatePath": "file:///greengrass/certs/hash
.cert.pem"
}
},
"caPath": "file:///greengrass/certs/root.ca.pem"
},
"writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory",
"pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory"
}
Il file config.json
supporta le seguenti proprietà:
coreThing
Campo | Descrizione | Note |
---|---|---|
caPath |
Il percorso della CA AWS IoT principale relativo alla |
Per la compatibilità con le versioni precedenti alla 1.7.0. Questa proprietà viene ignorata quando l'oggetto è presente. NotaAssicurati che gli endpoint corrispondano al tipo di certificato. |
certPath |
Il percorso del certificato del dispositivo core relativo alla directory |
Per la retrocompatibilità con le versioni precedenti alla 1.7.0. Questa proprietà viene ignorata quando l'oggetto è presente. crypto |
keyPath |
Il percorso della chiave privata core relativa alla directory / . |
Per la compatibilità con le versioni precedenti alla 1.7.0. Questa proprietà viene ignorata quando l'oggetto è presente. crypto |
thingArn |
L'Amazon Resource Name (ARN) dell' AWS IoT elemento che rappresenta il dispositivo AWS IoT Greengrass principale. | Trova l'ARN per il tuo core nella AWS IoT Greengrass console sotto Cores o eseguendo il comando aws greengrass get-core-definition-version CLI. |
iotHost |
Il tuo endpoint. AWS IoT |
Trova l'endpoint nella AWS IoT console in Impostazioni o eseguendo il comando Questo comando restituisce l'endpoint Amazon Trust Services (ATS). Per ulteriori informazioni, consulta la documentazione Autenticazione del server. NotaAssicurati che gli endpoint corrispondano al tipo di certificato. Assicurati che i tuoi endpoint corrispondano ai tuoi. Regione AWS |
ggHost |
Il tuo AWS IoT Greengrass endpoint. |
Questo è l'endpoint NotaAssicurati che gli endpoint corrispondano al tipo di certificato. Assicurati che i tuoi endpoint corrispondano ai tuoi. Regione AWS |
iotMqttPort |
Facoltativo. Il numero di porta da utilizzare per la comunicazione MQTT con AWS IoT. | I valori validi sono 8883 e 443 . Il valore predefinito è 8883 . Per ulteriori informazioni, consulta Connessione alla porta 443 o tramite un proxy di rete. |
iotHttpPort |
Facoltativo. Il numero di porta utilizzato per creare le connessioni HTTPS a AWS IoT. | I valori validi sono 8443 e 443 . Il valore predefinito è 8443 . Per ulteriori informazioni, consulta Connessione alla porta 443 o tramite un proxy di rete. |
ggMqttPort |
Facoltativo. Il numero di porta da utilizzare per la comunicazione MQTT sulla rete locale. | I valori validi sono compresi tra 1024 e 65535 . Il valore predefinito è 8883 . Per ulteriori informazioni, consulta Configurazione della porta MQTT per la messaggistica locale. |
ggHttpPort |
Facoltativo. Il numero di porta utilizzato per creare le connessioni HTTPS al servizio AWS IoT Greengrass . | I valori validi sono 8443 e 443 . Il valore predefinito è 8443 . Per ulteriori informazioni, consulta Connessione alla porta 443 o tramite un proxy di rete. |
keepAlive |
Facoltativo. Il periodo MQTT KeepAlive in secondi. |
L'intervallo valido è 30-1200 secondi. Il valore predefinito è 600 . |
networkProxy |
Facoltativo. Un oggetto che definisce un server proxy a cui connettersi. | Il server proxy può essere HTTP o HTTPS. Per ulteriori informazioni, consulta Connessione alla porta 443 o tramite un proxy di rete. |
mqttOperationTimeout |
Facoltativo. La quantità di tempo (in secondi) per consentire al core Greengrass di completare un'operazione di pubblicazione, sottoscrizione o annullamento dell'iscrizione nelle connessioni MQTT a AWS IoT Core. | Il valore predefinito è 5. Il valore minimo è 5. |
ggDaemonPort |
Facoltativo. Il numero di porta IPC principale di Greengrass. |
Questa proprietà è disponibile nella versione AWS IoT Greengrass 1.11.0 o successiva. I valori validi sono compresi tra 1024 e 65535. Il valore predefinito è 8000. |
systemComponentAuthTimeout |
Facoltativo. Il tempo (in millisecondi) necessario per consentire all'IPC principale di Greengrass di completare l'autenticazione. |
Questa proprietà è disponibile nella versione 1.11.0 o successiva. AWS IoT Greengrass I valori validi sono compresi tra 500 e 5000. Il valore predefinito è 5000. |
runtime
Campo | Descrizione | Note |
---|---|---|
maxWorkItemCount |
Facoltativo. Il numero massimo di elementi di lavoro che il daemon Greengrass può elaborare alla volta. Gli elementi di lavoro che superano questo limite vengono ignorati. La coda degli elementi di lavoro è condivisa dai componenti di sistema, dalle funzioni Lambda definite dall'utente e dai connettori. |
Il valore predefinito è 1024. Il valore massimo è limitato dall'hardware del dispositivo. L'aumento di questo valore aumenta la memoria utilizzata. AWS IoT Greengrass È possibile aumentare questo valore se si prevede che il core riceverà un intenso traffico di messaggi MQTT. |
maxConcurrentLimit |
Facoltativo. Il numero massimo di worker Lambda non bloccati simultaneamente che il demone Greengrass può avere. È possibile specificare un numero intero diverso per sovrascrivere questo parametro. |
Il valore predefinito è 25. Il valore minimo è definito da |
lruSize |
Facoltativo. Definisce il valore minimo permaxConcurrentLimit . |
Il valore predefinito è 25. |
mountAllBlockDevices |
Facoltativo. Consente di AWS IoT Greengrass utilizzare i bind mount per montare tutti i dispositivi a blocchi in un contenitore dopo aver configurato OverlayFS. |
Questa proprietà è disponibile nella AWS IoT Greengrass versione 1.11.0 o successiva. I valori validi sono Imposta questo valore su |
postStartHealthCheckTimeout |
Facoltativo. Il tempo (in millisecondi) dopo l'avvio che il daemon Greengrass attende per il completamento del controllo dello stato. | Il timeout predefinito è 30 secondi (30000 ms). |
cgroup |
||
useSystemd |
Indica se il dispositivo utilizza systemd |
I valori validi sono yes e no . Esegui lo script check_ggc_dependencies nel Modulo 1 per visualizzare se il dispositivo usa systemd . |
crypto
crypto
contiene proprietà che supportano lo storage di chiavi private in un modulo di sicurezza hardware (HSM) tramite PKCS#11 e storage segreti locali. Per ulteriori informazioni, consulta AWS IoT Greengrass principi di sicurezza fondamentali, Integrazione della sicurezza hardware e Implementa i segreti fino al nucleo AWS IoT Greengrass. Sono supportate le configurazioni per l'archiviazione delle chiavi private su HSMs o nel file system.
Campo | Descrizione | Note |
---|---|---|
caPath |
Il percorso assoluto verso la CA AWS IoT principale. |
Deve essere un URI di file nel formato: NotaAssicurati che gli endpoint corrispondano al tipo di certificato. |
PKCS11 |
||
OpenSSLEngine |
Facoltativo. Il percorso assoluto del file |
Deve essere un percorso di un file nel file system. Questa proprietà è obbligatoria se si utilizza l'agente di aggiornamento OTA Greengrass con sicurezza hardware. Per ulteriori informazioni, consulta Configura il supporto per gli aggiornamenti over-the-air. |
P11Provider |
Il percorso assoluto della libreria libdl-loadable dell'implementazione PKCS#11. |
Deve essere un percorso di un file nel file system. |
slotLabel |
L'etichetta dello slot utilizzata per identificare il modulo hardware. |
Deve essere conforme alle specifiche dell'etichetta PKCS#11. |
slotUserPin |
Il PIN utente utilizzato per autenticare il core Greengrass nel modulo. |
Deve disporre delle autorizzazioni sufficienti a eseguire C_Sign con le chiavi private configurate. |
principals |
||
IoTCertificate |
Il certificato e la chiave privata che il core utilizza per effettuare le richieste a AWS IoT. | |
IoTCertificate .privateKeyPath
|
Il percorso della chiave privata del core. |
Per lo storage di file system, deve essere un URI di file nel formato: Per lo storage HSM, deve essere un percorso PKCS#11 RFC 7512 |
IoTCertificate .certificatePath |
Il percorso assoluto al certificato del dispositivo core. |
Deve essere un URI di file nel formato: |
MQTTServerCertificate |
Facoltativo. La chiave privata che il core utilizza insieme al certificato per fungere da gateway o server MQTT. |
|
MQTTServerCertificate .privateKeyPath |
Il percorso della chiave privata del server MQTT locale. |
Utilizza questo valore per specificare la tua chiave privata del server MQTT locale. Per lo storage di file system, deve essere un URI di file nel formato: Per lo storage HSM, deve essere un percorso PKCS#11 RFC 7512 Se questa proprietà viene omessa, AWS IoT Greengrass ruota la chiave in base alle impostazioni di rotazione. Se viene specificata, il cliente sarà responsabile della rotazione della chiave. |
SecretsManager |
La chiave privata che protegge la chiave di dati utilizzata per la crittografia. Per ulteriori informazioni, consulta Implementa i segreti fino al nucleo AWS IoT Greengrass. | |
SecretsManager .privateKeyPath |
Il percorso della chiave privata del Secrets Manager locale. |
Solo una chiave RSA è supportata. Per lo storage di file system, deve essere un URI di file nel formato: Per lo storage HSM, deve essere un percorso PKCS#11 RFC 7512 |
Sono supportate anche le seguenti proprietà di configurazione:
Campo | Descrizione | Note |
---|---|---|
mqttMaxConnectionRetryInterval
|
Facoltativo. L'intervallo massimo (in secondi) tra tentativi di connessione MQTT se la connessione viene interrotta. |
Specifica questo valore come numero intero senza segno. Il valore predefinito è |
managedRespawn
|
Facoltativo. Indica che l'agente OTA deve eseguire il codice personalizzato prima di un aggiornamento. |
I valori validi sono |
writeDirectory
|
Facoltativo. La directory di scrittura in cui vengono AWS IoT Greengrass create tutte le risorse di lettura/scrittura. |
Per ulteriori informazioni, consulta Configura una directory di scrittura per AWS IoT Greengrass. |
pidFileDirectory |
Facoltativo. AWS IoT Greengrass memorizza il relativo ID di processo (PID) in questa directory. |
Il valore predefinito è |
Gli endpoint del servizio devono corrispondere al tipo di certificato CA principale
AWS IoT Greengrass Gli endpoint AWS IoT Core e gli endpoint devono corrispondere al tipo di certificato del certificato CA principale sul dispositivo. Se gli endpoint e il tipo di certificato non corrispondono, i tentativi di autenticazione tra il dispositivo e AWS IoT Core o hanno esito negativo. 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 ats
segmento, 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 iotHost
proprietà rappresenta l' AWS IoT Core endpoint. La ggHost
proprietà rappresenta l' AWS IoT Greengrass endpoint. 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",
...
},
- AWS IoT Core endpoint
-
Puoi ottenere il tuo AWS IoT Core endpoint eseguendo il comando aws iot describe-endpointCLI con il
--endpoint-type
parametro 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
-
- AWS IoT Greengrass endpoint
-
Il tuo AWS IoT Greengrass endpoint è il tuo
iotHost
endpoint con il prefisso host sostituito da greengrass. Ad esempio, l'endpoint firmato con ATS ègreengrass-ats.iot.
. Questo utilizza la stessa regione dell'endpoint. AWS IoT Coreregion
.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.
I core Greengrass comunicano AWS IoT Core utilizzando 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 la comunicazione in questi scenari, AWS IoT Greengrass consente 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 il software. AWS IoT Greengrass Questo supporto richiede AWS IoT Greengrass Core v1.9.3 o versione successiva.
-
Comunicazione HTTPS tramite la porta 443. AWS IoT Greengrass invia il traffico HTTPS sulla porta 8443 per impostazione predefinita, ma è possibile 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 di AWS IoT Greengrass 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 i dispositivi Greengrass AWS IoT Core e/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 operazioni di distribuzione e over-the-air aggiornamenti. Questo formato include il carattere |
logs. |
443 |
Richiesto se il gruppo Greengrass viene configurato per scrivere i log in CloudWatch. |
Configura 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 viene distribuito in un'unica directory principale in cui AWS IoT Greengrass esegue tutte le operazioni di lettura e scrittura. Tuttavia, è possibile configurare l'utilizzo AWS IoT Greengrass di una directory separata per tutte le operazioni di scrittura, inclusa la creazione di directory e file. In questo caso, AWS IoT Greengrass utilizza due directory di primo livello:
-
La directory
greengrass-root
, che può essere lasciata in lettura/scrittura o essere resa, se necessario, di sola lettura. Contiene il software AWS IoT Greengrass Core e altri componenti critici che dovrebbero rimanere immutabili durante il runtime, come certificati e.config.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 fermare il demone: 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 l'aggiornamento dell'impostazione, AWS IoT Greengrass utilizza la directory di scrittura appena specificata all'avvio successivo, ma non migra il contenuto dalla directory di scrittura precedente. -
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 AWS IoT Greengrass demone:
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 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 Greengrass ambiente, 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 è possibile configurare AWS IoT Greengrass, consulta le seguenti sezioni:
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 di qualità del servizio (QoS) 0 o 1, a seconda della configurazione, dell'obiettivo e della direzione della comunicazione. Il core Greengrass funge da client per la comunicazione AWS IoT Core e 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 Greengrass utilizza una coda di messaggi MQTT per elaborare questi messaggi. Se il recapito del messaggio non è confermato da AWS 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 core Regione AWS . Per importare dati IoT ad alto volume su Cloud 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 l'elaborazione e la pubblicazione di un messaggio su 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 dell'archiviazione in memoria, la cache di archiviazione locale ha la capacità di persistere anche dopo i riavvii principali (ad esempio, dopo una distribuzione di gruppo o il riavvio di un dispositivo), quindi AWS IoT Greengrass può 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 AWS IoT Greengrass file di configurazione principale.
AWS IoT Greengrass utilizza 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 qualsiasi numero intero non negativo maggiore o uguale a 262144 (256 KB); una dimensione inferiore impedisce l' AWS IoT Greengrass avvio del software 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
È possibile AWS IoT Greengrass configurare la memorizzazione nella cache dei messaggi nel file system in modo che persistano anche dopo i riavvii principali. 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' AWS IoT Greengrass API per configurare la cache di archiviazione 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 il gruppo Greengrass IDs di destinazione e la versione del gruppo. Questa procedura presuppone che questa sia la 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. IDs Le versioni del gruppo vengono visualizzate nella scheda Distribuzioni del gruppo.
-
Copiare i valori
Id
eLatestVersion
dal gruppo target nell'output. -
Ottieni la versione gruppo più recente.
-
Sostituisci l’
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'
Definition
oggetto nell'output, copia ilCoreDefinitionVersionArn
e il ARNs di tutti gli altri componenti del gruppo tranne.FunctionDefinitionVersionArn
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 più piccola 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
GG_CONFIG_SUBSCRIPTION_QUALITY
ambiente 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
conId
for the group. -
Sostituiscilo
core-definition-version-arn
conCoreDefinitionVersionArn
quello che hai copiato dalla versione più recente del gruppo. -
Sostituiscilo
function-definition-version-arn
conArn
quello che hai copiato per la nuova versione della definizione di funzione. -
Sostituisci ARNs i componenti degli altri gruppi (ad esempio,
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) che hai copiato dalla versione più recente del gruppo. -
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.
-
Sostituiscilo
group-id
conId
quello che hai 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 archiviazione, si utilizza l' AWS IoT Greengrass API per creare una nuova versione della definizione di funzione che contenga la GGCloudSpooler
funzione 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 funzionalità è disponibile per AWS IoT Greengrass Core v1.10 e versioni successive.
Un core Greengrass può stabilire una sessione persistente con il broker di AWS IoT messaggi. 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 di AWS IoT messaggi 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 riconnette, la sessione persistente viene ripresa e il broker di messaggi invia i AWS IoT 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 MQTT persistent sessions nella Developer Guide.AWS IoT
AWS IoT Greengrass utilizza 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à degli abbonamenti che hanno come fonte. 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, funzione, connettore o dispositivo Greengrass Lambda) viene inviata come QoS 0. AWS IoT Greengrass non 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 le sessioni persistenti sono abilitate, il core apre almeno una connessione aggiuntiva con cui scambiare messaggi MQTT. AWS IoT Per ulteriori informazioni, consulta Client IDs per connessioni MQTT con AWS IoT.
-
Per configurare sessioni persistenti MQTT
È possibile configurare l'utilizzo AWS IoT Greengrass di 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. È necessario utilizzare l' AWS IoT Greengrass API per configurare le 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 il gruppo Greengrass IDs di destinazione e la versione del gruppo. Questa procedura presuppone che questa sia la 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. IDs Le versioni del gruppo vengono visualizzate nella scheda Distribuzioni del gruppo.
-
Copiare i valori
Id
eLatestVersion
dal gruppo target nell'output. -
Ottieni la versione gruppo più recente.
-
Sostituisci l’
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'
Definition
oggetto nell'output, copia ilCoreDefinitionVersionArn
e il ARNs di tutti gli altri componenti del gruppo tranne.FunctionDefinitionVersionArn
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
conId
for the group. -
Sostituiscilo
core-definition-version-arn
conCoreDefinitionVersionArn
quello che hai copiato dalla versione più recente del gruppo. -
Sostituiscilo
function-definition-version-arn
conArn
quello che hai copiato per la nuova versione della definizione di funzione. -
Sostituisci ARNs i componenti degli altri gruppi (ad esempio,
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) che hai copiato dalla versione più recente del gruppo. -
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.
-
Sostituiscilo
group-id
conId
quello che hai 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 alla configurazione, utilizzate l' AWS IoT Greengrass API per creare una nuova versione della definizione della funzione che contenga la GGCloudSpooler
funzione 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.
Client IDs 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 AWS IoT Core per operazioni come la sincronizzazione degli shadow e la gestione dei certificati. Per queste connessioni, il core genera un client prevedibile in IDs base al nome dell'oggetto principale. Il client prevedibile IDs può essere utilizzato con funzionalità di monitoraggio, controllo e determinazione dei prezzi, inclusi AWS IoT Device Defender gli eventi del ciclo di vita.AWS IoT È inoltre possibile creare una logica attorno a un client prevedibile IDs (ad esempio, modelli di policy di sottoscrizione basati sugli attributi del certificato).
Due componenti del sistema Greengrass aprono connessioni MQTT con. AWS IoT Core Questi componenti utilizzano i seguenti modelli per generare il client IDs per le connessioni.
Operazione | Modello ID client |
---|---|
Distribuzioni |
Esempio: Utilizza questo ID client per connetterti, scollegarti, sottoscrivere e annullare la sottoscrizione delle notifiche di eventi del ciclo di vita. |
Sottoscrizioni |
Esempio:
Il componente del sistema spooler si connette AWS IoT Core per scambiare messaggi per abbonamenti con una sorgente o una destinazione cloud. Lo spooler funge anche da proxy per lo scambio di messaggi tra il servizio shadow locale AWS IoT Core e il gestore dei certificati del dispositivo. |
Per calcolare il numero di connessioni MQTT per gruppo, utilizzate la seguente formula:
number of MQTT connections per group = number of connections for
Deployment Agent + number of connections for
Subscriptions
Dove,
-
numero di connessioni per Deployment Agent = 1.
-
numero di connessioni per gli abbonamenti =
(2 subscriptions for supporting certificate generation + number of MQTT topics in AWS IoT Core + number of device shadows synced) / 50
.-
Dove,
50
= il numero massimo di abbonamenti per connessione che AWS IoT Core può supportare.
-
Nota
Se abiliti le sessioni persistenti per l'abbonamento con AWS IoT Core, il core apre almeno una connessione aggiuntiva da utilizzare in una sessione persistente. I componenti di sistema non supportano sessioni persistenti, quindi non possono condividere tale connessione.
Per ridurre il numero di connessioni MQTT e contribuire a ridurre i costi, puoi utilizzare le funzioni Lambda locali per aggregare i dati sull'edge. Quindi invii i dati aggregati a. Cloud AWS Di conseguenza, si utilizzano meno argomenti MQTT in. AWS IoT Core Per ulteriori informazioni, consulta la sezione Prezzi di AWS IoT Greengrass
Nota
Il client duplicato IDs utilizzato nelle connessioni simultanee può causare un ciclo infinito di connessione-disconnessione. 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 Guida per gli sviluppatori.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 Greengrass API 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 anche configurare la porta utilizzata dal core per la messaggistica MQTT. 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 funzionalità è disponibile nella 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 Autorizzazione alla scoperta.
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 Greengrass API, è 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 il gruppo Greengrass IDs di destinazione e la versione del gruppo. Questa procedura presuppone che questa sia la 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. IDs Le versioni del gruppo vengono visualizzate nella scheda Distribuzioni del gruppo.
-
Copiare i valori
Id
eLatestVersion
dal gruppo target nell'output. -
Ottieni la versione gruppo più recente.
-
Sostituisci l’
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'
Definition
oggetto nell'output, copia ilCoreDefinitionVersionArn
e il ARNs di tutti gli altri componenti del gruppo tranne.FunctionDefinitionVersionArn
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. Utilizzate quellifunction-definition-id
che avete copiato per la definizione della funzione. Ad esempio4d941bc7-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 esempio4d941bc7-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
conId
for the group. -
Sostituiscilo
core-definition-version-arn
conCoreDefinitionVersionArn
quello che hai copiato dalla versione più recente del gruppo. -
Sostituiscilo
function-definition-version-arn
conArn
quello che hai copiato per la nuova versione della definizione di funzione. -
Sostituisci ARNs i componenti degli altri gruppi (ad esempio,
SubscriptionDefinitionVersionArn
oDeviceDefinitionVersionArn
) che hai copiato dalla versione più recente del gruppo. -
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.
-
Sostituiscilo
group-id
conId
quello che hai 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 in passato apt
installavi il software AWS IoT Greengrass Core, puoi usare 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