Come creare una risorsa segreta (console) - 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à.

Come creare una risorsa segreta (console)

Questa funzionalità è disponibile per AWS IoT Greengrass Core v1.7 e versioni successive.

Questo tutorial mostra come utilizzare la AWS Management Console per aggiungere una risorsa segreta a un gruppo Greengrass. Una risorsa segreta è un riferimento a un segreto di AWS Secrets Manager. Per ulteriori informazioni, consulta Distribuzione dei segreti nel core AWS IoT Greengrass.

Sul dispositivo AWS IoT Greengrass principale, i connettori e le funzioni Lambda possono utilizzare la risorsa segreta per autenticarsi con servizi e applicazioni, senza password, token o altre credenziali di codifica.

In questo tutorial creerai innanzitutto un segreto nella console AWS Secrets Manager. Quindi, nella AWS IoT Greengrass console, aggiungi una risorsa segreta a un gruppo Greengrass dalla pagina Risorse del gruppo. Questa risorsa segreta fa riferimento al segreto di Secrets Manager. Successivamente, si collega la risorsa segreta a una funzione Lambda, che consente alla funzione di ottenere il valore del segreto locale.

Nota

In alternativa, la console consente di creare una risorsa segreta e segreta quando si configura un connettore o una funzione Lambda. È possibile eseguire questa operazione dalla pagina Configura parametri del connettore o dalla pagina Risorse della funzione Lambda.

Solo i connettori contenenti parametri per i segreti possono accedere ai segreti. Per un tutorial che mostra come il connettore Twilio Notifications utilizza un token di autenticazione memorizzato localmente, vedi. Nozioni di base sui connettori Greengrass (console)

Il tutorial include le seguenti fasi di alto livello:

Il completamento di questo tutorial richiede circa 20 minuti.

Prerequisiti

Per completare questo tutorial, è necessario quanto segue:

  • Un gruppo Greengrass e un core Greengrass (v1.7 o successivo). Per informazioni su come creare un gruppo e un core Greengrass, consulta Guida introduttiva con AWS IoT Greengrass. Nel tutorial Nozioni di base sono descritte anche le fasi per l'installazione del software AWS IoT Greengrass Core.

  • AWS IoT Greengrass deve essere configurato per supportare segreti locali. Per ulteriori informazioni, consulta Requisiti dei segreti.

    Nota

    Questo requisito include l'autorizzazione all'accesso ai segreti di Secrets Manager. Se utilizzi il ruolo di servizio Greengrass predefinito, Greengrass è autorizzato a ottenere i valori dei segreti con nomi che iniziano con greengrass-.

  • Per ottenere i valori dei segreti locali, le funzioni Lambda definite dall'utente devono AWS IoT Greengrass utilizzare Core SDK v1.3.0 o versione successiva.

Fase 1: Creare un segreto di Secrets Manager

In questa fase, utilizzerai la console AWS Secrets Manager per creare un segreto.

  1. Accedi alla console AWS Secrets Manager.

    Nota

    Per ulteriori informazioni su questo processo, consulta Fase 1: Creare e archiviare il segreto AWS Secrets Manager nella Guida per l'AWS Secrets Managerutente.

  2. Scegli Archivia un nuovo segreto.

  3. In Scegli il tipo di segreto, scegli Altro tipo di segreto.

  4. In Specify the key-value pairs to be stored for this secret (Specifica le coppie chiave-valore da archiviare per questo segreto):

    • In Chiave, inserire test.

    • In Valore, specifica abcdefghi.

  5. Mantieni aws/secretsmanager selezionato per la chiave di crittografia, quindi scegli Avanti.

    Nota

    Non ti viene addebitato alcun costo AWS KMS se utilizzi la chiave AWS gestita predefinita creata da Secrets Manager nel tuo account.

  6. In Secret name (Nome segreto), immetti greengrass-TestSecret, quindi seleziona Next (Avanti).

    Nota

    Per impostazione predefinita, il ruolo di servizio Greengrass consente di AWS IoT Greengrass ottenere il valore dei segreti con nomi che iniziano con greengrass -. Per ulteriori informazioni, consulta Requisiti dei segreti.

  7. Questo tutorial non richiede la rotazione, quindi scegli disabilita la rotazione automatica, quindi scegli Avanti.

  8. Nella pagina Review (Revisione), rivedi le impostazioni e quindi scegli Store (Archivia).

    Dovrai quindi creare una risorsa segreta nel gruppo Greengrass che faccia riferimento al segreto.

