Esegui AWS IoT Greengrass in un contenitore Docker con provisioning automatico delle risorse - AWS IoT Greengrass

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

Esegui AWS IoT Greengrass in un contenitore Docker con provisioning automatico delle risorse

Questo tutorial mostra come installare ed eseguire il software AWS IoT Greengrass Core in un contenitore Docker con AWS risorse assegnate automaticamente e strumenti di sviluppo locali. Puoi utilizzare questo ambiente di sviluppo per esplorare le AWS IoT Greengrass funzionalità di un contenitore Docker. Il software richiede AWS credenziali per fornire queste risorse e distribuire gli strumenti di sviluppo locali.

Se non è possibile fornire AWS le credenziali al contenitore, è possibile fornire le AWS risorse necessarie al funzionamento del dispositivo principale. Puoi anche distribuire gli strumenti di sviluppo su un dispositivo principale da utilizzare come dispositivo di sviluppo. Ciò consente di fornire meno autorizzazioni al dispositivo quando si esegue il contenitore. Per ulteriori informazioni, consulta Esegui AWS IoT Greengrass in un contenitore Docker con provisioning manuale delle risorse.

Prerequisiti

Per completare questo tutorial, è necessario quanto segue.

  • Un Account AWS. Se non lo hai, consultare Configura un Account AWS.

  • Un utente AWS IAM con le autorizzazioni per effettuare il provisioning delle risorse AWS IoT e IAM per un dispositivo core Greengrass. Il programma di installazione del software AWS IoT Greengrass Core utilizza AWS le tue credenziali per effettuare automaticamente il provisioning di queste risorse. Per informazioni sulla politica minima di IAM per il provisioning automatico delle risorse, consulta. Policy IAM minima per l'installatore per il provisioning delle risorse

  • Un'immagine AWS IoT Greengrass Docker. Puoi creare un'immagine dal AWS IoT Greengrass Dockerfile.

  • Il computer host su cui si esegue il contenitore Docker deve soddisfare i seguenti requisiti:

    • Un sistema operativo basato su Linux con una connessione Internet.

    • Docker Engine versione 18.09 o successiva.

    • (Facoltativo) Docker Compose versione 1.22 o successiva. Docker Compose è necessario solo se si desidera utilizzare la CLI Docker Compose per eseguire le immagini Docker.

Configurazione delle credenziali AWS

