

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

# Distribuisci applicazioni containerizzate in AWS IoT Greengrass V2 esecuzione come contenitore Docker
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container"></a>

*Salih Bakir, Giuseppe Di Bella e Gustav Svalander, Amazon Web Services*

## Riepilogo
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-summary"></a>

AWS IoT Greengrass Version 2, se distribuito come contenitore Docker, non supporta nativamente l'esecuzione di contenitori di applicazioni Docker. Questo modello mostra come creare un'immagine del contenitore personalizzata basata sull'ultima versione AWS IoT Greengrass V2 che abilita la funzionalità Docker-in-Docker (DiND). Con DiND, puoi eseguire applicazioni containerizzate all'interno dell'ambiente. AWS IoT Greengrass V2 

Puoi implementare questo modello come soluzione autonoma o integrarlo con piattaforme di orchestrazione dei container come Amazon ECS Anywhere. In entrambi i modelli di implementazione, mantieni la piena AWS IoT Greengrass V2 funzionalità, comprese le funzionalità di elaborazione AWS IoT SiteWise Edge, abilitando al contempo implementazioni scalabili basate su contenitori. 

## Prerequisiti e limitazioni
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-prereqs"></a>

**Prerequisiti**
+ Un attivo. Account AWS
+ Per i AWS IoT Greengrass Version 2 prerequisiti generali, vedere [Prerequisiti](https://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started-prerequisites.html) nella AWS IoT Greengrass Version 2 documentazione. 
+ Docker Engine, installato e configurato su Linux, macOS o Windows.
+ Docker Compose (se utilizzi l'interfaccia a riga di comando (CLI) di Docker Compose per eseguire immagini Docker).
+ Un sistema operativo Linux.
+ Un hypervisor con un server host che supporta la virtualizzazione.
+ Requisiti di sistema:
  + 2 GB di RAM (minimo)
  + 5 GB di spazio disponibile su disco (minimo)
  + Per AWS IoT SiteWise Edge, una CPU quad-core x86\_64 con 16 GB di RAM e 50 GB di spazio disponibile su disco. Per ulteriori informazioni sull'elaborazione AWS IoT SiteWise dei dati, consulta Requisiti del [pacchetto di elaborazione dati](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/configure-gateway-ggv2.html#w2aac17c19c13b7) nella documentazione. AWS IoT SiteWise 

**Versioni del prodotto**
+ AWS IoT Greengrass Version 2 versione 2.5.3 o successiva
+ Docker-in-Docker versione 1.0.0 o successiva
+ Docker Compose versione 1.22 o successiva
+ Docker Engine versione 20.10.12 o successiva

**Limitazioni**
+ Alcuni Servizi AWS non sono disponibili in tutti. Regioni AWS Per la disponibilità regionale, vedi [AWS Servizi per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). Per endpoint specifici, consulta [Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) e scegli il link relativo al servizio.

## Architecture
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-architecture"></a>

**Stack tecnologico Target**
+ **Fonti di dati**: dispositivi IoT, sensori o apparecchiature industriali che generano dati per l'elaborazione
+ **AWS IoT Greengrass V2**— Funzionamento come contenitore Docker con D-in-D funzionalità, distribuito su infrastrutture periferiche
+ Applicazioni **containerizzate: applicazioni** personalizzate eseguite all'interno dell'ambiente come contenitori Docker annidati AWS IoT Greengrass V2 
+ **(Facoltativo) Amazon ECS** Anywhere: orchestrazione dei container che gestisce la distribuzione dei container AWS IoT Greengrass V2 
+ **Altro Servizi AWS** — AWS IoT Core e altro Servizi AWS per AWS IoT SiteWise l'elaborazione e la gestione dei dati

**Architettura Target**

Il diagramma seguente mostra un esempio di architettura di distribuzione di destinazione che utilizza Amazon ECS Anywhere, uno strumento di gestione dei container.

![Architettura di distribuzione con Amazon ECS Anywhere.](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/2ecf5354-40e0-4fd9-9798-086719059784/images/5ed2652e-9604-4809-8962-b167e1991658.png)


Il diagramma mostra il flusso di lavoro seguente:

**1: Archiviazione delle immagini dei container:** Amazon ECR archivia le immagini dei AWS IoT Greengrass container e tutti i contenitori di applicazioni personalizzati necessari per l'elaborazione edge.

**2** e **3: Implementazione dei container:** Amazon ECS Anywhere distribuisce AWS IoT Greengrass l'immagine del contenitore da Amazon ECR all'edge location, gestendo il ciclo di vita del contenitore e il processo di distribuzione.

**4: Distribuzione dei componenti:** il AWS IoT Greengrass core distribuito distribuisce automaticamente i componenti pertinenti in base alla configurazione. I componenti includono AWS IoT SiteWise Edge e altri componenti necessari per l'elaborazione dei bordi all'interno dell'ambiente containerizzato.

**5: Inserimento dei dati:** dopo la configurazione completa, AWS IoT Greengrass inizia a importare dati di telemetria e sensori da varie fonti di dati IoT presso l'edge location.

**6: Elaborazione dei dati e integrazione nel cloud**: il AWS IoT Greengrass core containerizzato elabora i dati localmente utilizzando i componenti implementati (incluso Edge per i dati industriali). AWS IoT SiteWise Quindi, invia i dati elaborati ai Cloud AWS servizi per ulteriori analisi e archiviazione.

## Tools (Strumenti)
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-tools"></a>

**Servizi AWS**
+ [Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch-type-external.html) Anywhere ti aiuta a distribuire, utilizzare e gestire attività e servizi Amazon ECS sulla tua infrastruttura.
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) fornisce capacità di calcolo scalabile nel Cloud AWS. Puoi avviare tutti i server virtuali di cui hai bisogno e dimensionarli rapidamente.
+ [Amazon Elastic Container Registry (Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)) è un servizio di registro di immagini di container gestito sicuro, scalabile e affidabile.
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)è un servizio cloud e runtime edge open source per l'Internet of Things (IoT) che ti aiuta a creare, implementare e gestire applicazioni IoT sui tuoi dispositivi.
+ [AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html)ti aiuta a raccogliere, modellare, analizzare e visualizzare i dati delle apparecchiature industriali su larga scala.