Fase 2: aggiunta di una risorsa segreta a un gruppo Greengrass

In questo passaggio, configurate una risorsa di gruppo che fa riferimento al segreto di Secrets Manager.

  1. Nel riquadro di navigazione della AWS IoT console, in Gestione, espandi i dispositivi Greengrass, quindi scegli Gruppi (V1).

  2. Scegli il gruppo a cui aggiungere la risorsa segreta.

  3. Nella pagina di configurazione del gruppo, scegli la scheda Risorse, quindi scorri verso il basso fino alla sezione Segreti. La sezione Segreti mostra le risorse segrete che appartengono al gruppo. È possibile aggiungere, modificare e rimuovere risorse segrete da questa sezione.

    Nota

    In alternativa, la console consente di creare una risorsa segreta e segreta quando si configura un connettore o una funzione Lambda. È possibile eseguire questa operazione dalla pagina Configura parametri del connettore o dalla pagina Risorse della funzione Lambda.

  4. Scegli Aggiungi nella sezione Segreti.

  5. Nella pagina Aggiungi una risorsa segreta, inserisci MyTestSecret il nome della risorsa.

  6. In Segreto, scegli greengrass-. TestSecret

  7. Nella sezione Seleziona etichette (opzionale), l'etichetta AWSCURRENT temporanea rappresenta la versione più recente del segreto. Questa etichetta è sempre inclusa in una risorsa segreta.

    Nota

    Questo tutorial richiede solo l' AWSCURRENT etichetta. Facoltativamente, puoi includere le etichette richieste dalla funzione o dal connettore Lambda.

  8. Scegliere Add resource (Aggiungi risorsa).

Fase 3: Creare un pacchetto di distribuzione della funzione Lambda

Per creare una funzione Lambda, devi prima creare un pacchetto di distribuzione della funzione Lambda che contenga il codice della funzione e le dipendenze. Le funzioni Greengrass Lambda richiedono il AWS IoT GreengrassCore SDK per attività come la comunicazione con i messaggi MQTT nell'ambiente principale e l'accesso ai segreti locali. Questo tutorial crea una funzione Python, quindi utilizzi la versione Python dell'SDK nel pacchetto di distribuzione.

Nota

