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 di machine learning dalle funzioni Lambda
Le funzioni Lambda definite dall'utente possono accedere alle risorse di machine learning per eseguire inferenze locali sul core. AWS IoT Greengrass Una risorsa di machine learning è costituita dal modello con training e da altri artefatti che vengono scaricati nel dispositivo core.
Per consentire a una funzione Lambda di accedere a una risorsa di machine learning centrale, è necessario collegare la risorsa alla funzione Lambda e definire le autorizzazioni di accesso. La modalità di containerizzazione della funzione Lambda affiliata (o allegata) determina come eseguire questa operazione.
Autorizzazioni di accesso per risorse di Machine Learning
A partire da AWS IoT Greengrass Core v1.10.0, puoi definire un proprietario della risorsa per una risorsa di machine learning. Il proprietario della risorsa rappresenta il gruppo OS e le autorizzazioni utilizzate da AWS IoT Greengrass per scaricare gli artefatti della risorsa. Se il proprietario di una risorsa non è definito, gli artefatti della risorsa scaricati sono accessibili solo al root.
Se le funzioni Lambda non containerizzate accedono a una risorsa di machine learning, è necessario definire un proprietario della risorsa perché non esiste alcun controllo delle autorizzazioni da parte del contenitore. Le funzioni Lambda non containerizzate possono ereditare le autorizzazioni del proprietario della risorsa e utilizzarle per accedere alla risorsa.
Se solo le funzioni Lambda containerizzate accedono alla risorsa, ti consigliamo di utilizzare le autorizzazioni a livello di funzione invece di definire un proprietario della risorsa.
Proprietà del proprietario delle risorse
Un proprietario delle risorse specifica un proprietario del gruppo e le autorizzazioni del proprietario del gruppo.
-
Proprietario del gruppo. L'ID del gruppo (GID) di un gruppo OS Linux esistente sul dispositivo core. Le autorizzazioni del gruppo vengono aggiunte al processo Lambda. In particolare, il GID viene aggiunto agli ID di gruppo supplementari della funzione Lambda.
Se una funzione Lambda del gruppo Greengrass è configurata per essere eseguita come lo stesso gruppo di sistemi operativi del proprietario della risorsa per una risorsa di machine learning, la risorsa deve essere collegata alla funzione Lambda. In caso contrario, la distribuzione non riesce perché questa configurazione fornisce autorizzazioni implicite che la funzione Lambda può utilizzare per accedere alla risorsa senza autorizzazione. AWS IoT Greengrass Il controllo di convalida della distribuzione viene saltato se la funzione Lambda viene eseguita come root (UID=0).
Ti consigliamo di utilizzare un gruppo di sistemi operativi non utilizzato da altre risorse, funzioni Lambda o file sul core Greengrass. L'utilizzo di un gruppo di sistemi operativi condiviso offre alle funzioni Lambda collegate più autorizzazioni di accesso di quelle necessarie. Se si utilizza un gruppo di sistemi operativi condiviso, è necessario allegare anche una funzione Lambda associata a tutte le risorse di machine learning che utilizzano il gruppo di sistemi operativi condiviso. In caso contrario, la distribuzione non riesce.
-
Autorizzazioni del proprietario del gruppo. L'autorizzazione di sola lettura o lettura e scrittura da aggiungere al processo Lambda.
Le funzioni Lambda non containerizzate devono ereditare queste autorizzazioni di accesso alla risorsa. Le funzioni Lambda containerizzate possono ereditare queste autorizzazioni a livello di risorsa o definire autorizzazioni a livello di funzione. Se definiscono autorizzazioni a livello di funzione, le autorizzazioni devono essere identiche o più restrittive rispetto alle autorizzazioni a livello di risorsa.
Nella tabella seguente vengono illustrate le configurazioni di autorizzazione di accesso supportate.
Nota
Quando si utilizza l'AWS IoT GreengrassAPI per configurare le funzioni e le risorse Lambda, è richiesta anche la ResourceId
proprietà a livello di funzione. La ResourceId
proprietà collega la risorsa di machine learning alla funzione Lambda.
Definizione delle autorizzazioni di accesso per le funzioni Lambda (console)
Nella AWS IoT console, definisci le autorizzazioni di accesso quando configuri una risorsa di machine learning o ne alleghi una a una funzione Lambda.
- Funzioni Lambda containerizzate
-
Se alla risorsa di machine learning sono collegate solo funzioni Lambda containerizzate:
-
Scegli Nessun gruppo di sistema come proprietario della risorsa di machine learning. Questa è l'impostazione consigliata quando solo le funzioni Lambda containerizzate accedono alla risorsa di machine learning. Altrimenti, potresti concedere alle funzioni Lambda allegate più autorizzazioni di accesso di quelle necessarie.
-
- Funzioni Lambda non containerizzate (richiede GGC v1.10 o versione successiva)
-
Se alla risorsa di machine learning sono collegate funzioni Lambda non containerizzate:
-
Specificate il System group ID (GID) da utilizzare come proprietario della risorsa di machine learning. Scegli Specificare il gruppo di sistema e le autorizzazioni e inserisci il GID. È possibile utilizzare il
getent group
comando sul dispositivo principale per cercare l'ID di un gruppo di sistema. -
Scegli Accesso in sola lettura o Accesso in lettura e scrittura per le autorizzazioni del gruppo di sistema.
-
Definizione delle autorizzazioni di accesso per le funzioni Lambda (API)
Nell'AWS IoT GreengrassAPI, definisci le autorizzazioni per le risorse di machine learning nella ResourceAccessPolicy
proprietà della funzione Lambda o nella proprietà OwnerSetting
della risorsa.
- Funzioni Lambda containerizzate
-
Se alla risorsa di machine learning sono collegate solo funzioni Lambda containerizzate:
-
Per le funzioni Lambda containerizzate, definisci le autorizzazioni di accesso nella proprietà della
Permission
proprietà.ResourceAccessPolicies
Per esempio:"Functions": [ { "Id": "my-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:
function-name
:alias-or-version
", "FunctionConfiguration": { "Environment": { "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id", "Permission": "ro-or-rw
" } ] }, "MemorySize": 512, "Pinned": true, "Timeout": 5 } } ] -
Per le risorse di machine learning, ometti la proprietà
OwnerSetting
. Per esempio:"Resources": [ { "Id": "my-resource-id", "Name": "my-resource-name", "ResourceDataContainer": { "S3MachineLearningModelResourceData": { "DestinationPath": "/
local-destination-path
", "S3Uri": "s3://uri-to-resource-package
" } } } ]Questa è la configurazione consigliata quando solo le funzioni Lambda containerizzate accedono alla risorsa di machine learning. Altrimenti, potresti concedere alle funzioni Lambda allegate più autorizzazioni di accesso di quelle necessarie.
-
- Funzioni Lambda non containerizzate (richiede GGC v1.10 o versione successiva)
-
Se alla risorsa di machine learning sono collegate funzioni Lambda non containerizzate:
-
Per le funzioni Lambda non containerizzate, ometti la proprietà in.
Permission
ResourceAccessPolicies
Questa configurazione è obbligatoria e consente alla funzione di ereditare l'autorizzazione a livello di risorsa. Per esempio:"Functions": [ { "Id": "my-non-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:
function-name
:alias-or-version
", "FunctionConfiguration": { "Environment": { "Execution": { "IsolationMode": "NoContainer", }, "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id" } ] }, "Pinned": true, "Timeout": 5 } } ] -
Per le funzioni Lambda containerizzate che accedono anche alla risorsa di machine learning, ometti la
Permission
proprietàResourceAccessPolicies
o definisci un'autorizzazione uguale o più restrittiva dell'autorizzazione a livello di risorsa. Per esempio:"Functions": [ { "Id": "my-containerized-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:
function-name
:alias-or-version
", "FunctionConfiguration": { "Environment": { "ResourceAccessPolicies": [ { "ResourceId": "my-resource-id", "Permission": "ro-or-rw
" // Optional, but cannot exceed the GroupPermission defined for the resource. } ] }, "MemorySize": 512, "Pinned": true, "Timeout": 5 } } ] -
Per le risorse di machine learning, definisci la proprietà
OwnerSetting
, inclusi il figlioGroupOwner
e le proprietàGroupPermission
. Per esempio:"Resources": [ { "Id": "my-resource-id", "Name": "my-resource-name", "ResourceDataContainer": { "S3MachineLearningModelResourceData": { "DestinationPath": "/
local-destination-path
", "S3Uri": "s3://uri-to-resource-package
", "OwnerSetting": { "GroupOwner": "os-group-id
", "GroupPermission": "ro-or-rw
" } } } } ]
-
Accesso alle risorse di machine learning dal codice della funzione Lambda
Le funzioni Lambda definite dall'utente utilizzano interfacce del sistema operativo specifiche della piattaforma per accedere alle risorse di machine learning su un dispositivo principale.
L'implementazione del caricamento del modello dipende dalla libreria ML.
Risoluzione dei problemi
Utilizza le informazioni seguenti per risolvere problemi relativi all'accesso alle risorse di machine learning.
Argomenti
- InvalidMLModelOwner : GroupOwnerSetting è fornito nella risorsa del modello ML, ma non è presente o non è presente GroupOwner GroupPermission
- NoContainer la funzione non può configurare l'autorizzazione quando si collegano risorse di Machine Learning. <function-arn>si riferisce alla risorsa Machine Learning <resource-id>con autorizzazione <ro/rw> nella politica di accesso alle risorse.
- La funzione <function-arn>si riferisce alla risorsa di Machine Learning <resource-id>con autorizzazione mancante in entrambe ResourceAccessPolicy le risorse OwnerSetting.
- La funzione <function-arn>si riferisce alla risorsa Machine Learning <resource-id>con autorizzazione\ "rw\», mentre l'impostazione del proprietario della risorsa consente GroupPermission solo\ "ro\».
- NoContainer La funzione <function-arn>si riferisce alle risorse del percorso di destinazione annidato.
- Lambda <function-arn> ottiene l'accesso alla risorsa <resource-id> condividendo lo stesso ID del proprietario del gruppo
InvalidMLModelOwner : GroupOwnerSetting è fornito nella risorsa del modello ML, ma non è presente o non è presente GroupOwner GroupPermission
Soluzione: viene visualizzato questo errore se una risorsa di machine learning contiene l'ResourceDownloadOwnerSettingoggetto ma il requisito GroupOwner
o la GroupPermission
proprietà non sono definiti. Per risolvere questo problema, definisci la proprietà mancante.
NoContainer la funzione non può configurare l'autorizzazione quando si collegano risorse di Machine Learning. <function-arn>si riferisce alla risorsa Machine Learning <resource-id>con autorizzazione <ro/rw> nella politica di accesso alle risorse.
Soluzione: viene visualizzato questo errore se una funzione Lambda non containerizzata specifica autorizzazioni a livello di funzione per una risorsa di machine learning. Le funzioni non containerizzate devono ereditare le autorizzazioni dalle autorizzazioni del proprietario della risorsa definite nella risorsa di machine learning. Per risolvere questo problema, scegli di ereditare le autorizzazioni del proprietario della risorsa (console) o rimuovere le autorizzazioni dalla politica di accesso alle risorse (API) della funzione Lambda.
La funzione <function-arn>si riferisce alla risorsa di Machine Learning <resource-id>con autorizzazione mancante in entrambe ResourceAccessPolicy le risorse OwnerSetting.
Soluzione: viene visualizzato questo errore se le autorizzazioni per la risorsa di machine learning non sono configurate per la funzione Lambda o la risorsa allegata. Per risolvere questo problema, configura le autorizzazioni nella ResourceAccessPolicyproprietà per la funzione Lambda o nella proprietà per OwnerSettingla risorsa.
La funzione <function-arn>si riferisce alla risorsa Machine Learning <resource-id>con autorizzazione\ "rw\», mentre l'impostazione del proprietario della risorsa consente GroupPermission solo\ "ro\».
Soluzione: viene visualizzato questo errore se le autorizzazioni di accesso definite per la funzione Lambda allegata superano le autorizzazioni del proprietario della risorsa definite per la risorsa di machine learning. Per risolvere questo problema, imposta autorizzazioni più restrittive per la funzione Lambda o autorizzazioni meno restrittive per il proprietario della risorsa.
NoContainer La funzione <function-arn>si riferisce alle risorse del percorso di destinazione annidato.
Soluzione: viene visualizzato questo errore se più risorse di machine learning collegate a una funzione Lambda non containerizzata utilizzano lo stesso percorso di destinazione o un percorso di destinazione annidato. Per risolvere questo problema, specifica percorsi di destinazione separati per le risorse.
Lambda <function-arn> ottiene l'accesso alla risorsa <resource-id> condividendo lo stesso ID del proprietario del gruppo
Soluzione: viene visualizzato questo errore runtime.log
se viene specificato lo stesso gruppo di sistema operativo come identità Esegui come identità della funzione Lambda e proprietario della risorsa per una risorsa di machine learning, ma la risorsa non è associata alla funzione Lambda. Questa configurazione fornisce alla funzione Lambda autorizzazioni implicite che può utilizzare per accedere alla risorsa senza autorizzazione. AWS IoT Greengrass
Per risolvere questo problema, usa un gruppo di sistemi operativi diverso per una delle proprietà o collega la risorsa di machine learning alla funzione Lambda.