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à.
IoT Analytics
avvertimento
Questo connettore è entrato nella fase di vita estesa eAWS IoT Greengrass non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti alle funzionalità esistenti, patch di sicurezza o correzioni di errori. Per ulteriori informazioni, consulta AWS IoT Greengrass Version 1politica di manutenzione.
Il connettore IoT Analytics invia i dati del dispositivo locale aAWS IoT Analytics. È possibile utilizzare questo connettore come hub centrale per raccogliere dati dai sensori sul dispositivo principale Greengrass e dai dispositivi client connessi. Il connettore invia i dati aiAWS IoT Analytics canali della correnteAccount AWS e della regione. Può inviare i dati a un canale di destinazione predefinito e ai canali specificati in modo dinamico.
Nota
AWS IoT Analytics è un servizio completamente gestito che consente di raccogliere, memorizzare, elaborare e interrogare i dati IoT. In AWS IoT Analytics, i dati possono essere ulteriormente analizzati ed elaborati. Ad esempio, possono essere utilizzati per dare forma ai modelli ML per il monitoraggio della salute macchina o per testare nuove strategie di modellazione. Per ulteriori informazioni, consulta Che cos'è AWS IoT Analytics? nella Guida per l'utente di AWS IoT Analytics.
Il connettore accetta i dati formattati e non formattati negli argomenti MQTT di input. Supporta due argomenti predefiniti in cui il canale di destinazione viene specificato in linea. Può anche ricevere i messaggi su argomenti definiti dal cliente che vengono configurati nelle sottoscrizioni. Questo può essere utilizzato per indirizzare i messaggi dai dispositivi client che pubblicano su argomenti fissi o per gestire dati non strutturati o dipendenti dallo stack provenienti da dispositivi con risorse limitate.
Questo connettore utilizza l'BatchPutMessage
API per inviare dati (come stringa con codifica JSON o base64) al canale di destinazione. Il connettore è in grado di eseguire i dati non elaborati in un formato che soddisfa i requisiti delle API. Il connettore memorizza nel buffer i messaggi nelle code per canale ed elabora in modo asincrono i batch. Offre i parametri che consentono di controllare l'accodamento e la creazione di comportamenti in batch, nonché di limitare il consumo della memoria. Ad esempio, è possibile configurare dimensioni massime della coda, intervallo in batch, dimensioni della memoria e numero di canali attivo.
Questo connettore è disponibile nelle seguenti versioni.
Versione |
ARN |
---|---|
4 |
|
3 |
|
2 |
|
1 |
|
Per informazioni sulle modifiche di ogni versione, consulta Changelog.
Requisiti
Questo connettore presenta i seguenti requisiti:
Parametri
MemorySize
-
La quantità di memoria (in KB) da allocare al connettore.
Nome visualizzato nellaAWS IoT console: Dimensione della memoria
Richiesto:
true
Tipo:
string
Schema valido:
^[0-9]+$
PublishRegion
-
InRegione AWS cui vengono creati i tuoiAWS IoT Analytics canali. Utilizza la stessa regione del connettore.
Nota
Questo deve inoltre corrispondere alla regione per i canali specificati nel ruolo gruppo.
Visualizza il nome nellaAWS IoT console: Area di pubblicazione
Richiesto:
false
Tipo:
string
Schema valido:
^$|([a-z]{2}-[a-z]+-\\d{1})
PublishInterval
-
L'intervallo di tempo (in secondi) per la pubblicazione di un batch dei dati ricevuti in AWS IoT Analytics.
Visualizza il nome nellaAWS IoT console: Intervallo di pubblicazione
Richiesto:
false
Tipo:
string
Valore predefinito:
1
Schema valido:
$|^[0-9]+$
IotAnalyticsMaxActiveChannels
-
Il numero massimo di canali AWS IoT Analytics controllati attivamente dal connettore. Questo deve essere maggiore di 0 e almeno pari al numero di canali su cui prevedi che il connettore pubblicherà in un determinato momento.
Puoi utilizzare questo parametro per limitare il consumo della memoria limitando il numero totale di code che il connettore è in grado di gestire in un determinato momento. Una coda viene eliminato quando tutti i messaggi in coda vengono inviati.
Nome visualizzato nellaAWS IoT console: numero massimo di canali attivi
Richiesto:
false
Tipo:
string
Valore predefinito:
50
Schema valido:
^$|^[1-9][0-9]*$
IotAnalyticsQueueDropBehavior
-
Il comportamento per l'eliminazione di messaggi da una coda del canale quando la coda è piena.
Nome visualizzato nellaAWS IoT console: comportamento di eliminazione della coda
Richiesto:
false
Tipo:
string
Valori validi:
DROP_NEWEST
oDROP_OLDEST
Valore predefinito:
DROP_NEWEST
Schema valido:
^DROP_NEWEST$|^DROP_OLDEST$
IotAnalyticsQueueSizePerChannel
-
Il numero massimo di messaggi da conservare in memoria (per canale) prima che vengano inviati o eliminati. Questo numero deve essere maggiore di 0.
Nome visualizzato nellaAWS IoT console: dimensione massima della coda per canale
Richiesto:
false
Tipo:
string
Valore predefinito:
2048
Schema valido:
^$|^[1-9][0-9]*$
IotAnalyticsBatchSizePerChannel
-
Il numero massimo di messaggi da inviare a un canale AWS IoT Analytics in una richiesta batch. Questo numero deve essere maggiore di 0.
Nome visualizzato nellaAWS IoT console: numero massimo di messaggi da raggruppare per canale
Richiesto:
false
Tipo:
string
Valore predefinito:
5
Schema valido:
^$|^[1-9][0-9]*$
IotAnalyticsDefaultChannelName
-
Il nome del canale AWS IoT Analytics utilizzato dal connettore per i messaggi inviati a un argomento di input definito dal cliente.
Nome visualizzato nellaAWS IoT console: nome del canale predefinito
Richiesto:
false
Tipo:
string
Schema valido:
^[a-zA-Z0-9_]$
IsolationMode
-
Modalità di containerizzazione per questo connettore. L'impostazione predefinita è
GreengrassContainer
, il che significa che il connettore viene eseguito in un ambiente di runtime isolato all'interno del container AWS IoT Greengrass.Nota
L'impostazione predefinita della containerizzazione per il gruppo non si applica ai connettori.
Visualizza il nome nellaAWS IoT console: modalità di isolamento del contenitore
Richiesto:
false
Tipo:
string
Valori validi:
GreengrassContainer
oNoContainer
Schema valido:
^NoContainer$|^GreengrassContainer$
Esempio di creazione di un connettore (AWS CLI)
Il seguente comando CLI crea unaConnectorDefinition
versione iniziale contenente il connettore IoT Analytics.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyIoTAnalyticsApplication", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/IoTAnalytics/versions/3", "Parameters": { "MemorySize": "65535", "PublishRegion": "us-west-1", "PublishInterval": "2", "IotAnalyticsMaxActiveChannels": "25", "IotAnalyticsQueueDropBehavior": "DROP_OLDEST", "IotAnalyticsQueueSizePerChannel": "1028", "IotAnalyticsBatchSizePerChannel": "5", "IotAnalyticsDefaultChannelName": "my_channel" } } ] }'
Nota
La funzione Lambda di questo connettore ha un ciclo di vita prolungato.
NellaAWS IoT Greengrass console, puoi aggiungere un connettore dalla pagina Connettori del gruppo. Per ulteriori informazioni, consulta Nozioni di base sui connettori Greengrass (console).
Dati di input
Questo connettore accetta i dati su argomenti MQTT predefiniti e definiti dal cliente. Gli editori possono essere dispositivi client, funzioni Lambda o altri connettori.
- Argomenti predefiniti
-
Il connettore supporta i due seguenti argomenti MQTT strutturati che consentono ai publisher di specificare il nome del canale in linea.
-
Un messaggio formattato sull'argomento
iotanalytics/channels/+/messages/put
. I dati IoT in questi messaggi di input devono essere in formato JSON o una stringa con codifica base64. -
Un messaggio non formattato sull'argomento
iotanalytics/channels/+/messages/binary/put
. I messaggi di input ricevuti su questo argomento vengono trattati come dati binari e possono contenere qualsiasi tipo di dati.Per pubblicare gli argomenti predefiniti, sostituire il carattere jolly
+
con il nome del canale. Ad esempio:iotanalytics/channels/my_channel/messages/put
-
- Argomenti definiti dal cliente
-
Il connettore supporta la sintassi dell'argomento
#
, che consente di accettare messaggi di input su qualsiasi argomento MQTT che configuri in una sottoscrizione. Ti consigliamo di specificare un percorso tematico invece di utilizzare solo il carattere#
jolly nei tuoi abbonamenti. Questi messaggi vengono inviati al canale predefinito specificato per il connettore.I messaggi di input sugli argomenti definiti dal cliente vengono trattati come dati binari. Essi possono usare qualsiasi formato del messaggio e contenere qualsiasi tipo di dati. Puoi utilizzare gli argomenti definiti dal cliente per instradare i messaggi provenienti da dispositivi che pubblicano su argomenti fissi. È inoltre possibile utilizzarli per accettare dati di input dai dispositivi client che non sono in grado di elaborarli in un messaggio formattato da inviare al connettore.
Per ulteriori informazioni sulle sottoscrizioni e sugli argomenti MQTT, consulta Input e output.
Il ruolo del gruppo consente l'operazione iotanalytics:BatchPutMessage
su tutti i canali di destinazione. Per ulteriori informazioni, consulta Requisiti.
- Filtro di argomenti:
iotanalytics/channels/+/messages/put
-
Utilizzare questo argomento per inviare messaggi formattati al connettore e specificare in modo dinamico un canale di destinazione. Questo argomento consente inoltre di specificare un ID restituito nell'output della risposta. Il connettore verifica che gli ID siano univoci per ciascun messaggio nella richiesta
BatchPutMessage
in uscita inviata a AWS IoT Analytics. Viene eliminato un messaggio con un ID duplicato.I dati di input inviati a questo argomento devono utilizzare il seguente formato del messaggio.
- Proprietà dei messaggi
-
request
-
I dati da inviare al canale specificato.
Richiesto:
true
Tipo:
object
che include le seguenti proprietà:message
-
Il dispositivo o i dati di sensori come JSON o stringa con codifica base64.
Richiesto:
true
Tipo:
string
id
-
Un ID arbitrario della richiesta. Questa proprietà viene utilizzata per associare una richiesta di input a una risposta di output. Quando specificato, la proprietà
id
nell'oggetto della risposta è impostata su questo valore. Se si omette questa proprietà, il connettore genera un ID.Richiesto:
false
Tipo:
string
Schema valido:
.*
- Input di esempio
-
{ "request": { "message" : "{\"temp\":23.33}" }, "id" : "req123" }
- Filtro di argomenti:
iotanalytics/channels/+/messages/binary/put
-
Utilizzare questo argomento per inviare messaggi non formattati al connettore e specificare in modo dinamico un canale di destinazione.
I dati del connettore non analizzano i messaggi di input ricevuti su questo argomento. Vengono trattati come dati binari. Prima di inviarli a AWS IoT Analytics, il connettore codifica e formatta i messaggi per renderli conformi ai requisiti dell'API
BatchPutMessage
:Il connettore codifica su base64 i dati grezzi e include il payload codificato in una richiesta
BatchPutMessage
in uscita.Il connettore genera e assegna un ID per ogni messaggio di input.
Nota
L'output della risposta del connettore non include una correlazione di ID per questi messaggi di input.
- Proprietà dei messaggi
-
Nessuna.
- Filtro di argomenti:
#
-
Utilizzare questo argomento per inviare qualsiasi formato del messaggio al canale predefinito. Ciò è particolarmente utile quando i dispositivi client pubblicano su argomenti fissi o quando si desidera inviare dati al canale predefinito da dispositivi client che non sono in grado di elaborare i dati nel formato di messaggio supportato dal connettore.
Definisci la sintassi dell'argomento nella sottoscrizione che crei per connettere questo connettore alla fonte dati. Ti consigliamo di specificare un percorso tematico invece di utilizzare solo il carattere
#
jolly nei tuoi abbonamenti.I dati del connettore non analizzano i messaggi pubblicati su questo argomento di input. Tutti i messaggi di input vengono trattati come dati binari. Prima di inviarli a AWS IoT Analytics, il connettore codifica e formatta i messaggi per renderli conformi ai requisiti dell'API
BatchPutMessage
:Il connettore codifica su base64 i dati grezzi e include il payload codificato in una richiesta
BatchPutMessage
in uscita.Il connettore genera e assegna un ID per ogni messaggio di input.
Nota
L'output della risposta del connettore non include una correlazione di ID per questi messaggi di input.
- Proprietà dei messaggi
-
Nessuna.
Dati di output
Questo connettore pubblica le informazioni di stato come dati di output su un argomento MQTT. Queste informazioni contengono la risposta restituitaAWS IoT Analytics da ogni messaggio di input ricevuto e inviatoAWS IoT Analytics.
- Filtro argomento in sottoscrizione
-
iotanalytics/messages/put/status
- Output di esempio: Operazione riuscita
-
{ "response" : { "status" : "success" }, "id" : "req123" }
- Esempio di output: Errore
-
{ "response" : { "status" : "fail", "error" : "ResourceNotFoundException", "error_message" : "A resource with the specified name could not be found." }, "id" : "req123" }
Nota
Se il connettore rileva un errore ripetibile (ad esempio, errori di connessione), riprova a pubblicare nel batch successivo. Il backoff esponenziale è gestito dall'AWSSDK. Le richieste con errori non irreversibili vengono aggiunte alla coda del canale per ulteriore pubblicazione in base al parametro
IotAnalyticsQueueDropBehavior
.
Esempio di utilizzo utilizzo
Usa i seguenti passaggi di alto livello per configurare una funzione Lambda di Python 3.7 di esempio che puoi usare per provare il connettore.
Nota
-
Se usi altri runtime di Python, puoi creare un collegamento simbolico da Python3.x a Python 3.7.
-
Gli argomenti Nozioni di base sui connettori (console) e Nozioni di base sui connettori (CLI) contengono passaggi dettagliati che illustrano come configurare e distribuire un connettore Twilio Notifications di esempio.
Assicurarsi di soddisfare i requisiti per il connettore.
Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consultare Gestione del ruolo del gruppo Greengrass (console) o Gestione del ruolo del gruppo Greengrass (CLI).
-
Crea e pubblica una funzione Lambda che invia i dati di input al connettore.
Salvare il codice di esempio come file PY. Scarica e decomprimi il AWS IoT GreengrassCore SDK per Python. Quindi, crea un pacchetto zip che contiene il file PY e la cartella
greengrasssdk
a livello root. Questo pacchetto zip è il pacchetto di distribuzione in cui si caricaAWS Lambda.Dopo aver creato la funzione Lambda di Python 3.7, pubblica una versione della funzione e crea un alias.
-
Configurare il gruppo Greengrass.
-
Aggiungere la funzione Lambda tramite il relativo alias (consigliato). Configura il ciclo di vita di Lambda come longevo (o
"Pinned": true
nella CLI). -
Aggiungere il connettore e configurarne i relativi parametri.
-
Aggiungere sottoscrizioni che consentono al connettore di ricevere i dati di input e inviare i dati di output nei filtri degli argomenti supportati.
Imposta la funzione Lambda come sorgente, il connettore come destinazione e utilizza un filtro tematico di input supportato.
Imposta il connettore come origine, AWS IoT Core come destinazione e utilizza un filtro per l’argomento di output supportato. Si utilizza questo abbonamento per visualizzare i messaggi di stato nellaAWS IoT console.
-
-
Distribuisci il gruppo.
-
NellaAWS IoT console, nella pagina Test, sottoscrivi l'argomento dei dati di output per visualizzare i messaggi di stato dal connettore. La funzione Lambda di esempio è longeva e inizia a inviare messaggi subito dopo la distribuzione del gruppo.
Al termine dei test, puoi impostare il ciclo di vita di Lambda su richiesta (o
"Pinned": false
nella CLI) e distribuire il gruppo. Ciò impedisce alla funzione di inviare messaggi.
Esempio
La funzione Lambda di esempio seguente invia un messaggio di input al connettore.
import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'iotanalytics/channels/my_channel/messages/put' def create_request_with_all_fields(): return { "request": { "message" : "{\"temp\":23.33}" }, "id" : "req_123" } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return
Limiti
Questo connettore è soggetto ai limiti descritti di seguito.
Tutti i limitiAWS SDK for Python (Boto3) imposti dall'AWS IoT Analytics
batch_put_message
azione. Tutte le quote imposte dall'AWS IoT Analytics BatchPutMessageAPI. Per ulteriori informazioni, consulta la sezione Service QuotasAWS IoT Analytics nella Riferimenti generali di AWS.
100.000 messaggi al secondo per canale.
100 messaggi per batch.
128 KB per messaggio.
Questa API usa i nomi di canale (non gli ARN del canale), per cui l'invio di dati in più regioni o canali tra più account non è supportato.
Tutte le quote imposte da AWS IoT Greengrass Core. Per ulteriori informazioni, consulta Service Quotas per la parteAWS IoT Greengrass principale della Riferimenti generali di AWS.
In particolare potrebbero essere applicate le seguenti quote:
La dimensione massima dei messaggi inviati da un dispositivo è 128 KB.
La dimensione massima della coda di messaggi nel router core di Greengrass è 2,5 MB.
La lunghezza massima di una stringa argomento è 256 byte di caratteri con codifica UTF-8.
Licenze
Il connettore IoT Analytics include i seguenti software/licenze di terze parti:
-
AWS SDK for Python (Boto3)
/Apache License 2.0 -
botocore
/Apache License 2.0 -
dateutil
/PSF License -
docutils
/BSD License, GNU General Public License (GPL), Python Software Foundation License, Public Domain -
jmespath
/MIT License -
s3transfer
/Apache License 2.0 -
urllib3
/MIT License
Questo connettore è rilasciato in base al contratto di licenza del software Greengrass Core
Changelog
La tabella che segue descrive le modifiche apportate a ogni versione del connettore.
Versione |
Modifiche |
---|---|
4 |
Aggiunge il |
3 |
È stato aggiornato il runtime Lambda a Python 3.7, che modifica i requisiti di runtime. |
2 |
Correggere per ridurre l'eccessiva registrazione di log. |
1 |
Versione iniziale. |
Un gruppo Greengrass può contenere una sola versione del connettore alla volta. Per informazioni sull'aggiornamento di una versione del connettore, consulta Aggiornamento delle versioni dei connettori.
Consulta anche
-
Integrazione con servizi e protocolli tramite i connettori Greengrass
-
Cos'è AWS IoT Analytics? nella Guida per l'utente di AWS IoT Analytics