Per ottenere i valori dei segreti locali, le funzioni Lambda definite dall'utente devono AWS IoT Greengrass utilizzare Core SDK v1.3.0 o versione successiva.

  1. Dalla pagina dei download di AWS IoT GreengrassCore SDK, scarica AWS IoT Greengrass Core SDK per Python sul tuo computer.

  2. Decomprimere il pacchetto scaricato per ottenere l'SDK. Il kit SDK è la cartella greengrasssdk.

  3. Salvare la seguente funzione del codice Python nel file locale secret_test.py.

    import greengrasssdk secrets_client = greengrasssdk.client("secretsmanager") iot_client = greengrasssdk.client("iot-data") secret_name = "greengrass-TestSecret" send_topic = "secrets/output" def function_handler(event, context): """ Gets a secret and publishes a message to indicate whether the secret was successfully retrieved. """ response = secrets_client.get_secret_value(SecretId=secret_name) secret_value = response.get("SecretString") message = ( f"Failed to retrieve secret {secret_name}." if secret_value is None else f"Successfully retrieved secret {secret_name}." ) iot_client.publish(topic=send_topic, payload=message) print("Published: " + message)

    La get_secret_value funzione supporta il nome o l'ARN del segreto di Secrets Manager per il SecretId valore. Questo esempio utilizza il nome segreto. Per questo segreto di esempio, AWS IoT Greengrass restituisce la coppia chiave-valore: {"test":"abcdefghi"}.

    Importante

    Assicurati che le funzioni Lambda definite dall'utente gestiscano i segreti in modo sicuro e non registrino alcun dato sensibile archiviato nel segreto. Per ulteriori informazioni, consulta Mitigare i rischi di registrazione e debug della funzione Lambda nella Guida per l'utente. AWS Secrets Manager Sebbene questa documentazione si riferisca specificamente alle funzioni di rotazione, la raccomandazione si applica anche alle funzioni Greengrass Lambda.

  4. Comprimere le voci seguenti nel file secret_test_python.zip. Durante la creazione del file ZIP, includi solo il codice e le dipendenze e non la cartella che li contiene.

    • secret_test.py. La logica dell'app.

    • greengrasssdk. Libreria richiesta per tutte le funzioni Lambda di Python Greengrass.

    Questo è il tuo pacchetto di implementazione della funzione Lambda.

Fase 4: Creazione di una funzione Lambda

In questo passaggio, si utilizza la AWS Lambda console per creare una funzione Lambda e configurarla per utilizzare il pacchetto di distribuzione. In seguito, pubblicherai una versione della funzione e creerai un alias.

  1. Innanzitutto, crea la funzione Lambda.

    1. Nella AWS Management Console, scegli Services (Servizi) e apri la console AWS Lambda.

    2. Scegli Crea funzione, quindi scegli Author da zero.

    3. Nella sezione Basic information (Informazioni di base), specifica i seguenti valori:

      • Nel campo Function name (Nome funzione), immettere SecretTest.

      • In Runtime, scegliere Python 3.7.

      • Per le autorizzazioni, mantieni l'impostazione predefinita. Questo crea un ruolo di esecuzione che concede le autorizzazioni Lambda di base. Questo ruolo non viene utilizzato da. AWS IoT Greengrass

    4. Nella parte inferiore della pagina, scegli Crea funzione.

  2. Quindi, registra il gestore e carica il pacchetto di distribuzione della funzione Lambda.

    1. Nella scheda Codice, in Codice sorgente, scegli Carica da. Dal menu a discesa, scegli un file.zip.

      Il menu a discesa Carica da con il file.zip evidenziato.
    2. Scegli Carica, quindi scegli il pacchetto di secret_test_python.zip distribuzione. Quindi, scegliere Save (Salva).

    3. Nella scheda Codice della funzione, in Impostazioni di runtime, scegli Modifica, quindi inserisci i seguenti valori.

      • In Runtime, scegliere Python 3.7.

      • In Handler (Gestore), immetti secret_test.function_handler

    4. Seleziona Salva.

      Nota

      Il pulsante Test sulla AWS Lambda console non funziona con questa funzione. Il AWS IoT Greengrass Core SDK non contiene moduli necessari per eseguire le funzioni Greengrass Lambda in modo indipendente nella console. AWS Lambda Questi moduli (ad esempio,greengrass_common) vengono forniti alle funzioni dopo essere stati distribuiti nel core Greengrass.

  3. Ora, pubblica la prima versione della tua funzione Lambda e crea un alias per la versione.

    Nota

    I gruppi Greengrass possono fare riferimento a una funzione Lambda tramite alias (consigliato) o per versione. L'utilizzo di un alias semplifica la gestione degli aggiornamenti del codice perché non è necessario modificare la tabella di sottoscrizione o la definizione del gruppo quando il codice della funzione viene aggiornato. Invece, è sufficiente indirizzare l'alias alla nuova versione della funzione.

    1. Nel menu Actions (Operazioni), seleziona Publish new version (Pubblica nuova versione).

    2. Per Version description (Descrizione versione), immettere First version, quindi scegliere Publish (Pubblica).

    3. Nella pagina di configurazione SecretTest: 1, dal menu Azioni, scegli Crea alias.

    4. Nella pagina Create a new alias (Crea un nuovo alias), utilizza i seguenti valori:

      • In Nome, inserisci GG_SecretTest.

      • In Version (Versione), selezionare 1.

      Nota

      AWS IoT Greengrassnon supporta gli alias Lambda per le versioni $LATEST.

    5. Seleziona Create (Crea).

