Accedi alle risorse locali con funzioni e connettori Lambda - AWS IoT Greengrass

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à.

Accedi alle risorse locali con funzioni e connettori Lambda

Questa funzionalità è disponibile perAWS IoT Greengrass Core v1.3 e versioni successive.

Con AWS IoT Greengrass, puoi creare funzioni AWS Lambda e configurare connettori nel cloud e distribuirli a dispositivi core per l'esecuzione locale. Sui core Greengrass che eseguono Linux, queste funzioni e connettori Lambda distribuiti localmente possono accedere alle risorse locali che sono fisicamente presenti sul dispositivo principale di Greengrass. Ad esempio, per comunicare con dispositivi collegati tramite Modbus o CANbus, è possibile abilitare la funzione Lambda per accedere alla porta seriale del dispositivo principale. Per configurare l'accesso sicuro alle risorse locali, è necessario garantire la sicurezza dell'hardware fisico e del sistema operativo del dispositivo core Greengrass.

Per iniziare l'accesso alle risorse locali, consulta i seguenti tutorial:

Tipi di risorse supportati

È possibile accedere a due tipi di risorse locali: risorse di volume e risorse di dispositivo.

Risorse volume

I file o le directory per il file system radice (fatta eccezione in /sys, /dev o /var). Eccone alcuni:

  • Cartelle o file utilizzati per leggere o scrivere informazioni tra le funzioni Lambda di Greengrass (ad esempio/usr/lib/python2.x/site-packages/local).

  • Cartelle o file sotto il file system /proc dell'host (ad esempio, /proc/net o /proc/stat). Supportato nella versione 1.6 o successiva. Per i requisiti aggiuntivi, consultare Risorse di volume nella directory /proc.

Suggerimento

Per configurare le directory /var, /var/run e /var/lib come risorse di volume, monta prima la directory in una cartella diversa e poi configura la cartella come risorsa di volume.

Quando configuri le risorse di volume, specifichi un percorso origine e un percorso di destinazione. Il percorso di origine è il percorso assoluto della risorsa nell'host. Il percorso di destinazione è il percorso assoluto della risorsa all'interno dell'ambiente dello spazio dei nomi Lambda. Questo è il contenitore in cui viene eseguita una funzione o un connettore Lambda di Greengrass. Le eventuali modifiche apportate al percorso di destinazione vengono applicate al percorso di origine nel file system host.

Nota

I file nel percorso di destinazione sono visibili solo nello spazio dei nomi Lambda. Non è possibile visualizzarli in un normale spazio dei nomi Linux.

Risorse di dispositivo

I file in /dev. Solo i dispositivi a caratteri o a blocchi in /dev sono consentiti per le risorse del dispositivo. Eccone alcuni:

  • Porte seriali utilizzate per comunicare con i dispositivi connessi tramite le porte seriali (ad esempio /dev/ttyS0, /dev/ttyS1).

  • USB utilizzato per connettere periferiche USB (ad esempio, /dev/ttyUSB0 o /dev/bus/usb).

  • GPIO utilizzati per sensori e attuatori tramite GPIO (ad esempio, /dev/gpiomem).

  • GPU utilizzati per accelerare il processo di Machine Learning utilizzando GPU integrate (ad esempio, /dev/nvidia0).

  • Fotocamere utilizzate per acquisire immagini e video (ad esempio, /dev/video0).

Nota

/dev/shm è un'eccezione. Può essere configurato esclusivamente come risorsa di volume. Alle risorse in /dev/shm deve essere concessa l'autorizzazione rw.

AWS IoT Greengrass supporta anche i tipi di risorse utilizzate per eseguire l'inferenza di Machine Learning. Per ulteriori informazioni, consulta Esecuzione dell'inferenza di Machine Learning.

Requisiti

I seguenti requisiti si applicano alla configurazione dell'accesso sicuro alle risorse locali:

  • È necessario utilizzareAWS IoT Greengrass Core Software v1.3 o versione successiva. Per creare risorse per la directory /proc dell'host, è necessario utilizzare la versione 1.6 o successiva.

  • La risorsa locale (inclusi i driver e le librerie necessarie) deve essere installata correttamente sul dispositivo core di Greengrass ed essere disponibile in modo coerente durante l'uso.

  • L'operazione desiderata della risorsa e l'accesso alla risorsa non devono richiedere privilegi root.

  • Sono disponibili solo le autorizzazioni read o read and write. Le funzioni Lambda non sono in grado di eseguire operazioni privilegiate sulle risorse.

  • È necessario fornire il percorso completo della risorsa locale sul sistema operativo del dispositivo core di Greengrass.

  • Un nome o ID di risorsa deve avere un massimo di 128 caratteri e deve utilizzare il modello [a-zA-Z0-9:_-]+.

Risorse di volume nella directory /proc

Le seguenti considerazioni si applicano alle risorse di volume che si trovano nella directory /proc dell'host.

  • È necessario utilizzareAWS IoT Greengrass Core Software v1.6 o versione successiva.

  • È possibile consentire l'accesso in sola lettura per le funzioni Lambda, ma non l'accesso in lettura-scrittura. Tale livello di accesso è gestito da AWS IoT Greengrass.

  • Potrebbe anche essere necessario concedere autorizzazioni di gruppo del sistema operativo per abilitare l'accesso in lettura nel file system. Ad esempio, supponiamo che la directory o il file sorgente abbiano un'autorizzazione per i file 660, indicando che solo il proprietario o un utente del gruppo hanno accesso in lettura (e scrittura). In questo caso, è necessario aggiungere le autorizzazioni del proprietario del gruppo di sistema operativo alla risorsa. Per ulteriori informazioni, consulta Autorizzazione di accesso ai file dell'owner del gruppo.

  • L'ambiente host e lo spazio dei nomi Lambda contengono entrambi una directory /proc, quindi assicuratevi di evitare conflitti di denominazione quando specificate il percorso di destinazione. Ad esempio, se /proc è il percorso di origine, è possibile specificare /host-proc come percorso di destinazione (o qualsiasi altro nome di percorso diverso da "/proc").

Autorizzazione di accesso ai file dell'owner del gruppo

Un processo di funzioneAWS IoT Greengrass Lambda normalmente viene eseguito comeggc_user eggc_group. Tuttavia, puoi concedere autorizzazioni di accesso ai file aggiuntive al processo della funzione Lambda nella definizione della risorsa locale, come segue:

  • Per aggiungere le autorizzazioni del gruppo Linux proprietario della risorsa, utilizzate ilGroupOwnerSetting#AutoAddGroupOwner parametro o Aggiungi automaticamente le autorizzazioni del file system del gruppo di sistema che possiede l'opzione della console delle risorse.

  • Per aggiungere le autorizzazioni di un gruppo Linux diverso, usa ilGroupOwnerSetting#GroupOwner parametro o l'opzione Specifica un altro gruppo di sistema per aggiungere le autorizzazioni del file system nell'opzione della console. Il valore GroupOwner viene ignorato se GroupOwnerSetting#AutoAddGroupOwner è "true".

Un processo funzionaleAWS IoT Greengrass Lambda eredita tutte le autorizzazioni delggc_user file system e del gruppo Linux (se aggiunto).ggc_group Affinché la funzione Lambda possa accedere a una risorsa, il processo della funzione Lambda deve disporre delle autorizzazioni richieste per la risorsa. È possibile utilizzare il comando chmod(1) per modificare l'autorizzazione della risorsa, se necessario.

Consulta anche