In questo passaggio, crei un file di credenziali sul computer host che contiene le tue credenziali di sicurezza. AWS Quando esegui l'immagine AWS IoT Greengrass Docker, devi montare la cartella che contiene questo file di credenziali /root/.aws/ nel contenitore Docker. Il AWS IoT Greengrass programma di installazione utilizza queste credenziali per fornire risorse nel tuo. Account AWS Per informazioni sulla politica minima di IAM richiesta dal programma di installazione per il provisioning automatico delle risorse, consulta. Policy IAM minima per l'installatore per il provisioning delle risorse

  1. Recuperate uno dei seguenti elementi.

  2. Crea una cartella in cui inserire il file delle credenziali.

    mkdir ./greengrass-v2-credentials
  3. Utilizzate un editor di testo per creare un file di configurazione denominato credentials nella ./greengrass-v2-credentials cartella.

    Ad esempio, è possibile eseguire il comando seguente per utilizzare GNU nano per creare il credentials file.

    nano ./greengrass-v2-credentials/credentials
  4. Aggiungi AWS le tue credenziali al credentials file nel seguente formato.

    [default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY aws_session_token = AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

    Includi aws_session_token solo per le credenziali temporanee.

Importante

Rimuovi il file delle credenziali dal computer host dopo aver avviato il AWS IoT Greengrass contenitore. Se non rimuovi il file delle credenziali, le tue AWS credenziali rimarranno montate all'interno del contenitore. Per ulteriori informazioni, consulta Esegui il software AWS IoT Greengrass Core in un contenitore.

Crea un file di ambiente

Questo tutorial utilizza un file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Puoi anche usare l'--envargomento -e or nel docker run comando per impostare le variabili di ambiente nel contenitore Docker oppure puoi impostare le variabili in un environment blocco del file. docker-compose.yml

  1. Usa un editor di testo per creare un file di ambiente denominato.env.

    Ad esempio, su un sistema basato su Linux, puoi eseguire il seguente comando per usare GNU nano per crearlo .env nella directory corrente.

    nano .env
  2. Copiate il seguente contenuto nel file.

    GGC_ROOT_PATH=/greengrass/v2 AWS_REGION=region PROVISION=true THING_NAME=MyGreengrassCore THING_GROUP_NAME=MyGreengrassCoreGroup TES_ROLE_NAME=GreengrassV2TokenExchangeRole TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias COMPONENT_DEFAULT_USER=ggc_user:ggc_group

    Quindi, sostituisci i seguenti valori.

    • /greengrass/v2. La cartella principale di Greengrass che si desidera utilizzare per l'installazione. Utilizzate la variabile di GGC_ROOT ambiente per impostare questo valore.

    • regione. Il Regione AWS luogo in cui hai creato le risorse.

    • MyGreengrassCore. Nome del nuovo oggetto AWS IoT. Se l'oggetto non esiste, il programma di installazione lo crea. Il programma di installazione scarica i certificati per autenticarsi come oggetto. AWS IoT

    • MyGreengrassCoreGroup. Il nome del gruppo di AWS IoT cose. Se il gruppo di oggetti non esiste, il programma di installazione lo crea e vi aggiunge l'oggetto. Se il gruppo di oggetti esiste e dispone di una distribuzione attiva, il dispositivo principale scarica ed esegue il software specificato dalla distribuzione.

    • GreenGrass TokenExchangeRole V2. Sostituisci con il nome del ruolo di scambio di token IAM che consente al dispositivo principale Greengrass di ottenere credenziali temporaneeAWS. Se il ruolo non esiste, il programma di installazione lo crea e crea e allega una policy denominata GreengrassV2 Access. TokenExchangeRole Per ulteriori informazioni, consulta Autorizza i dispositivi principali a interagire con i servizi AWS.

    • GreengrassCoreTokenExchangeRoleAlias. L'alias del ruolo di scambio di token. Se l'alias del ruolo non esiste, il programma di installazione lo crea e lo indirizza al ruolo di scambio di token IAM specificato. Per ulteriori informazioni, consulta la pagina

    Nota

    È possibile impostare la variabile di DEPLOY_DEV_TOOLS ambiente su true per distribuire il componente Greengrass CLI, che consente di sviluppare componenti personalizzati all'interno del contenitore Docker. Si consiglia di utilizzare questo componente solo in ambienti di sviluppo, non in ambienti di produzione. Questo componente fornisce l'accesso a informazioni e operazioni che in genere non sono necessarie in un ambiente di produzione. Segui il principio del privilegio minimo distribuendo questo componente solo sui dispositivi principali dove ne hai bisogno.

Esegui il software AWS IoT Greengrass Core in un contenitore

Questo tutorial mostra come avviare l'immagine Docker che hai creato in un contenitore Docker. Puoi utilizzare la CLI Docker o la CLI Docker Compose per AWS IoT Greengrass eseguire l'immagine del software Core in un contenitore Docker.

Docker
  1. Esegui il comando seguente per avviare il contenitore Docker.

    docker run --rm --init -it --name docker-image \ -v path/to/greengrass-v2-credentials:/root/.aws/:ro \ --env-file .env \ -p 8883 \ your-container-image:version

    Questo comando di esempio utilizza i seguenti argomenti per docker run:

    • --rm. Pulisce il contenitore quando esce.

    • --init. Utilizza un processo di inizializzazione nel contenitore.

      Nota

      L'--initargomento è necessario per chiudere il software AWS IoT Greengrass Core quando si arresta il contenitore Docker.

    • -it. (Facoltativo) Esegue il contenitore Docker in primo piano come processo interattivo. Puoi sostituirlo con l'-dargomento per eseguire invece il contenitore Docker in modalità distaccata. Per ulteriori informazioni, consulta Detached vs foreground nella documentazione Docker.

    • --name. Esegue un contenitore denominato aws-iot-greengrass

    • -v. Monta un volume nel contenitore Docker per rendere il file di configurazione e i file di certificato disponibili per l'AWS IoT Greengrassesecuzione all'interno del contenitore.

    • --env-file. (Facoltativo) Specifica il file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Questo argomento è richiesto solo se è stato creato un file di ambiente per impostare le variabili di ambiente. Se non hai creato un file di ambiente, puoi utilizzare --env gli argomenti per impostare le variabili di ambiente direttamente nel comando Docker run.

    • -p. (Facoltativo) Pubblica la porta container 8883 sulla macchina host. Questo argomento è necessario se si desidera connettersi e comunicare tramite MQTT perché AWS IoT Greengrass utilizza la porta 8883 per il traffico MQTT. Per aprire altre porte, utilizzate argomenti aggiuntivi. -p

    Nota

    Per eseguire il contenitore Docker con maggiore sicurezza, puoi utilizzare gli --cap-add argomenti --cap-drop e per abilitare selettivamente le funzionalità Linux per il tuo contenitore. Per ulteriori informazioni, consulta Privilegi di runtime e funzionalità Linux nella documentazione Docker.

  2. Rimuovi le credenziali dal dispositivo ./greengrass-v2-credentials host.

    rm -rf ./greengrass-v2-credentials
    Importante

    Stai rimuovendo queste credenziali perché forniscono ampie autorizzazioni di cui il dispositivo principale ha bisogno solo durante la configurazione. Se non rimuovi queste credenziali, i componenti Greengrass e gli altri processi in esecuzione nel contenitore possono accedervi. Se devi fornire AWS credenziali a un componente Greengrass, utilizza il servizio di scambio di token. Per ulteriori informazioni, consulta Interagisci con AWS i servizi.

Docker Compose
  1. Usa un editor di testo per creare un file Docker Compose denominato. docker-compose.yml

    Ad esempio, su un sistema basato su Linux, puoi eseguire il seguente comando per usare GNU nano per crearlo nella directory corrente. docker-compose.yml

    nano docker-compose.yml
    Nota

    È inoltre possibile scaricare e utilizzare la versione più recente del file Compose fornito AWS da. GitHub

  2. Aggiungi il seguente contenuto al file Compose. Il file si presenta in maniera simile al seguente frammento: Sostituisci docker-image con il nome della tua immagine Docker.

    version: '3.7' services: greengrass: init: true container_name: aws-iot-greengrass image: docker-image volumes: - ./greengrass-v2-credentials:/root/.aws/:ro env_file: .env ports: - "8883:8883"

    I seguenti parametri in questo file Compose di esempio sono facoltativi:

    • ports—Pubblica le porte del contenitore 8883 sul computer host. Questo parametro è necessario se si desidera connettersi e comunicare tramite MQTT perché AWS IoT Greengrass utilizza la porta 8883 per il traffico MQTT.

    • env_file: specifica il file di ambiente per impostare le variabili di ambiente che verranno passate al programma di installazione del software AWS IoT Greengrass Core all'interno del contenitore Docker. Questo parametro è richiesto solo se è stato creato un file di ambiente per impostare le variabili di ambiente. Se non avete creato un file di ambiente, potete utilizzare il parametro environment per impostare le variabili direttamente nel file Compose.

    Nota

    Per eseguire il contenitore Docker con maggiore sicurezza, puoi utilizzare cap_drop e cap_add nel file Compose per abilitare selettivamente le funzionalità Linux per il tuo contenitore. Per ulteriori informazioni, consulta Privilegi di runtime e funzionalità Linux nella documentazione Docker.

  3. Esegui il comando seguente per avviare il contenitore Docker.

    docker-compose -f docker-compose.yml up
  4. Rimuovi le credenziali dal ./greengrass-v2-credentials dispositivo host.

    rm -rf ./greengrass-v2-credentials
    Importante

    Stai rimuovendo queste credenziali perché forniscono ampie autorizzazioni di cui il dispositivo principale ha bisogno solo durante la configurazione. Se non rimuovi queste credenziali, i componenti Greengrass e gli altri processi in esecuzione nel contenitore possono accedervi. Se devi fornire AWS credenziali a un componente Greengrass, utilizza il servizio di scambio di token. Per ulteriori informazioni, consulta Interagisci con AWS i servizi.

Passaggi successivi

AWS IoT GreengrassIl software principale è ora in esecuzione in un contenitore Docker. Esegui il comando seguente per recuperare l'ID del contenitore attualmente in esecuzione.

docker ps

È quindi possibile eseguire il comando seguente per accedere al contenitore ed esplorare il software AWS IoT Greengrass Core in esecuzione all'interno del contenitore.

docker exec -it container-id /bin/bash

Per informazioni sulla creazione di un componente semplice, consulta Fase 4: Sviluppa e testa un componente sul tuo dispositivo in Tutorial: Nozioni di base su AWS IoT Greengrass V2

Nota

Quando esegui comandi all'interno del contenitore Docker, tali comandi non vengono registrati nei log Docker. docker exec Per registrare i comandi nei log Docker, collega una shell interattiva al contenitore Docker. Per ulteriori informazioni, consulta Collega una shell interattiva al contenitore Docker.

Il file di registro AWS IoT Greengrass Core viene chiamato greengrass.log e si trova in. /greengrass/v2/logs Nella stessa directory si trovano anche i file di registro dei componenti. Per copiare i log di Greengrass in una directory temporanea sull'host, esegui il seguente comando:

docker cp container-id:/greengrass/v2/logs /tmp/logs

Se desideri mantenere i log dopo l'uscita o la rimozione di un contenitore, ti consigliamo di collegare solo la /greengrass/v2/logs directory alla directory dei log temporanei sull'host invece di montare l'intera directory Greengrass. Per ulteriori informazioni, consulta Mantieni i log Greengrass all'esterno del contenitore Docker.

Per fermare un contenitore Docker in esecuzione, esegui o. AWS IoT Greengrass docker stop docker-compose -f docker-compose.yml stop Questa azione invia SIGTERM al processo Greengrass e chiude tutti i processi associati che sono stati avviati nel contenitore. Il contenitore Docker viene inizializzato con l'docker-initeseguibile come processo PID 1, il che aiuta a rimuovere eventuali processi zombie rimanenti. Per ulteriori informazioni, consulta Specificare un processo di inizializzazione nella documentazione di Docker.

Per informazioni sulla risoluzione dei problemi relativi all'esecuzione AWS IoT Greengrass in un contenitore Docker, consulta. Risoluzione dei problemi di AWS IoT Greengrass in un container Docker