Ora sei pronto per aggiungere la funzione Lambda al tuo gruppo Greengrass e allegare la risorsa segreta.

Fase 5: Aggiungere la funzione Lambda al gruppo Greengrass

In questo passaggio, aggiungi la funzione Lambda al gruppo Greengrass nella console. AWS IoT

  1. Nella pagina di configurazione del gruppo, scegli la scheda Funzioni Lambda.

  2. Nella sezione Funzioni My Lambda, scegli Aggiungi.

  3. Per la funzione Lambda, scegli. SecretTest

  4. Per la versione della funzione Lambda, scegli l'alias della versione che hai pubblicato.

Quindi, configura il ciclo di vita della funzione Lambda.

  1. Nella sezione di configurazione della funzione Lambda, apporta i seguenti aggiornamenti.

    Nota

    Ti consigliamo di eseguire la funzione Lambda senza containerizzazione a meno che il tuo business case non lo richieda. Ciò consente l'accesso alla GPU e alla fotocamera del dispositivo senza configurare le risorse del dispositivo. Se esegui senza containerizzazione, devi anche concedere l'accesso root alle tue funzioni LambdaAWS IoT Greengrass.

    1. Per eseguire senza containerizzazione:

    2. Per eseguire invece in modalità containerizzata:

      Nota

      Si sconsiglia l'esecuzione in modalità containerizzata a meno che il business case non lo richieda.

      • Per Utente e gruppo di sistema, scegli Usa i valori predefiniti del gruppo.

      • Per la containerizzazione delle funzioni Lambda, scegli Usa default di gruppo.

      • Per Memory limit (Limite memoria), immettere 1024 MB.

      • Per Timeout, immettere 10 seconds.

      • Per Pinned, scegli True.

        Per ulteriori informazioni, consulta Configurazione del ciclo di vita per le funzioni Greengrass Lambda.

      • In Parametri aggiuntivi, per Accesso in lettura alla directory /sys, scegli Abilitato.

  2. Scegli Aggiungi funzione Lambda.

Quindi, associa la risorsa segreta alla funzione.

Passaggio 6: collegare la risorsa segreta alla funzione Lambda

In questo passaggio, associ la risorsa segreta alla funzione Lambda nel tuo gruppo Greengrass. Ciò associa la risorsa alla funzione, che consente alla funzione di ottenere il valore del segreto locale.

  1. Nella pagina di configurazione del gruppo, scegli la scheda Funzioni Lambda.

  2. Scegli la SecretTestfunzione.

  3. Nella pagina dei dettagli della funzione, scegli Risorse.

  4. Scorri fino alla sezione Segreti e scegli Associa.

  5. Scegli MyTestSecret, quindi scegli Associa.

Fase 7: aggiunta di sottoscrizioni al gruppo Greengrass