**Altri strumenti**
+ [Docker](https://www.docker.com/) è un insieme di prodotti Platform as a Service (PaaS) che utilizzano la virtualizzazione a livello di sistema operativo per fornire software in container.
+ [Docker Compose è uno strumento per definire ed eseguire](https://docs.docker.com/compose/) applicazioni multi-contenitore.
+ [Docker Engine](https://docs.docker.com/engine/) è una tecnologia di containerizzazione open source per la creazione e la containerizzazione di applicazioni.

**Archivio di codice**

Il codice per questo pattern è disponibile nel repository GitHub [AWS IoT Greengrass v2 Docker-in-Docker](https://github.com/aws-samples/aws-iot-greengrass-docker-in-docker).

## Epiche
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-epics"></a>

### Costruisci l'immagine AWS IoT Greengrass V2 Docker-in-Docker
<a name="build-the-gg2-docker-in-docker-image"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Clona e accedi al repository. | Per clonare il repository, usa il seguente comando: <br />`git clone https://github.com/aws-samples/aws-iot-greengrass-docker-in-docker.git`<br />Per accedere alla `docker` directory, utilizzate il seguente comando:<br />`cd aws-iot-greengrass-docker-in-docker/docker` | DevOps ingegnere, AWS DevOps | 
| Creazione dell'immagine Docker. | Per creare l'immagine Docker con la versione predefinita (più recente), esegui il seguente comando:<br />`docker build -t x86_64/aws-iot-greengrass:latest .`<br />Oppure, per creare l'immagine Docker con una versione specifica, esegui il seguente comando:<br />`docker build --build-arg GREENGRASS_RELEASE_VERSION=2.12.0 -t x86_64/aws-iot-greengrass:2.12.0 .`<br />Per verificare la build, esegui il comando seguente:<br />`docker images \| grep aws-iot-greengrass`<br />  | AWS DevOps, DevOps ingegnere, sviluppatore di app | 
| (Facoltativo) Invia ad Amazon ECR. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Sviluppatore di app, AWS DevOps, DevOps ingegnere | 

### Configura le AWS credenziali
<a name="configure-aws-credentials"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Seleziona il metodo di autenticazione. | Scegli una delle seguenti opzioni:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Amministratore AWS | 
| Configura il metodo di autenticazione. | Per il metodo di autenticazione selezionato, utilizza la seguente guida alla configurazione:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Amministratore AWS | 

### Esegui con Docker Compose
<a name="run-with-docker-compose"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configurare `docker-compose.yml`. | Aggiorna il `docker-compose.yml` file con le variabili di ambiente come segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingegnere | 
| Avvia e verifica il contenitore. | Per iniziare in primo piano, esegui il seguente comando:<br />`docker-compose up --build`<br />Oppure, per iniziare in background, esegui il seguente comando:<br />`docker-compose up --build -d`<br />Per verificare lo stato, esegui il comando seguente:<br />`docker-compose ps`<br />Per monitorare i log, esegui il comando seguente:<br />`docker-compose logs -f` | DevOps ingegnere | 

### Esegui con Docker CLI
<a name="run-with-docker-cli"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Esegui il contenitore con la CLI Docker. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingegnere | 
| Verifica il contenitore. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingegnere | 

### Gestisci applicazioni containerizzate
<a name="manage-containerized-applications"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Distribuisci applicazioni. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Sviluppatore di app | 
| Accesso e test Docker-in-Docker. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingegnere | 

### (Opzionale) Integrazione con Amazon ECS Anywhere
<a name="optional-integrate-with-ecs-anywhere"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura il cluster Amazon ECS. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Amministratore AWS | 
| Implementa attività Amazon ECS. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | Amministratore AWS | 

### Interrompi e pulisci
<a name="stop-and-cleanup"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Fermare il contenitore. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | DevOps ingegnere | 

## Risoluzione dei problemi
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Il contenitore non si avvia con errori di autorizzazione. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)`--privileged`concede privilegi estesi al contenitore. | 
| Il provisioning fallisce a causa di errori nelle credenziali. | Per verificare che le credenziali siano configurate correttamente, attenersi alla seguente procedura:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)<br />Assicurati che le autorizzazioni IAM includano`iot:CreateThing`,`iot:CreatePolicy`, `iot:AttachPolicy``iam:CreateRole`, e. `iam:AttachRolePolicy` | 
| Impossibile connettersi al demone Docker all'interno del contenitore. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | 
| Il contenitore esaurisce lo spazio su disco. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Garantire uno spazio minimo su disco: 5 GB per le operazioni di base e 50 GB per Edge AWS IoT SiteWise  | 
| Crea problemi. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html) | 
| Problemi di connettività di rete. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Verificate che il firewall consenta il traffico HTTPS (443) e MQTT (8883) in uscita. | 
| I componenti Greengrass non vengono distribuiti. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Controlla i log specifici dei componenti nella directory. `/greengrass/v2/logs/` | 
| Il contenitore esce immediatamente dopo l'avvio. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.html)Verifica che tutte le variabili di ambiente richieste siano impostate correttamente se. `PROVISION=true` Assicurati che il `--init` flag sia usato all'avvio del contenitore. | 

## Risorse correlate
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-resources"></a>

**AWS resources**
+ [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)
+ [Configura l'elaborazione dei dati edge per AWS IoT SiteWise modelli e asset](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/edge-processing.html)
+ [Che cos'è AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)

**Altre risorse**
+ [Documentazione Docker](https://docs.docker.com/)

## Informazioni aggiuntive
<a name="deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container-additional"></a>
+ Per l'elaborazione dei dati AWS IoT SiteWise Edge, Docker deve essere disponibile all'interno dell' AWS IoT Greengrass ambiente.
+ Per eseguire un contenitore annidato, è necessario eseguire il AWS IoT Greengrass contenitore con credenziali di amministratore.