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à.
Configurazioni di esportazione per supportateCloud AWSdestinazioni
Utilizzo di funzioni Lambda definite dall'utenteStreamManagerClient
nellaAWS IoT GreengrassUn SDK di base per interagire con stream manager. Quando una funzione Lambdacrea un flussooaggiorna un flusso, passa aMessageStreamDefinition
oggetto che rappresenta le proprietà del flusso, inclusa la definizione di esportazione. LaExportDefinition
object contiene le configurazioni di esportazione definite per lo stream. Stream Manager utilizza queste configurazioni di esportazione per determinare dove e come esportare lo stream.
È possibile definire zero o più configurazioni di esportazione in un flusso, incluse più configurazioni di esportazione per un singolo tipo di destinazione. Ad esempio, è possibile esportare un flusso in dueAWS IoT AnalyticsUn flusso di dati Kinesis.
In caso di tentativi di esportazione non riusciti, stream manager tenta continuamente di esportare i dati nelCloud AWSa intervalli fino a cinque minuti. Il numero di tentativi di ripetizione non presenta un limite massimo.
Nota
StreamManagerClient
fornisce anche una destinazione di destinazione che è possibile utilizzare per esportare i flussi in un server HTTP. Questo target è destinato esclusivamente a scopi di test. Non è stabile o supportato per l'uso in ambienti di produzione.
supportateCloud AWSdestinazioni
Sei responsabile per il mantenimento di questiCloud AWSrisorse AWS.
Canali AWS IoT Analytics
Stream Manager supporta le esportazioni automatiche inAWS IoT Analytics.AWS IoT Analyticsconsente di eseguire analisi avanzate sui dati per aiutare a prendere decisioni aziendali e migliorare i modelli di machine learning. Per ulteriori informazioni, consultaChe cos'èAWS IoT Analytics?nellaAWS IoT AnalyticsGuida per l’utente di.
NellaAWS IoT GreengrassCore SDK, le tue funzioni Lambda utilizzanoIoTAnalyticsConfig
per definire la configurazione di esportazione per questo tipo di destinazione. Per ulteriori informazioni, consulta la documentazione sugli SDK relativa alla tua lingua di destinazione:
-
IoT Analytics Config
SDK Python -
IoT Analytics Config
SDK Java -
IoT Analytics Config
SDK Node.js
Requisiti
Questa destinazione di esportazione presenta i seguenti requisiti:
-
Canali target inAWS IoT Analyticsdevono trovarsi nella stessaAccount AWSeRegione AWSnel ruolo del gruppo Greengrass.
-
LaRuolo del gruppo Greengrassdeve consentire il
iotanalytics:BatchPutMessage
autorizzazione per i canali di destinazione. Ad esempio:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iotanalytics:BatchPutMessage" ], "Resource": [ "arn:aws:iotanalytics:
region
:account-id
:channel/channel_1_name
", "arn:aws:iotanalytics:region
:account-id
:channel/channel_2_name
" ] } ] }Puoi concedere alle risorse un accesso granulare o condizionale, ad esempio, utilizzando un carattere jolly
*
schema di denominazione. Per ulteriori informazioni, consultaAggiunta e rimozione delle policy IAMnellaIAM User Guide.
Esportazione di inAWS IoT Analytics
Per creare un flusso che esporta inAWS IoT Analytics, le funzioni LambdaPer creare un flussocon una definizione di esportazione che include una o piùIoTAnalyticsConfig
oggetti. Questo oggetto definisce le impostazioni di esportazione, come il canale di destinazione, la dimensione del batch, l'intervallo batch e la priorità.
Quando le funzioni Lambda ricevono i dati dai dispositivi, essiAggiunta di messaggiche contengono un blob di dati per il flusso di destinazione.
Quindi, stream manager esporta i dati in base alle impostazioni batch e alla priorità definite nelle configurazioni di esportazione del flusso.
Amazon Kinesis
Stream manager supporta le esportazioni automatiche in Amazon Kinesis Data Streams. Kinesis Data Streams viene comunemente utilizzato per aggregare elevati volumi di dati e caricarli in un data warehouse o cluster di riduzione della mappa. Per ulteriori informazioni, consultaCos'è Amazon Kinesis Data Streams?nellaGuida per gli sviluppatori di Amazon Kinesis.
NellaAWS IoT GreengrassCore SDK, le tue funzioni Lambda utilizzanoKinesisConfig
per definire la configurazione di esportazione per questo tipo di destinazione. Per ulteriori informazioni, consulta la documentazione sugli SDK relativa alla tua lingua di destinazione:
-
Configurazione di kinesis
SDK Python -
Configurazione di kinesis
SDK Java -
Configurazione di kinesis
SDK Node.js
Requisiti
Questa destinazione di esportazione presenta i seguenti requisiti:
-
I flussi target in Kinesis Data Streams devono essere ugualiAccount AWSeRegione AWSnel ruolo del gruppo Greengrass.
-
LaRuolo del gruppo Greengrassdeve consentire il
kinesis:PutRecords
autorizzazione per indirizzare i flussi di dati. Ad esempio:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords" ], "Resource": [ "arn:aws:kinesis:
region
:account-id
:stream/stream_1_name
", "arn:aws:kinesis:region
:account-id
:stream/stream_2_name
" ] } ] }Puoi concedere alle risorse un accesso granulare o condizionale, ad esempio, utilizzando un carattere jolly
*
schema di denominazione. Per ulteriori informazioni, consultaAggiunta e rimozione delle policy IAMnellaIAM User Guide.
Esportare in Kinesis Data Streams
Per creare uno stream che esporta in Kinesis Data Streams, le funzioni LambdaPer creare un flussocon una definizione di esportazione che include una o piùKinesisConfig
oggetti. Questo oggetto definisce le impostazioni di esportazione, come il flusso di dati di destinazione, la dimensione del batch, l'intervallo batch e la priorità.
Quando le funzioni Lambda ricevono i dati dai dispositivi, essiAggiunta di messaggiche contengono un blob di dati per il flusso di destinazione. Quindi, stream manager esporta i dati in base alle impostazioni batch e alla priorità definite nelle configurazioni di esportazione del flusso.
Stream Manager genera un UUID casuale univoco come chiave di partizione per ogni record caricato su Amazon Kinesis.
AWS IoT SiteWiseproprietà degli asset
Stream Manager supporta le esportazioni automatiche inAWS IoT SiteWise.AWS IoT SiteWiseconsente di raccogliere, organizzare e analizzare i dati provenienti da apparecchiature industriali su larga scala. Per ulteriori informazioni, consultaChe cos'èAWS IoT SiteWise?nellaAWS IoT SiteWiseGuida per l’utente di.
NellaAWS IoT GreengrassCore SDK, le tue funzioni Lambda utilizzanoIoTSiteWiseConfig
per definire la configurazione di esportazione per questo tipo di destinazione. Per ulteriori informazioni, consulta la documentazione sugli SDK relativa alla tua lingua di destinazione:
-
IOT SiteWiseFig
SDK Python -
IOT SiteWiseFig
SDK Java -
IOT SiteWiseFig
SDK Node.js
Nota
AWSfornisce anche il SiteWise Connettore IoT, che è una soluzione preconfigurata che è possibile utilizzare con sorgenti OPC-UA.
Requisiti
Questa destinazione di esportazione presenta i seguenti requisiti:
-
Proprietà degli asset target inAWS IoT SiteWisedevono trovarsi nella stessaAccount AWSeRegione AWSnel ruolo del gruppo Greengrass.
Nota
Per l'elenco delle regioni cheAWS IoT SiteWisesupporti, vediAWS IoT SiteWiseEndpoint e quotenellaAWSRiferimenti generali.
-
LaRuolo del gruppo Greengrassdeve consentire il
iotsitewise:BatchPutAssetPropertyValue
autorizzazione per il targeting delle proprietà degli asset. Il criterio di esempio seguente utilizza iliotsitewise:assetHierarchyPath
per concedere agli utenti l'accesso a un asset root target e ai relativi figli. Puoi rimuovere ilCondition
dalla policy per consentire l'accesso a tutti i tuoiAWS IoT SiteWiserisorse o specifica ARN di singole attività.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*", "Condition": { "StringLike": { "iotsitewise:assetHierarchyPath": [ "/
root node asset ID
", "/root node asset ID
/*" ] } } } ] }Puoi concedere alle risorse un accesso granulare o condizionale, ad esempio, utilizzando un carattere jolly
*
schema di denominazione. Per ulteriori informazioni, consultaAggiunta e rimozione delle policy IAMnellaIAM User Guide.Per informazioni sulla sicurezza importanti, consulta BatchPutAssetPropertyValue autorizzazionenellaAWS IoT SiteWiseGuida per l’utente di.
Esportazione di inAWS IoT SiteWise
Per creare un flusso che esporta inAWS IoT SiteWise, le funzioni LambdaPer creare un flussocon una definizione di esportazione che include una o piùIoTSiteWiseConfig
oggetti. Questo oggetto definisce le impostazioni di esportazione, come la dimensione del batch, l'intervallo batch e la priorità.
Quando le funzioni Lambda ricevono i dati delle proprietà delle risorse dai dispositivi, aggiungono messaggi che contengono i dati al flusso di destinazione. I messaggi sono serializzati JSONPutAssetPropertyValueEntry
oggetti che contengono valori di proprietà per una o più proprietà degli asset. Per ulteriori informazioni, consultaAggiunta di un messaggioperAWS IoT SiteWiseEsportazione di destinazioni.
Nota
Quando si inviano i dati aAWS IoT SiteWise, i tuoi dati devono soddisfare i requisiti dellaBatchPutAssetPropertyValue
Operazione . Per ulteriori informazioni, consulta BatchPutAssetPropertyValue nella Documentazione di riferimento API AWS IoT SiteWise.
Quindi, stream manager esporta i dati in base alle impostazioni batch e alla priorità definite nelle configurazioni di esportazione del flusso.
È possibile regolare le impostazioni dello stream manager e la logica della funzione Lambda per progettare la strategia di esportazione. Ad esempio:
-
Per le esportazioni quasi in tempo reale, imposta impostazioni di intervallo e dimensioni del batch ridotte e aggiungi i dati allo stream quando vengono ricevuti.
-
Per ottimizzare il batch, mitigare i vincoli di larghezza di banda o ridurre al minimo i costi, le funzioni Lambda possono raggruppare timestamp-quality-value (TQV) punti dati ricevuti per una singola proprietà di asset prima di aggiungere i dati al flusso. Una strategia consiste nel batch di voci per un massimo di 10 diverse combinazioni di proprietà e asset, o alias di proprietà, in un messaggio anziché inviare più voci per la stessa proprietà. Ciò aiuta il gestore dello streaming a rimanere all'internoAWS IoT SiteWisecontingenti.
Oggetti Amazon S3
Stream manager supporta le esportazioni automatiche in Amazon S3. Puoi utilizzare Amazon S3 per archiviare e recuperare grandi quantità di dati. Per ulteriori informazioni, consultaChe cos'è Amazon S3?nellaGuida per sviluppatori di Amazon Simple Storage.
NellaAWS IoT GreengrassCore SDK, le tue funzioni Lambda utilizzanoS3ExportTaskExecutorConfig
per definire la configurazione di esportazione per questo tipo di destinazione. Per ulteriori informazioni, consulta la documentazione sugli SDK relativa alla tua lingua di destinazione:
-
S3 Export Task ExecutorConfig
SDK Python -
S3 Export Task ExecutorConfig
SDK Java -
S3 Export Task ExecutorConfig
SDK Node.js
Requisiti
Questa destinazione di esportazione presenta i seguenti requisiti:
-
I bucket Amazon S3 di destinazione devono essere ugualiAccount AWScome gruppo Greengrass.
-
Se il filecontainerizzazione predefinitaper il gruppo GreengrassContainer Greengrass, devi impostare ilSTREAM_MANAGER_READ_ONLY_DIRSparametro per utilizzare una directory del file di input che si trova sotto
/tmp
o non è sul file system principale. -
Se una funzione Lambda è in esecuzioneContainer Greengrassmodalità scrive i file di input nella directory del file di input, è necessario creare una risorsa del volume locale per la directory e montare la directory nel contenitore con autorizzazioni di scrittura. Ciò garantisce che i file siano scritti nel file system root e visibili all'esterno del contenitore. Per ulteriori informazioni, consulta la pagina Accedi alle risorse locali con funzioni e connettori Lambda .
-
LaRuolo del gruppo Greengrassdeve consentire le seguenti autorizzazioni per i bucket di destinazione. Ad esempio:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::
bucket-1-name
/*", "arn:aws:s3:::bucket-2-name
/*" ] } ] }Puoi concedere alle risorse un accesso granulare o condizionale, ad esempio, utilizzando un carattere jolly
*
schema di denominazione. Per ulteriori informazioni, consultaAggiunta e rimozione delle policy IAMnellaIAM User Guide.
Esportazione di in Amazon S3
Per creare uno stream che esporta in Amazon S3, le funzioni Lambda utilizzanoS3ExportTaskExecutorConfig
oggetto per configurare il criterio di esportazione. Il criterio definisce le impostazioni di esportazione, come la soglia di caricamento multiparte e la priorità. Per le esportazioni di Amazon S3, stream Manager carica i dati che legge dai file locali sul dispositivo principale. Per avviare un caricamento, le funzioni Lambda aggiungono un'attività di esportazione al flusso di destinazione. L'attività di esportazione contiene informazioni sul file di input e sull'oggetto Amazon S3 di destinazione. Stream Manager esegue le attività nella sequenza in cui vengono aggiunte allo stream.
Nota
Il bucket target deve esistere già nel tuoAccount AWS. Se un oggetto per la chiave specificata non esiste, stream manager crea l'oggetto per te.
Questo flusso di lavoro di alto livello è mostrato nel seguente diagramma.
Stream Manager utilizza la proprietà soglia di caricamento multiparte,dimensione minima della parteimpostazione e dimensione del file di input per determinare come caricare i dati. La soglia di caricamento in più parti deve essere maggiore o uguale alla dimensione minima della parte. Se si desidera caricare i dati in parallel, è possibile creare più flussi.
Le chiavi che specificano gli oggetti Amazon S3 di destinazione possono includere valideFormatter Java DateTimeFormatter!{timestamp:
segnaposto. Puoi utilizzare questi segnaposto con timestamp per partizionare i dati in Amazon S3 in base al momento in cui sono stati caricati i dati del file di input. Ad esempio, il seguente nome della chiave viene risolto in un valore comevalue
}my-key/2020/12/31/data.txt
.
my-key/!{timestamp:YYYY}/!{timestamp:MM}/!{timestamp:dd}/data.txt
Nota
Se si desidera monitorare lo stato di esportazione per un flusso, creare prima un flusso di stato e quindi configurare il flusso di esportazione per utilizzarlo. Per ulteriori informazioni, consulta la pagina Monitoraggio delle attività di .
Gestione dei dati di input
È possibile creare codice utilizzato dalle applicazioni IoT per gestire il ciclo di vita dei dati di input. Il flusso di lavoro di esempio seguente mostra come è possibile utilizzare le funzioni Lambda per gestire questi dati.
-
Un processo locale riceve i dati da dispositivi o periferiche e quindi scrive i dati in file in una directory del dispositivo principale. Questi sono i file di input per stream manager.
Nota
Per determinare se è necessario configurare l'accesso alla directory del file di input, vedere ilSTREAM_MANAGER_READ_ONLY_DIRSParametro .
Il processo in cui viene eseguito stream manager eredita tutte le autorizzazioni del file system dell'identità di accesso predefinitaper il gruppo. Il gestore di flussi deve essere autorizzato ad accedere ai file di input. Puoi utilizzare il plugin
chmod(1)
per modificare l'autorizzazione dei file, se necessario. -
Una funzione Lambda esegue la scansione della directory eAggiunta di un processo di esportazionenel flusso di destinazione quando viene creato un nuovo file. L'attività è un JSON serializzato
S3ExportTaskDefinition
oggetto che specifica l'URL del file di input, il bucket e la chiave Amazon S3 di destinazione e i metadati utente opzionali. -
Stream Manager legge il file di input ed esporta i dati in Amazon S3 nell'ordine delle attività aggiunte. Il bucket target deve esistere già nel tuoAccount AWS. Se un oggetto per la chiave specificata non esiste, stream manager crea l'oggetto per te.
-
La funzione Lambdalegge i messaggida un flusso di stato per monitorare lo stato di esportazione. Una volta completate le attività di esportazione, la funzione Lambda può eliminare i file di input corrispondenti. Per ulteriori informazioni, consulta la pagina Monitoraggio delle attività di .
Monitoraggio delle attività di
Puoi creare codice utilizzato dalle applicazioni IoT per monitorare lo stato delle esportazioni Amazon S3. Le funzioni Lambda devono creare un flusso di stato e quindi configurare il flusso di esportazione per scrivere gli aggiornamenti di stato nel flusso di stato. Un singolo flusso di stato può ricevere aggiornamenti di stato da più flussi esportati in Amazon S3.
Per prima cosa,Per creare un flussoda utilizzare come flusso di stato. È possibile configurare i criteri di dimensione e conservazione per lo stream per controllare la durata dei messaggi di stato. Ad esempio:
-
Imposta
Persistence
aMemory
se non desideri memorizzare i messaggi di stato. -
Imposta
StrategyOnFull
aOverwriteOldestData
in modo che i nuovi messaggi di stato non vengano persi.
Quindi, crea o aggiorna il flusso di esportazione per utilizzare il flusso di stato. In particolare, impostare la proprietà di configurazione dello stato del flussoS3ExportTaskExecutorConfig
Esportazione della configurazione. Ciò indica allo stream manager di scrivere messaggi di stato sulle attività di esportazione nel flusso di stato. NellaStatusConfig
object, specificare il nome del flusso di stato e il livello di verbosità. I seguenti valori supportati vanno da quelli meno dettagliati (ERROR
) al più prolisso (TRACE
). Il valore predefinito è INFO
.
-
ERROR
-
WARN
-
INFO
-
DEBUG
-
TRACE
Il flusso di lavoro di esempio seguente mostra come le funzioni Lambda potrebbero utilizzare un flusso di stato per monitorare lo stato dell'esportazione.
-
Come descritto nel flusso di lavoro precedente, una funzione LambdaAggiunta di un processo di esportazionein un flusso configurato per scrivere messaggi di stato sulle attività di esportazione in un flusso di stato. L'operazione di accodamento restituisce un numero di sequenza che rappresenta l'ID dell'attività.
-
Una funzione Lambdalegge i messaggiin sequenza dal flusso di stato, quindi filtra i messaggi in base al nome del flusso e all'ID attività o in base a una proprietà dell'attività di esportazione dal contesto del messaggio. Ad esempio, la funzione Lambda può filtrare in base all'URL del file di input dell'attività di esportazione, che è rappresentato dal
S3ExportTaskDefinition
oggetto nel contesto del messaggio.I seguenti codici di stato indicano che un'attività di esportazione ha raggiunto uno stato completato:
-
Success
. Il caricamento è stato completato. -
Failure
. Stream Manager ha riscontrato un errore, ad esempio il bucket specificato non esiste. Dopo aver risolto il problema, è possibile aggiungere nuovamente l'attività di esportazione allo stream. -
Canceled
. L'attività è stata interrotta perché il flusso o la definizione di esportazione è stata eliminata o time-to-live (TTL) periodo dell'attività scaduto.
Nota
L'attività potrebbe anche avere uno stato di
InProgress
oWarning
. Stream Manager emette avvisi quando un evento restituisce un errore che non influisce sull'esecuzione dell'attività. Ad esempio, la mancata pulizia di un caricamento parziale interrotto restituisce un avviso. -
-
Una volta completate le attività di esportazione, la funzione Lambda può eliminare i file di input corrispondenti.
L'esempio seguente mostra come una funzione Lambda potrebbe leggere ed elaborare i messaggi di stato.