In questo passaggio, aggiungi abbonamenti che consentono lo scambio di AWS IoT messaggi e la funzione Lambda. Un abbonamento consente a AWS IoT di chiamare la funzione e uno consente alla funzione di inviare dati di output a AWS IoT.

  1. Nella pagina di configurazione del gruppo, scegli la scheda Abbonamenti, quindi scegli Aggiungi abbonamento.

  2. Creare una sottoscrizione che consenta a AWS IoT di pubblicare i messaggi nella funzione.

    Nella pagina di configurazione del gruppo, scegli la scheda Abbonamenti, quindi scegli Aggiungi abbonamento.

  3. Nella pagina Crea un abbonamento, configura l'origine e la destinazione come segue:

    1. In Tipo di sorgente, scegli la funzione Lambda, quindi scegli IoT Cloud.

    2. In Tipo di destinazione, scegli Servizio, quindi scegli SecretTest.

    3. Nel filtro Argomentosecrets/input, inserisci, quindi scegli Crea abbonamento.

  4. Aggiungere un secondo abbonamento. Scegli la scheda Abbonamenti, scegli Aggiungi abbonamento e configura l'origine e la destinazione come segue:

    1. In Tipo di origine, scegli Servizi, quindi scegli SecretTest.

    2. Nel tipo di Target, scegli la funzione Lambda, quindi scegli IoT Cloud.

    3. Nel filtro Argomento, inseriscisecrets/output, quindi scegli Crea abbonamento.

Fase 8: distribuzione del gruppo Greengrass

Distribuire il gruppo al nuovo dispositivo core. Durante la distribuzione, AWS IoT Greengrass recupera il valore del segreto da Secrets Manager e crea una copia locale crittografata sul core.

  1. Assicurati che il AWS IoT Greengrass core sia in esecuzione. Esegui i seguenti comandi nel terminale di Raspberry Pi in base alle esigenze.

    1. Per controllare se il daemon è in esecuzione:

      ps aux | grep -E 'greengrass.*daemon'

      Se l'output contiene una voce root per /greengrass/ggc/packages/ggc-version/bin/daemon, allora il daemon è in esecuzione.

      Nota

      La versione nel percorso dipende dalla versione del software AWS IoT Greengrass Core installata sul dispositivo core.

    2. Per avviare il demone:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. Nella pagina di configurazione del gruppo, scegli Deploy.

    1. Nella scheda Funzioni Lambda, nella sezione Funzioni System Lambda, seleziona Rilevatore IP e scegli Modifica.

    2. Nella finestra di dialogo Modifica impostazioni del rilevatore IP, seleziona Rileva e sostituisci automaticamente gli endpoint del broker MQTT.

    3. Seleziona Salva.

      Questo consente ai dispositivi di acquisire automaticamente informazioni di base sulla connettività, come, ad esempio indirizzo IP, DNS e numero della porta. È consigliato il rilevamento automatico, ma AWS IoT Greengrass supporta anche endpoint specifici manualmente. Ti viene chiesto il metodo di individuazione solo la prima volta che il gruppo viene distribuito.

      Nota

      Se richiesto, concedi l'autorizzazione a creare il ruolo di servizio Greengrass e associarlo al Account AWS tuo ruolo attuale. Regione AWS Questo ruolo consente di accedere AWS IoT Greengrass alle tue risorse nei AWS servizi.

      Nella pagina Deployments (Distribuzioni) vengono visualizzati il timestamp della distribuzione, l'ID versione e lo stato. Una volta completata, lo stato visualizzato per la distribuzione dovrebbe essere Completato.

      Per la risoluzione dei problemi, consultare Risoluzione dei problemi relativi a AWS IoT Greengrass.

Test della funzione Lambda

  1. Nella home page della AWS IoT console, scegli Test.

  2. Per Iscriviti all'argomento, utilizza i seguenti valori, quindi scegli Iscriviti.

    Proprietà

    Value (Valore)

    Argomento sottoscrizione

    secrets/output

    Visualizzazione payload MQTT

    Visualizza i payload come stringhe

  3. Per Pubblica su argomento, utilizzate i seguenti valori, quindi scegliete Pubblica per richiamare la funzione.

    Proprietà

    Value (Valore)

    Argomento

    secrets/input

    Message

    Mantenere il messaggio predefinito. La pubblicazione di un messaggio richiama la funzione Lambda, ma la funzione in questo tutorial non elabora il corpo del messaggio.

    In caso di esito positivo, la funzione pubblica il messaggio "Success" ("Successo").

Consulta anche