Connettore di distribuzione dell'applicazione Docker - 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à.

Connettore di distribuzione dell'applicazione Docker

Il connettore di distribuzione delle applicazioni Greengrass Docker semplifica l'esecuzione delle immagini Docker su un core. AWS IoT Greengrass Il connettore utilizza Docker Compose per avviare un'applicazione Docker multi-container da un file docker-compose.yml. In particolare, il connettore esegue i comandi docker-compose per gestire container Docker su un singolo dispositivo core. Per ulteriori informazioni, consulta Overview of Docker Compose nella documentazione di Docker. Il connettore può accedere alle immagini Docker archiviate nei registri di container Docker, come Amazon Elastic Container Registry (Amazon ECR), Docker Hub e registri affidabili Docker privati.

Dopo aver distribuito il gruppo Greengrass, il connettore recupera le immagini più recenti e avvia i contenitori Docker. Esegue il comando and. docker-compose pull docker-compose up Quindi, il connettore pubblica lo stato del comando in un argomento MQTT di output. Inoltre, registra le informazioni di stato relative all'esecuzione dei container Docker. In questo modo è possibile monitorare i log delle applicazioni in Amazon CloudWatch. Per ulteriori informazioni, consulta Monitoraggio con i log AWS IoT Greengrass. Il connettore avvia inoltre container Docker ad ogni riavvio del daemon Greengrass. Il numero di container Docker che possono essere eseguiti sul core dipende dall'hardware in uso.

I container Docker vengono eseguiti all'esterno del dominio Greengrass sul dispositivo core, pertanto non possano accedere alla comunicazione tra processi (IPC) del core. Tuttavia, è possibile configurare alcuni canali di comunicazione con componenti Greengrass, come le funzioni Lambda locali. Per ulteriori informazioni, consulta Comunicazione con i container Docker.

Puoi utilizzare il connettore per scenari come l'hosting di un server Web o di un server MySQL sul dispositivo core. I servizi locali nelle applicazioni Docker possono comunicare tra loro, con altri processi nell'ambiente locale e con i servizi cloud. Ad esempio, puoi eseguire un server Web sul core che invia le richieste dalle funzioni Lambda a un servizio Web nel cloud.

Questo connettore viene eseguito in modalità di isolamento Nessun container, quindi è possibile distribuirlo in un gruppo Greengrass che viene eseguito senza la containerizzazione di Greengrass.

Questo connettore ha le seguenti versioni.

Versione

ARN

7

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/7

6

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/6

5

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/5

4

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/4

3

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/3

2

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/2

1

arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/1

Per informazioni sulle modifiche di ogni versione, consulta Changelog.

Requisiti

Questo connettore presenta i seguenti requisiti:

  • AWS IoT GreengrassSoftware principale v1.10 o successivo.

    Nota

    Questo connettore non è supportato nelle distribuzioni. OpenWrt

  • Python versione 3.7 o 3.8 installata sul dispositivo principale e aggiunta alla variabile di ambiente PATH.

    Nota

    Per usare Python 3.8, esegui il seguente comando per creare un collegamento simbolico dalla cartella di installazione predefinita di Python 3.7 ai binari Python 3.8 installati.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Questo configura il dispositivo in modo che soddisfi il requisito Python per AWS IoT Greengrass.

  • Un minimo di 36 MB di RAM sul core Greengrass per consentire al connettore per monitorare i container Docker in esecuzione. Il requisito di memoria totale dipende dal numero di container Docker in esecuzione sul core.

  • Docker Engine v1.1.9.1 o versione successiva installato sul core Greengrass. La versione 19.0.3 è l'ultima versione verificata per il funzionamento con il connettore.

    L'eseguibile docker deve trovarsi nella directory /usr/bin o /usr/local/bin.

    Importante

    Ti consigliamo di installare un archivio delle credenziali per proteggere le copie locali delle credenziali Docker. Per ulteriori informazioni, consulta Note sulla sicurezza.

    Per informazioni sull'installazione di Docker su distribuzioni Amazon Linux, consulta Docker basics for Amazon ECS nella Amazon Elastic Container Service Developer Guide.

  • Docker Compose installato sul core Greengrass. L'eseguibile docker-compose deve trovarsi nella directory /usr/bin o /usr/local/bin.

    Le seguenti versioni di Docker Compose sono state verificate per il funzionamento con il connettore.

    Versione connettore

    Versione Docker Compose verificata

    7

    1.25.4

    6

    1.25.4

    5

    1.25.4

    4

    1.25.4

    3

    1.25.4

    2

    1.25.1

    1

    1.24.1

  • Un singolo file Docker Compose (ad esempio,docker-compose.yml), archiviato in Amazon Simple Storage Service (Amazon S3). Il formato deve essere compatibile con la versione di Docker Compose installata sul core. È opportuno testare il file prima di utilizzarlo sul core. Se modifichi il file dopo la distribuzione del gruppo Greengrass, devi ridistribuire il gruppo per aggiornare la copia locale sul core.

  • Un utente Linux che dispone dell'autorizzazione per chiamare il daemon Docker locale e scrivere nella directory che archivia la copia locale del file Compose. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core.

  • Il ruolo del gruppo Greengrass configurato per consentire l'operazione s3:GetObject sul bucket S3 che contiene il file Compose. Questa autorizzazione è mostrata nel seguente esempio di politica IAM.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccessToComposeFileS3Bucket", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Effect": "Allow", "Resource": "arn:aws:s3:::bucket-name/*" } ] }
    Nota

    Se il tuo bucket S3 è abilitato al controllo delle versioni, allora il ruolo deve essere configurato anche per consentire l'azione. s3:GetObjectVersion Per ulteriori informazioni, consulta Using versioning nella Amazon Simple Storage Service User Guide.

    Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta Gestione del ruolo del gruppo Greengrass (console) o Gestione del ruolo del gruppo Greengrass (CLI).

  • Se il file Docker Compose fa riferimento a un'immagine Docker archiviata in Amazon ECR, il ruolo del gruppo Greengrass è configurato per consentire quanto segue:

    • ecr:GetDownloadUrlForLayere ecr:BatchGetImage azioni sui tuoi repository Amazon ECR che contengono le immagini Docker.

    • Operazione ecr:GetAuthorizationToken sulle risorse.

    I repository devono trovarsi nello stesso Account AWS e Regione AWS nel connettore.

    Importante

    Le autorizzazioni nel ruolo di gruppo possono essere assunte da tutte le funzioni e i connettori Lambda del gruppo Greengrass. Per ulteriori informazioni, consulta Note sulla sicurezza.

    Queste autorizzazioni vengono mostrate nella policy di esempio riportata di seguito.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGetEcrRepositories", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": [ "arn:aws:ecr:region:account-id:repository/repository-name" ] }, { "Sid": "AllowGetEcrAuthToken", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

    Per ulteriori informazioni, consulta gli esempi di policy relative ai repository di Amazon ECR nella Amazon ECR User Guide.

    Per il requisito del ruolo di gruppo, è necessario configurare il ruolo in modo da concedere le autorizzazioni necessarie e assicurarsi che il ruolo sia stato aggiunto al gruppo. Per ulteriori informazioni, consulta Gestione del ruolo del gruppo Greengrass (console) o Gestione del ruolo del gruppo Greengrass (CLI).

  • Se il file di Docker Compose fa riferimento a un'immagine Docker di Marketplace AWS, anche il connettore dispone dei seguenti requisiti:

  • Se il tuo file Docker Compose fa riferimento a un'immagine Docker da archivi privati in registri diversi da Amazon ECR, come Docker Hub, il connettore ha anche i seguenti requisiti:

  • Il daemon Docker deve essere in esecuzione quando si distribuisce un gruppo Greengrass contenente questo connettore.

Accesso alle immagini Docker da repository privati

Se utilizzi le credenziali per accedere alle immagini Docker, il connettore deve poter accedere ad esse. La modalità utilizzata dipende dalla posizione dell'immagine Docker.

Per le immagini Docker archiviate in Amazon ECR, concedi l'autorizzazione a ottenere il token di autorizzazione nel ruolo del gruppo Greengrass. Per ulteriori informazioni, consulta Requisiti.

Per le immagini Docker archiviate in altri repository privati o registri, è necessario creare un segreto AWS Secrets Manager per archiviare le informazioni di accesso. Ciò include le immagini Docker a cui hai effettuato la sottoscrizione in Marketplace AWS. Crea un segreto per ogni repository. Se aggiorni i tuoi segreti in Secrets Manager, le modifiche si propagano al core la prossima volta che distribuisci il gruppo.

Nota

Secrets Manager è un servizio che puoi utilizzare per archiviare e gestire in modo sicuro credenziali, chiavi e altri segreti in. Cloud AWS Per ulteriori informazioni, consulta Che cos'è AWS Secrets Manager? nella Guida per l'utente di AWS Secrets Manager.

Ogni segreto deve contenere le seguenti chiavi:

Chiave

Valore

username

Il nome utente utilizzato per accedere al repository o al registro.

password

La password utilizzata per accedere al repository o al registro.

registryUrl

L'endpoint del registro. Questo deve corrispondere all'URL del registro corrispondente nel file Compose.

Nota

Per consentire a AWS IoT Greengrass di accedere a un segreto per impostazione predefinita, il nome del segreto deve iniziare con greengrass-. In caso contrario, il ruolo del servizio Greengrass deve concedere l'accesso. Per ulteriori informazioni, consulta Consentire a AWS IoT Greengrass di ottenere i valori segreti.

Per ottenere le informazioni di accesso per le immagini Docker da Marketplace AWS
  1. Ottieni la password per le immagini Docker Marketplace AWS utilizzando il comando. aws ecr get-login-password Per ulteriori informazioni, consulta la sezione get-login-password nella Documentazione di riferimento della AWS CLI.

    aws ecr get-login-password
  2. Recupera l'URL del registro per l'immagine Docker. Apri il Marketplace AWS sito Web e apri la pagina di lancio del prodotto container. In Immagini del contenitore, scegli Visualizza i dettagli dell'immagine del contenitore per individuare il nome utente e l'URL del registro.

Utilizza il nome utente, la password e l'URL del registro recuperati per creare un segreto per ogni Marketplace AWS registro che memorizza le immagini Docker a cui si fa riferimento nel file Compose.

Per creare segreti (console)

Nella console AWS Secrets Manager, scegli Other type of secrets (Altro tipo di segreti). In Specify the key-value pairs to be stored for this secret (Specifica le coppie chiave-valore da archiviare per questo segreto), aggiungi righe per username, password e registryUrl. Per ulteriori informazioni, consulta Creazione di un segreto di base nella Guida per l'utente. AWS Secrets Manager

Creazione di un segreto con nome utente, password e chiavi registryUrl.
Per creare segreti (CLI)

InAWS CLI, utilizzare il create-secret comando Secrets Manager, come illustrato nell'esempio seguente. Per ulteriori informazioni, vedere create-secret nel AWS CLICommand Reference.

aws secretsmanager create-secret --name greengrass-MySecret --secret-string [{"username":"Mary_Major"},{"password":"abc123xyz456"},{"registryUrl":"https://docker.io"}]
Importante

È responsabilità dell'utente proteggere la directory DockerComposeFileDestinationPath che archivia il file di Docker Compose e le credenziali per le immagini Docker di repository privati. Per ulteriori informazioni, consulta Note sulla sicurezza.

Parametri

Questo connettore fornisce i seguenti parametri:

Version 7
DockerComposeFileS3Bucket

Il nome del bucket S3 che contiene il file di Docker Compose. Quando crei il bucket, assicurati di seguire le regole per i nomi dei bucket descritte nella Amazon Simple Storage Service User Guide.

Nome visualizzato nella AWS IoT console: file Docker Compose in S3

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

La chiave oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Chiave oggetto e metadati nella Guida per l'utente di Amazon Simple Storage Service.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido .+

DockerComposeFileS3Version

La versione dell'oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Using versioning nella Amazon Simple Storage Service User Guide.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: false

Tipo: string

Schema valido .+

DockerComposeFileDestinationPath

Il percorso assoluto della directory locale utilizzata per archiviare una copia del file di Docker Compose. Deve essere una directory esistente. L'utente specificato per DockerUserId deve disporre dell'autorizzazione per creare un file in questa directory. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core AWS IoT Greengrass.

Importante

Questa directory archivia il file di Docker Compose e le credenziali per le immagini Docker di repository privati. È responsabilità dell'utente proteggere questa directory. Per ulteriori informazioni, consulta Note sulla sicurezza.

Nome visualizzato nella AWS IoT console: percorso della directory per il file Compose locale

Obbligatorio: true

Tipo: string

Schema valido \/.*\/?

Esempio: /home/username/myCompose

DockerUserId

L'UID dell'utente Linux con cui viene eseguito il connettore. Questo utente deve appartenere al gruppo Linux docker sul dispositivo core e disporre delle autorizzazioni in scrittura per la directory DockerComposeFileDestinationPath. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core.

Nota

L'esecuzione come root deve essere utilizzata solo quando strettamente necessario. Se specifichi l'utente root, devi consentire alle funzioni Lambda di essere eseguite come root sul AWS IoT Greengrass core. Per ulteriori informazioni, consulta Esecuzione di una funzione Lambda come utente root.

Nome visualizzato nella AWS IoT console: ID utente Docker

Obbligatorio: false

Tipo: string

Schema valido: ^[0-9]{1,5}$

AWSSecretsArnList

Gli Amazon Resource Name (ARN) dei segreti in AWS Secrets Manager che contengono le informazioni di accesso utilizzate per accedere alle immagini Docker nei repository privati. Per ulteriori informazioni, consulta Accesso alle immagini Docker da repository privati.

Nome visualizzato nella AWS IoT console: Credenziali per archivi privati

Obbligatorio: false. Questo parametro è obbligatorio per accedere alle immagini Docker archiviate nei repository privati.

Tipo: di array string

Schema valido: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

La frequenza (in secondi) di registrazione delle informazioni sullo stato relative ai container Docker in esecuzione sul core. Il valore predefinito è 300 secondi (5 minuti).

Nome visualizzato nella AWS IoT console: frequenza di registrazione

Obbligatorio: false

Tipo: string

Schema valido: ^[1-9]{1}[0-9]{0,3}$

ForceDeploy

Indica se forzare la distribuzione di Docker se fallisce a causa della pulizia impropria dell'ultima distribuzione. Il valore predefinito è False.

Nome visualizzato nella AWS IoT console: Force deployment

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

DockerPullBeforeUp

Indica se il deployer deve essere eseguito docker-compose pull prima di eseguire un docker-compose up determinato pull-down-up comportamento. Il valore predefinito è True.

Nome visualizzato nella AWS IoT console: Docker Pull Before Up

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

StopContainersOnNewDeployment

Indica se il connettore deve interrompere i contenitori docker gestiti da Docker Deployer quando GGC viene interrotto (GGC si interrompe quando viene distribuito un nuovo gruppo o il kernel viene spento). Il valore predefinito è True.

Nome visualizzato nella console: Docker stop in caso di nuova distribuzione AWS IoT

Nota

Consigliamo di mantenere questo parametro impostato sul True valore predefinito. Il parametro che False fa sì che il contenitore Docker continui a funzionare anche dopo l'interruzione del AWS IoT Greengrass core o l'avvio di una nuova distribuzione. Se imposti questo parametro suFalse, devi assicurarti che i contenitori Docker vengano mantenuti come necessario in caso di modifica o aggiunta del nome del docker-compose servizio.

Per ulteriori informazioni, consulta la documentazione del file di docker-compose composizione.

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

DockerOfflineMode

Indica se utilizzare il file Docker Compose esistente all'AWS IoT Greengrassavvio offline. Il valore predefinito è False.

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

Version 6
DockerComposeFileS3Bucket

Il nome del bucket S3 che contiene il file di Docker Compose. Quando crei il bucket, assicurati di seguire le regole per i nomi dei bucket descritte nella Amazon Simple Storage Service User Guide.

Nome visualizzato nella AWS IoT console: file Docker Compose in S3

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

La chiave oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Chiave oggetto e metadati nella Guida per l'utente di Amazon Simple Storage Service.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido .+

DockerComposeFileS3Version

La versione dell'oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Using versioning nella Amazon Simple Storage Service User Guide.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: false

Tipo: string

Schema valido .+

DockerComposeFileDestinationPath

Il percorso assoluto della directory locale utilizzata per archiviare una copia del file di Docker Compose. Deve essere una directory esistente. L'utente specificato per DockerUserId deve disporre dell'autorizzazione per creare un file in questa directory. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core AWS IoT Greengrass.

Importante

Questa directory archivia il file di Docker Compose e le credenziali per le immagini Docker di repository privati. È responsabilità dell'utente proteggere questa directory. Per ulteriori informazioni, consulta Note sulla sicurezza.

Nome visualizzato nella AWS IoT console: percorso della directory per il file Compose locale

Obbligatorio: true

Tipo: string

Schema valido \/.*\/?

Esempio: /home/username/myCompose

DockerUserId

L'UID dell'utente Linux con cui viene eseguito il connettore. Questo utente deve appartenere al gruppo Linux docker sul dispositivo core e disporre delle autorizzazioni in scrittura per la directory DockerComposeFileDestinationPath. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core.

Nota

L'esecuzione come root deve essere utilizzata solo quando strettamente necessario. Se specifichi l'utente root, devi consentire alle funzioni Lambda di essere eseguite come root sul AWS IoT Greengrass core. Per ulteriori informazioni, consulta Esecuzione di una funzione Lambda come utente root.

Nome visualizzato nella AWS IoT console: ID utente Docker

Obbligatorio: false

Tipo: string

Schema valido: ^[0-9]{1,5}$

AWSSecretsArnList

Gli Amazon Resource Name (ARN) dei segreti in AWS Secrets Manager che contengono le informazioni di accesso utilizzate per accedere alle immagini Docker nei repository privati. Per ulteriori informazioni, consulta Accesso alle immagini Docker da repository privati.

Nome visualizzato nella AWS IoT console: Credenziali per archivi privati

Obbligatorio: false. Questo parametro è obbligatorio per accedere alle immagini Docker archiviate nei repository privati.

Tipo: di array string

Schema valido: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

La frequenza (in secondi) di registrazione delle informazioni sullo stato relative ai container Docker in esecuzione sul core. Il valore predefinito è 300 secondi (5 minuti).

Nome visualizzato nella AWS IoT console: frequenza di registrazione

Obbligatorio: false

Tipo: string

Schema valido: ^[1-9]{1}[0-9]{0,3}$

ForceDeploy

Indica se forzare la distribuzione di Docker se fallisce a causa della pulizia impropria dell'ultima distribuzione. Il valore predefinito è False.

Nome visualizzato nella AWS IoT console: Force deployment

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

DockerPullBeforeUp

Indica se il deployer deve essere eseguito docker-compose pull prima di eseguire un docker-compose up determinato pull-down-up comportamento. Il valore predefinito è True.

Nome visualizzato nella AWS IoT console: Docker Pull Before Up

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

StopContainersOnNewDeployment

Indica se il connettore deve interrompere i contenitori docker gestiti da Docker Deployer quando GGC viene interrotto (quando viene effettuata una nuova distribuzione di gruppo o il kernel viene spento). Il valore predefinito è True.

Nome visualizzato nella console: Docker stop in caso di nuova distribuzione AWS IoT

Nota

Consigliamo di mantenere questo parametro impostato sul True valore predefinito. Il parametro che False fa sì che il contenitore Docker continui a funzionare anche dopo l'interruzione del AWS IoT Greengrass core o l'avvio di una nuova distribuzione. Se imposti questo parametro suFalse, devi assicurarti che i contenitori Docker vengano mantenuti come necessario in caso di modifica o aggiunta del nome del docker-compose servizio.

Per ulteriori informazioni, consulta la documentazione del file di docker-compose composizione.

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

Version 5
DockerComposeFileS3Bucket

Il nome del bucket S3 che contiene il file di Docker Compose. Quando crei il bucket, assicurati di seguire le regole per i nomi dei bucket descritte nella Amazon Simple Storage Service User Guide.

Nome visualizzato nella AWS IoT console: file Docker Compose in S3

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

La chiave oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Chiave oggetto e metadati nella Guida per l'utente di Amazon Simple Storage Service.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido .+

DockerComposeFileS3Version

La versione dell'oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Using versioning nella Amazon Simple Storage Service User Guide.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: false

Tipo: string

Schema valido .+

DockerComposeFileDestinationPath

Il percorso assoluto della directory locale utilizzata per archiviare una copia del file di Docker Compose. Deve essere una directory esistente. L'utente specificato per DockerUserId deve disporre dell'autorizzazione per creare un file in questa directory. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core AWS IoT Greengrass.

Importante

Questa directory archivia il file di Docker Compose e le credenziali per le immagini Docker di repository privati. È responsabilità dell'utente proteggere questa directory. Per ulteriori informazioni, consulta Note sulla sicurezza.

Nome visualizzato nella AWS IoT console: percorso della directory per il file Compose locale

Obbligatorio: true

Tipo: string

Schema valido \/.*\/?

Esempio: /home/username/myCompose

DockerUserId

L'UID dell'utente Linux con cui viene eseguito il connettore. Questo utente deve appartenere al gruppo Linux docker sul dispositivo core e disporre delle autorizzazioni in scrittura per la directory DockerComposeFileDestinationPath. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core.

Nota

L'esecuzione come root deve essere utilizzata solo quando strettamente necessario. Se specifichi l'utente root, devi consentire alle funzioni Lambda di essere eseguite come root sul AWS IoT Greengrass core. Per ulteriori informazioni, consulta Esecuzione di una funzione Lambda come utente root.

Nome visualizzato nella AWS IoT console: ID utente Docker

Obbligatorio: false

Tipo: string

Schema valido: ^[0-9]{1,5}$

AWSSecretsArnList

Gli Amazon Resource Name (ARN) dei segreti in AWS Secrets Manager che contengono le informazioni di accesso utilizzate per accedere alle immagini Docker nei repository privati. Per ulteriori informazioni, consulta Accesso alle immagini Docker da repository privati.

Nome visualizzato nella AWS IoT console: Credenziali per archivi privati

Obbligatorio: false. Questo parametro è obbligatorio per accedere alle immagini Docker archiviate nei repository privati.

Tipo: di array string

Schema valido: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

La frequenza (in secondi) di registrazione delle informazioni sullo stato relative ai container Docker in esecuzione sul core. Il valore predefinito è 300 secondi (5 minuti).

Nome visualizzato nella AWS IoT console: frequenza di registrazione

Obbligatorio: false

Tipo: string

Schema valido: ^[1-9]{1}[0-9]{0,3}$

ForceDeploy

Indica se forzare la distribuzione di Docker se fallisce a causa della pulizia impropria dell'ultima distribuzione. Il valore predefinito è False.

Nome visualizzato nella AWS IoT console: Force deployment

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

DockerPullBeforeUp

Indica se il deployer deve essere eseguito docker-compose pull prima di eseguire un docker-compose up determinato pull-down-up comportamento. Il valore predefinito è True.

Nome visualizzato nella AWS IoT console: Docker Pull Before Up

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

Versions 2 - 4
DockerComposeFileS3Bucket

Il nome del bucket S3 che contiene il file di Docker Compose. Quando crei il bucket, assicurati di seguire le regole per i nomi dei bucket descritte nella Amazon Simple Storage Service User Guide.

Nome visualizzato nella AWS IoT console: file Docker Compose in S3

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

La chiave oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Chiave oggetto e metadati nella Guida per l'utente di Amazon Simple Storage Service.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido .+

DockerComposeFileS3Version

La versione dell'oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Using versioning nella Amazon Simple Storage Service User Guide.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: false

Tipo: string

Schema valido .+

DockerComposeFileDestinationPath

Il percorso assoluto della directory locale utilizzata per archiviare una copia del file di Docker Compose. Deve essere una directory esistente. L'utente specificato per DockerUserId deve disporre dell'autorizzazione per creare un file in questa directory. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core AWS IoT Greengrass.

Importante

Questa directory archivia il file di Docker Compose e le credenziali per le immagini Docker di repository privati. È responsabilità dell'utente proteggere questa directory. Per ulteriori informazioni, consulta Note sulla sicurezza.

Nome visualizzato nella AWS IoT console: percorso della directory per il file Compose locale

Obbligatorio: true

Tipo: string

Schema valido \/.*\/?

Esempio: /home/username/myCompose

DockerUserId

L'UID dell'utente Linux con cui viene eseguito il connettore. Questo utente deve appartenere al gruppo Linux docker sul dispositivo core e disporre delle autorizzazioni in scrittura per la directory DockerComposeFileDestinationPath. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core.

Nota

L'esecuzione come root deve essere utilizzata solo quando strettamente necessario. Se specifichi l'utente root, devi consentire alle funzioni Lambda di essere eseguite come root sul AWS IoT Greengrass core. Per ulteriori informazioni, consulta Esecuzione di una funzione Lambda come utente root.

Nome visualizzato nella AWS IoT console: ID utente Docker

Obbligatorio: false

Tipo: string

Schema valido: ^[0-9]{1,5}$

AWSSecretsArnList

Gli Amazon Resource Name (ARN) dei segreti in AWS Secrets Manager che contengono le informazioni di accesso utilizzate per accedere alle immagini Docker nei repository privati. Per ulteriori informazioni, consulta Accesso alle immagini Docker da repository privati.

Nome visualizzato nella AWS IoT console: Credenziali per archivi privati

Obbligatorio: false. Questo parametro è obbligatorio per accedere alle immagini Docker archiviate nei repository privati.

Tipo: di array string

Schema valido: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

La frequenza (in secondi) di registrazione delle informazioni sullo stato relative ai container Docker in esecuzione sul core. Il valore predefinito è 300 secondi (5 minuti).

Nome visualizzato nella AWS IoT console: frequenza di registrazione

Obbligatorio: false

Tipo: string

Schema valido: ^[1-9]{1}[0-9]{0,3}$

ForceDeploy

Indica se forzare la distribuzione di Docker se fallisce a causa della pulizia impropria dell'ultima distribuzione. Il valore predefinito è False.

Nome visualizzato nella AWS IoT console: Force deployment

Obbligatorio: false

Tipo: string

Schema valido: ^(true|false)$

Version 1
DockerComposeFileS3Bucket

Il nome del bucket S3 che contiene il file di Docker Compose. Quando crei il bucket, assicurati di seguire le regole per i nomi dei bucket descritte nella Amazon Simple Storage Service User Guide.

Nome visualizzato nella AWS IoT console: file Docker Compose in S3

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido [a-zA-Z0-9\\-\\.]{3,63}

DockerComposeFileS3Key

La chiave oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Chiave oggetto e metadati nella Guida per l'utente di Amazon Simple Storage Service.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: true

Tipo: string

Schema valido .+

DockerComposeFileS3Version

La versione dell'oggetto per il tuo file Docker Compose in Amazon S3. Per ulteriori informazioni, incluse le linee guida per la denominazione delle chiavi degli oggetti, consulta Using versioning nella Amazon Simple Storage Service User Guide.

Nota

Nella console, la proprietà Docker Compose file in S3 (File di Docker Compose in S3) combina i parametri DockerComposeFileS3Bucket, DockerComposeFileS3Key e DockerComposeFileS3Version.

Obbligatorio: false

Tipo: string

Schema valido .+

DockerComposeFileDestinationPath

Il percorso assoluto della directory locale utilizzata per archiviare una copia del file di Docker Compose. Deve essere una directory esistente. L'utente specificato per DockerUserId deve disporre dell'autorizzazione per creare un file in questa directory. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core AWS IoT Greengrass.

Importante

Questa directory archivia il file di Docker Compose e le credenziali per le immagini Docker di repository privati. È responsabilità dell'utente proteggere questa directory. Per ulteriori informazioni, consulta Note sulla sicurezza.

Nome visualizzato nella AWS IoT console: percorso della directory per il file Compose locale

Obbligatorio: true

Tipo: string

Schema valido \/.*\/?

Esempio: /home/username/myCompose

DockerUserId

L'UID dell'utente Linux con cui viene eseguito il connettore. Questo utente deve appartenere al gruppo Linux docker sul dispositivo core e disporre delle autorizzazioni in scrittura per la directory DockerComposeFileDestinationPath. Per ulteriori informazioni, consulta Configurazione dell'utente Docker sul core.

Nota

L'esecuzione come root deve essere utilizzata solo quando strettamente necessario. Se specifichi l'utente root, devi consentire alle funzioni Lambda di essere eseguite come root sul AWS IoT Greengrass core. Per ulteriori informazioni, consulta Esecuzione di una funzione Lambda come utente root.

Nome visualizzato nella AWS IoT console: ID utente Docker

Obbligatorio: false

Tipo: string

Schema valido: ^[0-9]{1,5}$

AWSSecretsArnList

Gli Amazon Resource Name (ARN) dei segreti in AWS Secrets Manager che contengono le informazioni di accesso utilizzate per accedere alle immagini Docker nei repository privati. Per ulteriori informazioni, consulta Accesso alle immagini Docker da repository privati.

Nome visualizzato nella AWS IoT console: Credenziali per archivi privati

Obbligatorio: false. Questo parametro è obbligatorio per accedere alle immagini Docker archiviate nei repository privati.

Tipo: di array string

Schema valido: [( ?,? ?"(arn:(aws(-[a-z]+)):secretsmanager:[a-z0-9-]+:[0-9]{12}:secret:([a-zA-Z0-9\]+/)[a-zA-Z0-9/_+=,.@-]+-[a-zA-Z0-9]+)")]

DockerContainerStatusLogFrequency

La frequenza (in secondi) di registrazione delle informazioni sullo stato relative ai container Docker in esecuzione sul core. Il valore predefinito è 300 secondi (5 minuti).

Nome visualizzato nella AWS IoT console: frequenza di registrazione

Obbligatorio: false

Tipo: string

Schema valido: ^[1-9]{1}[0-9]{0,3}$

Esempio di creazione di un connettore (AWS CLI)

Il seguente comando CLI crea una ConnectorDefinition versione iniziale che contiene il connettore di distribuzione dell'applicazione Greengrass Docker.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyDockerAppplicationDeploymentConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/DockerApplicationDeployment/versions/5", "Parameters": { "DockerComposeFileS3Bucket": "myS3Bucket", "DockerComposeFileS3Key": "production-docker-compose.yml", "DockerComposeFileS3Version": "123", "DockerComposeFileDestinationPath": "/home/username/myCompose", "DockerUserId": "1000", "AWSSecretsArnList": "[\"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret1-hash\",\"arn:aws:secretsmanager:region:account-id:secret:greengrass-secret2-hash\"]", "DockerContainerStatusLogFrequency": "30", "ForceDeploy": "True", "DockerPullBeforeUp": "True" } } ] }'
Nota

La funzione Lambda in questo connettore ha un ciclo di vita di lunga durata.

Dati di input

Questo connettore non richiede né accetta dati di input.

Dati di output

Questo connettore pubblica lo stato del comando docker-compose up come dati di output.

Filtro argomento in sottoscrizione

dockerapplicationdeploymentconnector/message/status

Output di esempio: Operazione riuscita
{ "status":"success", "GreengrassDockerApplicationDeploymentStatus":"Successfully triggered docker-compose up", "S3Bucket":"myS3Bucket", "ComposeFileName":"production-docker-compose.yml", "ComposeFileVersion":"123" }
Esempio di output: Errore
{ "status":"fail", "error_message":"description of error", "error":"InvalidParameter" }

Il tipo di errore può essere InvalidParameter o InternalError.

Configurazione dell'utente Docker sul core AWS IoT Greengrass

Il connettore di distribuzione dell'applicazione Greengrass Docker viene eseguito come utente specificato per il parametro. DockerUserId Se non specifichi un valore, il connettore viene eseguito come ggc_user, che è l'identità di accesso Greengrass predefinita.

Per consentire al connettore di interagire con il daemon Docker, l'utente Docker deve appartenere al gruppo Linux docker sul core. L'utente Docker deve inoltre disporre delle autorizzazioni in scrittura per la directory DockerComposeFileDestinationPath. Questa è la posizione in cui il connettore archivia il file docker-compose.yml locale e le credenziali Docker.

Nota
  • Ti consigliamo di creare un utente Linux anziché utilizzare l'impostazione predefinita ggc_user. Altrimenti, qualsiasi funzione Lambda nel gruppo Greengrass può accedere al file Compose e alle credenziali Docker.

  • L'esecuzione come root deve essere utilizzata solo quando strettamente necessario. Se specifichi l'utente root, devi consentire alle funzioni Lambda di essere eseguite come root sul AWS IoT Greengrass core. Per ulteriori informazioni, consulta Esecuzione di una funzione Lambda come utente root.

  1. Creare l'utente. È possibile eseguire il comando useradd e includere l'opzione -u facoltativa per assegnare un UID. Per esempio:

    sudo useradd -u 1234 user-name
  2. Aggiungere l'utente al gruppo docker sul core. Per esempio:

    sudo usermod -aG docker user-name

    Per ulteriori informazioni, inclusa la modalità di creazione del gruppo docker, consulta Manage Docker as a non-root user nella documentazione di Docker.

  3. Concedere le autorizzazioni utente per scrivere nella directory specificata per il parametro DockerComposeFileDestinationPath. Per esempio:

    1. Per impostare l'utente come il proprietario della directory. Questo esempio utilizza l'UID della fase 1.

      chown 1234 docker-compose-file-destination-path
    2. Per fornire le autorizzazioni in lettura e scrittura al proprietario.

      chmod 700 docker-compose-file-destination-path

      Per ulteriori informazioni, consulta How To Manage File And Folder Permissions In Linux nella documentazione di Linux Foundation.

    3. Se non è stato assegnato un UID al momento della creazione dell'utente o se è stato utilizzato un utente esistente, eseguire il comando id per cercare l'UID.

      id -u user-name

      Utilizzare l'UID per configurare il parametro DockerUserId per il connettore.

Informazioni di utilizzo

Quando si utilizza il connettore di distribuzione delle applicazioni Greengrass Docker, è necessario conoscere le seguenti informazioni sull'utilizzo specifiche dell'implementazione.

  • Prefisso per i nomi dei progetti. Il connettore antepone il prefisso greengrassdockerapplicationdeployment ai nomi dei container Docker che avvia. Il connettore utilizza questo prefisso come il nome del progetto nei comandi docker-compose che esegue.

  • Comportamento di registrazione. Il connettore scrive informazioni sullo stato e informazioni sulla risoluzione dei problemi in un file di log. È possibile configurare AWS IoT Greengrass l'invio dei log a CloudWatch Logs e la scrittura dei log localmente. Per ulteriori informazioni, consulta Registrazione per connettori. Questo è il percorso al log locale per il connettore:

    /greengrass-root/ggc/var/log/user/region/aws/DockerApplicationDeployment.log

    Devi disporre delle autorizzazioni root per accedere ai log locali.

  • Aggiornamento delle immagini Docker. Docker memorizza le immagini nella cache sul dispositivo core. Se aggiorni un'immagine Docker e desideri propagare la modifica al dispositivo core, assicurati di modificare il tag per l'immagine nel file Compose. Le modifiche diventano effettive dopo la distribuzione del gruppo Greengrass.

  • Timeout di 10 minuti per le operazioni di pulizia. Quando il demone Greengrass si ferma durante un riavvio, il docker-compose down comando viene avviato. Tutti i contenitori Docker dispongono di un massimo di 10 minuti dopo l'avvio per eseguire qualsiasi docker-compose down operazione di pulizia. Se la pulizia non viene completata entro 10 minuti, devi pulire manualmente i contenitori rimanenti. Per ulteriori informazioni, consulta docker rm nella documentazione dell'interfaccia a riga di comandi di Docker.

  • Esecuzione di comandi Docker. Per risolvere i problemi, puoi eseguire i comandi Docker in una finestra del terminale sul dispositivo core. Ad esempio, esegui il comando seguente per visualizzare i container Docker avviati dal connettore:

    docker ps --filter name="greengrassdockerapplicationdeployment"
  • ID di risorsa riservato. Il connettore utilizza l'ID DOCKER_DEPLOYER_SECRET_RESOURCE_RESERVED_ID_index per le risorse Greengrass create nel gruppo Greengrass. Gli ID risorsa devono essere univoci nel gruppo, pertanto non assegnare un ID risorsa che potrebbe essere in conflitto con questo ID risorsa riservata.

  • Modalità offline. Quando si imposta il parametro di DockerOfflineMode configurazione suTrue, il connettore Docker è in grado di funzionare in modalità offline. Ciò può accadere quando una distribuzione di gruppo Greengrass si riavvia mentre il dispositivo principale è offline e il connettore non riesce a stabilire una connessione ad Amazon S3 o Amazon ECR per recuperare il file Docker Compose.

    Con la modalità offline abilitata, il connettore tenta di scaricare il file Compose ed eseguire i docker login comandi come farebbe per un normale riavvio. Se questi tentativi falliscono, il connettore cerca un file Compose archiviato localmente nella cartella specificata utilizzando il DockerComposeFileDestinationPath parametro. Se esiste un file Compose locale, il connettore segue la normale sequenza di docker-compose comandi ed estrae immagini locali. Se il file Compose o le immagini locali non sono presenti, il connettore si guasta. Il comportamento dei StopContainersOnNewDeployment parametri ForceDeploy and rimane lo stesso in modalità offline.

Comunicazione con i container Docker

AWS IoT Greengrass supporta i seguenti canali di comunicazione tra i componenti Greengrass e i container Docker:

  • Le funzioni Greengrass Lambda possono utilizzare le API REST per comunicare con i processi nei contenitori Docker. È possibile configurare un server in un contenitore Docker che apre una porta. Le funzioni Lambda possono comunicare con il contenitore su questa porta.

  • I processi nei container Docker possono scambiare messaggi MQTT tramite il broker messaggi Greengrass locale. È possibile configurare il contenitore Docker come dispositivo client nel gruppo Greengrass e quindi creare abbonamenti per consentire al contenitore di comunicare con le funzioni Greengrass Lambda, i dispositivi client e altri connettori del gruppo o con e il servizio shadow locale. AWS IoT Per ulteriori informazioni, consulta Configurazione della comunicazione MQTT con i container Docker.

  • Le funzioni Greengrass Lambda possono aggiornare un file condiviso per passare informazioni ai contenitori Docker. Puoi utilizzare il file Compose per eseguire il montaggio vincolato del percorso file condiviso per un container Docker.

Configurazione della comunicazione MQTT con i container Docker

Puoi configurare un contenitore Docker come dispositivo client e aggiungerlo a un gruppo Greengrass. Quindi, puoi creare sottoscrizioni che consentono la comunicazione MQTT tra il container Docker e i componenti Greengrass o AWS IoT. Nella procedura seguente, viene creata una sottoscrizione che consente al dispositivo del container Docker di ricevere messaggi di aggiornamento shadow dal servizio shadow locale. Puoi seguire questo modello per creare altre sottoscrizioni.

Nota

Questa procedura presuppone che abbiate già creato un gruppo Greengrass e un core Greengrass (v1.10 o successivo). Per informazioni sulla creazione di un gruppo e di un core Greengrass, vedere. Guida introduttiva con AWS IoT Greengrass

Per configurare un contenitore Docker come dispositivo client e aggiungerlo a un gruppo Greengrass
  1. Crea una cartella sul dispositivo principale per archiviare i certificati e le chiavi utilizzati per autenticare il dispositivo Greengrass.

    Il percorso del file deve essere montato sul container Docker che si desidera avviare. Il frammento di codice seguente mostra come montare un percorso del file nel file Compose. In questo esempio, path-to-device-certsrappresenta la cartella creata in questo passaggio.

    version: '3.3' services: myService: image: user-name/repo:image-tag volumes: - /path-to-device-certs/:/path-accessible-in-container
  2. Nel riquadro di navigazione della AWS IoT console, in Gestione, espandi i dispositivi Greengrass, quindi scegli Gruppi (V1).

  3. Scegliere il gruppo target.

  4. Nella pagina di configurazione del gruppo, scegli Dispositivi client, quindi scegli Associa.

  5. Nella finestra Modale Associa un dispositivo client a questo gruppo, scegli Crea nuovo AWS IoT elemento.

    La pagina Crea oggetti si apre in una nuova scheda.

  6. Nella pagina Crea elementi, scegli Crea elemento singolo, quindi scegli Avanti.

  7. Nella pagina Specificare le proprietà dell'oggetto, inserisci un nome per il dispositivo, quindi scegli Avanti.

  8. Nella pagina Configura il certificato del dispositivo, scegli Avanti.

  9. Nella pagina Allega le politiche al certificato, esegui una delle seguenti operazioni:

    • Seleziona una politica esistente che conceda le autorizzazioni richieste dai dispositivi client, quindi scegli Crea oggetto.

      Si apre una finestra modale in cui è possibile scaricare i certificati e le chiavi utilizzati dal dispositivo per connettersi al coreCloud AWS.

    • Crea e allega una nuova policy che conceda le autorizzazioni per i dispositivi client. Esegui questa operazione:

      1. Scegli Crea policy.

        La pagina Create policy (Crea policy) viene aperta in una nuova scheda.

      2. Nella pagina Create policy (Crea policy), eseguire le operazioni seguenti:

        1. Per Nome della politica, inserisci un nome che descriva la politica, ad esempio. GreengrassV1ClientDevicePolicy

        2. Nella scheda Dichiarazioni politiche, in Documento di politica, scegli JSON.

        3. Inserisci il seguente documento di policy. Questa politica consente al dispositivo client di scoprire i core Greengrass e comunicare su tutti gli argomenti MQTT. Per informazioni su come limitare l'accesso a questa politica, vedere. Autenticazione e autorizzazione del dispositivo per AWS IoT Greengrass

          { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Connect", "iot:Receive" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "greengrass:*" ], "Resource": [ "*" ] } ] }
        4. Scegliere Crea per creare la policy.

      3. Torna alla scheda del browser con la pagina Allega politiche al certificato aperta. Esegui questa operazione:

        1. Nell'elenco Politiche, seleziona la politica che hai creato, ad esempio GreengrassV1ClientDevicePolicy.

          Se non vedi la politica, scegli il pulsante di aggiornamento.

        2. Scegli Create thing (Crea oggetto).

          Si apre una finestra modale in cui puoi scaricare i certificati e le chiavi che il dispositivo utilizza per connettersi al Cloud AWS core.

  10. Nella modalità Scarica certificati e chiavi, scarica i certificati del dispositivo.

    Importante

    Prima di scegliere Fine, scarica le risorse di sicurezza.

    Esegui questa operazione:

    1. Per Certificato del dispositivo, scegli Scarica per scaricare il certificato del dispositivo.

    2. Per il file della chiave pubblica, scegli Scarica per scaricare la chiave pubblica per il certificato.

    3. Per File di chiave privata, scegli Scarica per scaricare il file di chiave privata per il certificato.

    4. Consulta l'autenticazione del server nella Guida per gli AWS IoT sviluppatori e scegli il certificato CA principale appropriato. Ti consigliamo di utilizzare gli endpoint Amazon Trust Services (ATS) e i certificati CA root ATS. In Certificati CA root, scegli Scarica per un certificato CA root.

    5. Seleziona Fatto.

    Prendi nota dell'ID del certificato che è comune nei nomi dei file per il certificato e le chiavi del dispositivo. perché sarà necessaria in seguito.

  11. Copia i certificati e le chiavi nella cartella creata nel passaggio 1.

Quindi, creare una sottoscrizione nel gruppo. Per questo esempio, creare una sottoscrizione che consente al dispositivo container Docker di ricevere messaggi MQTT dal servizio shadow locale.

Nota

La dimensione massima di un documento shadow è di 8 KB. Per ulteriori informazioni, consulta Quote di AWS IoT nella Guida per gli sviluppatori di AWS IoT.

Per creare una sottoscrizione che consente al dispositivo container Docker di ricevere messaggi MQTT dal servizio shadow locale
  1. Nella pagina di configurazione del gruppo, scegli la scheda Abbonamenti, quindi scegli Aggiungi abbonamento.

  2. Nella pagina Select your source and target (Seleziona origine e destinazione), configura l'origine e la destinazione come indicato di seguito:

    1. Per Select a source (Seleziona un'origine), scegli Services (Servizi), quindi scegli Local Shadow Service (Servizio shadow locale).

    2. In Select a target (Seleziona una destinazione), scegliere Devices (Dispositivi), quindi selezionare il dispositivo.

    3. Seleziona Avanti.

    4. Nella pagina Filtra i dati con un argomento, per Filtro argomento scegli$aws/things/MyDockerDevice/shadow/update/accepted, quindi scegli Avanti. Sostituiscilo MyDockerDevicecon il nome del dispositivo che hai creato in precedenza.

    5. Scegli Fine.

Includi il frammento di codice seguente nell'immagine Docker cui fai riferimento nel file Compose. Questo è il codice del dispositivo Greengrass. Inoltre, aggiungi il codice nel container Docker che avvia il dispositivo Greengrass all'interno del container. Può essere eseguito come un processo separato nell'immagine o in un thread separato.

import os import sys import time import uuid from AWSIoTPythonSDK.core.greengrass.discovery.providers import DiscoveryInfoProvider from AWSIoTPythonSDK.exception.AWSIoTExceptions import DiscoveryInvalidRequestException from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient # Replace thingName with the name you registered for the Docker device. thingName = "MyDockerDevice" clientId = thingName # Replace host with the IoT endpoint for your &AWS-account;. host = "myPrefix.iot.region.amazonaws.com" # Replace topic with the topic where the Docker container subscribes. topic = "$aws/things/MyDockerDevice/shadow/update/accepted" # Replace these paths based on the download location of the certificates for the Docker container. rootCAPath = "/path-accessible-in-container/AmazonRootCA1.pem" certificatePath = "/path-accessible-in-container/certId-certificate.pem.crt" privateKeyPath = "/path-accessible-in-container/certId-private.pem.key" # Discover Greengrass cores. discoveryInfoProvider = DiscoveryInfoProvider() discoveryInfoProvider.configureEndpoint(host) discoveryInfoProvider.configureCredentials(rootCAPath, certificatePath, privateKeyPath) discoveryInfoProvider.configureTimeout(10) # 10 seconds. GROUP_CA_PATH = "./groupCA/" MQTT_QOS = 1 discovered = False groupCA = None coreInfo = None try: # Get discovery info from AWS IoT. discoveryInfo = discoveryInfoProvider.discover(thingName) caList = discoveryInfo.getAllCas() coreList = discoveryInfo.getAllCores() # Use first discovery result. groupId, ca = caList[0] coreInfo = coreList[0] # Save the group CA to a local file. groupCA = GROUP_CA_PATH + groupId + "_CA_" + str(uuid.uuid4()) + ".crt" if not os.path.exists(GROUP_CA_PATH): os.makedirs(GROUP_CA_PATH) groupCAFile = open(groupCA, "w") groupCAFile.write(ca) groupCAFile.close() discovered = True except DiscoveryInvalidRequestException as e: print("Invalid discovery request detected!") print("Type: %s" % str(type(e))) print("Error message: %s" % str(e)) print("Stopping...") except BaseException as e: print("Error in discovery!") print("Type: %s" % str(type(e))) print("Error message: %s" % str(e)) print("Stopping...") myAWSIoTMQTTClient = AWSIoTMQTTClient(clientId) myAWSIoTMQTTClient.configureCredentials(groupCA, privateKeyPath, certificatePath) # Try to connect to the Greengrass core. connected = False for connectivityInfo in coreInfo.connectivityInfoList: currentHost = connectivityInfo.host currentPort = connectivityInfo.port myAWSIoTMQTTClient.configureEndpoint(currentHost, currentPort) try: myAWSIoTMQTTClient.connect() connected = True except BaseException as e: print("Error in connect!") print("Type: %s" % str(type(e))) print("Error message: %s" % str(e)) if connected: break if not connected: print("Cannot connect to core %s. Exiting..." % coreInfo.coreThingArn) sys.exit(-2) # Handle the MQTT message received from GGShadowService. def customCallback(client, userdata, message): print("Received an MQTT message") print(message) # Subscribe to the MQTT topic. myAWSIoTMQTTClient.subscribe(topic, MQTT_QOS, customCallback) # Keep the process alive to listen for messages. while True: time.sleep(1)

Note sulla sicurezza

Quando utilizzi il connettore di distribuzione delle applicazioni Greengrass Docker, tieni presente le seguenti considerazioni sulla sicurezza.

Storage locale del file di Docker Compose

Il connettore archivia una copia del file Compose nella directory specificata per il parametro DockerComposeFileDestinationPath.

È responsabilità dell'utente proteggere questa directory. Utilizzare le autorizzazioni del file system per limitare l'accesso alla directory.

Storage locale delle credenziali Docker

Se le immagini Docker vengono archiviate in repository privati, il connettore archivia le credenziali Docker nella directory specificata per il parametro DockerComposeFileDestinationPath.

È responsabilità dell'utente proteggere queste credenziali. Ad esempio, utilizzare credential-helper sul dispositivo core quando si installa Docker Engine.

Istallazione di Docker Engine da un'origine attendibile

È responsabilità dell'utente installare Docker Engine da un'origine attendibile. Questo connettore utilizza il daemon Docker sul dispositivo core per accedere agli asset Docker e gestire i container Docker.

Ambito delle autorizzazioni del ruolo del gruppo Greengrass

Le autorizzazioni aggiunte al ruolo di gruppo Greengrass possono essere assunte da tutte le funzioni e i connettori Lambda del gruppo Greengrass. Questo connettore richiede l'accesso al file di Docker Compose archiviato in un bucket S3. Richiede inoltre l'accesso al token di autorizzazione Amazon ECR se le immagini Docker sono archiviate in un repository privato in Amazon ECR.

Licenze

Il connettore di distribuzione delle applicazioni Greengrass Docker include i seguenti software/licenze di terze parti:

Questo connettore è rilasciato ai sensi del contratto di licenza del software Greengrass Core.

Changelog

La tabella seguente descrive le modifiche apportate a ciascuna versione del connettore.

Versione

Modifiche

7

DockerOfflineModeAggiunto per utilizzare un file Docker Compose esistente all'AWS IoT Greengrassavvio offline. Sono stati implementati nuovi tentativi per il comando. docker login Support per UID a 32 bit.

6

StopContainersOnNewDeploymentAggiunto per annullare la pulizia del contenitore quando viene effettuata una nuova distribuzione o si interrompe GGC. Meccanismi di spegnimento e avvio più sicuri. Correzione di bug di convalida YAML.

5

Le immagini vengono estratte prima dell'esecuzione. docker-compose down

4

Aggiunto pull-before-up un comportamento per aggiornare le immagini Docker.

3

Risolto un problema con la ricerca di variabili d'ambiente.

2

Aggiunto il parametro ForceDeploy.

1

Versione iniziale.

Un gruppo Greengrass può contenere una sola versione del connettore alla volta. Per informazioni sull'aggiornamento di una versione del connettore, consulta Aggiornamento delle versioni dei connettori.

Consulta anche