

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

# Definizioni dei processi di Amazon ECS
<a name="task_definitions"></a>

Una *definizione di attività* è un blueprint dell'applicazione. Si tratta di un file di testo in formato JSON che descrive i parametri e uno o più container che formano l'applicazione. 

Alcuni dei parametri che puoi specificare in una definizione di attività includono:
+ La capacità da utilizzare, che determina l'infrastruttura in cui vengono ospitate le attività
+ Immagine Docker da utilizzare con ogni container nel processo
+ La quantità di CPU e di memoria da utilizzare con ogni processo o container all'interno di un processo
+ I requisiti di memoria e CPU
+ Il sistema operativo del container su cui viene eseguito il processo
+ La modalità di rete Docker da utilizzare per i container nel tuo processo
+ La configurazione di registrazione da utilizzare per i tuoi processi
+ La possibilità che l'attività continui a essere eseguita in caso di interruzione o esito negativo del container
+ Il comando che il container deve eseguire all'avvio
+ Tutti i volumi di dati utilizzati con il container nell'attività
+ Il ruolo IAM utilizzato dalle attività

Per un elenco completo dei parametri per la definizione di attività, consulta [Parametri di definizione di attività Amazon ECS per Fargate](task_definition_parameters.md).

Dopo aver creato una definizione di attività, è possibile eseguirla come attività o servizio.
+ Si definisce *attività* la creazione dell'istanza relativa a una definizione di attività all'interno di un cluster. Dopo aver creato una definizione di attività per la tua applicazione all'interno di Amazon ECS, puoi specificare il numero di processi che saranno eseguiti sul tuo cluster. 
+ un *servizio* Amazon ECS esegue e mantiene simultaneamente il numero desiderato di attività in un cluster Amazon ECS. Il funzionamento è che, se uno dei processi non riesce o si interrompe per qualsiasi motivo, il pianificatore del servizio Amazon ECS lancia un'altra istanza in base alla definizione di attività. Lo fa per sostituirlo e quindi mantenere il numero desiderato di processi nel servizio.

**Topics**
+ [

# Stati delle definizioni di attività Amazon ECS
](task-definition-state.md)
+ [

# Progetta la tua applicazione per Amazon ECS
](application_architecture.md)
+ [

# Creazione di una definizione di attività di Amazon ECS attraverso la nuova console
](create-task-definition.md)
+ [

# Utilizzo di Amazon Q Developer per fornire i suggerimenti sulla definizione delle attività nella console Amazon ECS
](using-amazon-q.md)
+ [

# Aggiornamento di una definizione di attività Amazon ECS attraverso la console
](update-task-definition-console-v2.md)
+ [

# Annullamento della registrazione di una revisione di definizione dell'attività con la console
](deregister-task-definition-v2.md)
+ [

# Eliminazione di una revisione di definizione di attività Amazon ECS attraverso la console
](delete-task-definition-v2.md)
+ [

# Casi d'uso della definizione dell'attività di Amazon ECS
](use-cases.md)
+ [

# Parametri di definizione dell'attività di Amazon ECS per istanze gestite da Amazon ECS
](task_definition_parameters-managed-instances.md)
+ [

# Parametri di definizione di attività Amazon ECS per Fargate
](task_definition_parameters.md)
+ [

# Parametri di definizione di attività Amazon ECS per Amazon EC2
](task_definition_parameters_ec2.md)
+ [

# Modello di definizione di attività di Amazon ECS
](task-definition-template.md)
+ [

# Esempio di definizione di attività di Amazon ECS
](example_task_definitions.md)

# Stati delle definizioni di attività Amazon ECS
<a name="task-definition-state"></a>

La definizione di un'attività cambia stato quando viene creata, eliminata o quando si annulla la registrazione. È possibile visualizzare lo stato di definizione di processo nella console oppure utilizzando `DescribeTaskDefinition`. 

Di seguito sono riportati i possibili stati di una definizione di attività.

ACTIVE  
Una definizione di attività diventa `ACTIVE` una volta che è stata registrata con Amazon ECS. È possibile utilizzare le definizioni di attività nello stato `ACTIVE` per eseguire attività o creare servizi.

INACTIVE  
Una definizione di attività passa dallo stato `ACTIVE` allo stato `INACTIVE` quando si annulla la registrazione di una definizione di attività. È possibile recuperare un definizione di attività `INACTIVE` attraverso la chiamata `DescribeTaskDefinition`. Non è possibile eseguire nuove attività o creare nuovi servizi con una definizione di attività nello stato `INACTIVE`. I servizi e le attività esistenti non subiscono alcun impatto.

DELETE\$1IN\$1PROGRESS  
Una definizione di attività passa dallo stato `INACTIVE` allo stato `DELETE_IN_PROGRESS` dopo la richiesta di eliminazione della definizione di attività. Dopo che la definizione dell'attività ha raggiunto lo stato `DELETE_IN_PROGRESS`, Amazon ECS verifica periodicamente che la definizione dell'attività di destinazione non sia referenziata da alcuna attività o implementazione attiva e successivamente elimina in via definitiva la definizione dell'attività. Non è possibile eseguire nuove attività o creare nuovi servizi con una definizione di attività nello stato `DELETE_IN_PROGRESS`. È possibile richiedere l'eliminazione di una definizione di attività in qualsiasi momento senza che ciò abbia un impatto sulle attività e sui servizi esistenti.  
Le definizioni di attività nello stato `DELETE_IN_PROGRESS` sono visibili nella console ed è possibile recuperarle effettuando una chiamata `DescribeTaskDefinition`.  
Quando elimini tutte le revisioni delle definizioni di attività nello stato `INACTIVE`, il nome della definizione di attività non viene visualizzato nella console e non viene restituito nell'API. Se lo stato della revisione delle definizioni di attività è `DELETE_IN_PROGRESS`, il nome della definizione di attività viene visualizzato nella console e restituito nell'API. Il nome della definizione di attività viene mantenuto da Amazon ECS e la revisione viene incrementata durante la prossima creazione di una definizione di attività con tale nome.

Se lo utilizzi AWS Config per gestire le definizioni delle attività, ti AWS Config addebita il costo di tutte le registrazioni delle definizioni delle attività. Viene addebitato solo l'annullamento della registrazione della definizione di attività `ACTIVE` più recente. L'eliminazione di una definizione di attività non prevede alcun costo. Per ulteriori informazioni sui prezzi, consulta [Prezzi di AWS Config](https://aws.amazon.com/config/pricing/).

## Risorse Amazon ECS in grado di bloccare un'eliminazione
<a name="resource-block-delete"></a>

La richiesta di eliminazione di una definizione di attività non verrà completata quando sono presenti risorse Amazon ECS che dipendono dalla revisione della definizione di attività. Le seguenti risorse potrebbero impedire l'eliminazione di una definizione di attività:
+ Attività autonome di Amazon ECS: la definizione di attività è necessaria affinché quest'ultima rimanga integra.
+ Attività di servizio di Amazon ECS: la definizione di attività è necessaria affinché quest'ultima rimanga integra.
+ Implementazioni e set di attività di servizio di Amazon ECS: la definizione di attività è necessaria quando si avvia un evento di dimensionamento per un'implementazione o un set di attività di Amazon ECS.

Se la definizione delle `DELETE_IN_PROGRESS` attività rimane invariata, è possibile utilizzare la console oppure AWS CLI identificare e quindi interrompere le risorse che bloccano l'eliminazione delle definizioni delle attività.

### Eliminazione della definizione di attività dopo la rimozione della risorsa bloccata
<a name="resource-block-remove"></a>

Le seguenti regole si applicano dopo aver rimosso le risorse che bloccano l'eliminazione della definizione di attività:
+ Attività Amazon ECS: dopo l'interruzione dell'attività, l'eliminazione della definizione di attività può richiedere fino a 1 ora.
+ Implementazioni e set di attività di servizio di Amazon ECS: dopo l'eliminazione dell'implementazione o del set di attività, l'eliminazione della definizione di attività può richiedere fino a 24 ore.

# Progetta la tua applicazione per Amazon ECS
<a name="application_architecture"></a>

L'applicazione viene progettata creando una definizione di attività per l'applicazione. La definizione dell'attività contiene i parametri che definiscono le informazioni sull'applicazione, tra cui:
+ La capacità da utilizzare, che determina l'infrastruttura in cui vengono ospitate le attività.

  Quando utilizzi il provider di capacità EC2, scegli anche il tipo di istanza. Quando utilizzi il provider di capacità su istanze gestite da Amazon ECS, puoi fornire i requisiti di istanza per Amazon ECS per gestire la capacità di calcolo. Per alcuni tipi di istanze, come la GPU, è necessario impostare parametri specifici. Per ulteriori informazioni, consulta [Casi d'uso della definizione dell'attività di Amazon ECS](use-cases.md).
+ L'immagine del container, che contiene il codice dell'applicazione e tutte le dipendenze necessarie per l'esecuzione di tale codice.
+ La modalità di rete da utilizzare per i container nella tua attività.

  La modalità di rete determina il modo in cui l'attività comunica sulla rete.

  Per le attività eseguite su istanze EC2 e istanze gestite da Amazon ECS, sono disponibili diverse opzioni, ma consigliamo di utilizzare la modalità di rete `awsvpc`. La modalità `awsvpc` di rete semplifica il networking in container offrendo un maggiore controllo sul modo in cui le applicazioni comunicano tra loro e con gli altri servizi all'interno dell'azienda VPCs. 

  Per le attività eseguite su Fargate, è necessario utilizzare la modalità di rete `awsvpc`.
+ La configurazione di registrazione da utilizzare per i tuoi processi.
+ Tutti i volumi di dati utilizzati con il container nell'attività.

Per un elenco completo dei parametri per la definizione di attività, consulta [Parametri di definizione di attività Amazon ECS per Fargate](task_definition_parameters.md).

Utilizza le linee guida seguenti per creare le definizioni di attività:
+ Utilizza ogni famiglia di definizioni delle attività per un solo scopo aziendale.

  Se raggruppi più tipi di container delle applicazioni nella stessa definizione di attività, non puoi scalare tali container in modo indipendente. Ad esempio, un sito Web e un'API richiedono in genere modelli di scalabilità diversi. Con l'aumento del traffico, potrebbe essere necessario un numero diverso di container Web rispetto a quelli API. Se questi due container vengono implementati nella stessa definizione di attività, ogni attività esegue lo stesso numero di container Web e container API.
+ Associa ogni versione dell'applicazione a una revisione della definizione di attività all'interno di una famiglia di definizioni delle attività.

  All'interno di una famiglia di definizioni di attività, ogni revisione della definizione di attività rappresenta un' point-in-timeistantanea delle impostazioni per una particolare immagine del contenitore. È simile al modo in cui il container può essere considerato uno snapshot di tutti i componenti necessari per eseguire una particolare versione del codice dell'applicazione.

  Crea una one-to-one mappatura tra una versione del codice dell'applicazione, un tag di immagine del contenitore e una revisione della definizione dell'attività. Un tipico processo di rilascio prevede un commit git che viene trasformato in un'immagine di container con il tag SHA del commit git. Quindi, il tag dell'immagine di container riceve la propria revisione della definizione di attività di Amazon ECS. Infine, il servizio Amazon ECS viene aggiornato implementare la nuova revisione della definizione di attività.
+ Utilizza ruoli IAM diversi per ogni famiglia di definizione delle attività.

  Definisci ogni definizione delle attività con il proprio ruolo IAM. Implementa questa pratica fornendo a ogni componente aziendale la propria famiglia di definizione delle attività. Implementando entrambe queste best practice, puoi limitare l'accesso di ciascun servizio alle risorse del tuo AWS account. Ad esempio, puoi concedere al servizio di autenticazione l'accesso per connettersi al database delle password. Allo stesso tempo, puoi garantire l'accesso alle informazioni di pagamento con carta di credito soltanto al servizio.

# Best practice per le dimensioni delle attività di Amazon ECS
<a name="capacity-tasksize"></a>

 Le dimensioni dei container e delle attività sono entrambe essenziali per la scalabilità e la pianificazione della capacità. In Amazon ECS, CPU e memoria sono due parametri di risorse utilizzati per determinare la capacità. La CPU viene misurata in unità di 1/1024 di una vCPU completa (dove 1024 unità equivalgono a 1 vCPU intera). La memoria viene misurata in mebibyte. Nella definizione dell'attività, è possibile configurare le prenotazioni e i limiti delle risorse.

Quando configuri una prenotazione, stai impostando la quantità minima di risorse richiesta da un'attività. L'attività riceve almeno la quantità di risorse richieste. L'applicazione potrebbe essere in grado di utilizzare più CPU o memoria rispetto alla prenotazione dichiarata. Tuttavia, ciò è soggetto ai limiti che hai dichiarato. L'utilizzo di un importo superiore a quello della prenotazione è noto come bursting. In Amazon ECS, le prenotazioni sono garantite. Ad esempio, se utilizzi istanze Amazon EC2 per fornire capacità, Amazon ECS non colloca un'attività su un'istanza in cui la prenotazione non può essere soddisfatta.

Un limite è la quantità massima di unità CPU o memoria che il container o l'attività può utilizzare. Qualsiasi tentativo di utilizzare una quantità di CPU superiore a questo limite comporta una limitazione (della larghezza di banda della rete). Qualsiasi tentativo di utilizzare più memoria comporta l'interruzione del container.

Scegliere questi valori può essere complesso. Questo perché i valori più adatti all'applicazione dipendono in larga misura dai requisiti di risorse della stessa. Il test di carico dell'applicazione è la chiave per una corretta pianificazione del fabbisogno di risorse e una migliore comprensione dei requisiti dell'applicazione.

## Applicazioni senza stato
<a name="capacity-tasksize-stateless"></a>

Per le applicazioni senza stato con scalabilità orizzontale, ad esempio un'applicazione con sistema di bilanciatore del carico, consigliamo innanzitutto di determinare la quantità di memoria che l'applicazione consuma per soddisfare le richieste. A tale scopo, puoi utilizzare strumenti tradizionali come `ps` or o `top` soluzioni di monitoraggio come CloudWatch Container Insights.

Quando si stabilisce una prenotazione della CPU, bisogna tenere in considerazione come scalare l'applicazione per soddisfare i requisiti aziendali. È possibile utilizzare riserve di CPU più piccole, ad esempio 256 unità CPU (o 1/4 vCPU), per aumentare orizzontalmente in modo da ridurre al minimo i costi. Tuttavia, potrebbero non scalare abbastanza velocemente per soddisfare i picchi significativi della domanda. È possibile utilizzare prenotazioni di CPU più grandi per aumentare e ridurre orizzontalmente più in fretta e quindi soddisfare più rapidamente i picchi di domanda. Tuttavia, le prenotazioni di CPU più grandi sono più costose.

## Altre applicazioni
<a name="capacity-tasksize-other"></a>

Per le applicazioni che non sono scalabili orizzontalmente, come worker singleton o server di database, la capacità e i costi disponibili rappresentano gli aspetti più importanti da considerare. È consigliabile scegliere la quantità di memoria e CPU in base a ciò che i test di carico indicano necessario per servire il traffico in modo da raggiungere l'obiettivo del livello di servizio. Amazon ECS garantisce che l'applicazione sia collocata su un host con una capacità adeguata.

# Rete di attività di Amazon ECS per istanze gestite Amazon ECS
<a name="managed-instance-networking"></a>

Il comportamento della rete dei processi Amazon ECS eseguiti sulle istanze gestite da Amazon ECS è determinato dalla *modalità di rete* specificata nella definizione di processo. È necessario specificare la modalità di rete nella definizione dell'attività. Non sarai in grado di eseguire attività sulle istanze gestite da Amazon ECS utilizzando una definizione di attività che non specifica una modalità di rete. Istanze gestite da Amazon ECS supporta le seguenti modalità di rete, garantendo la compatibilità con le versioni precedenti per la migrazione dei carichi di lavoro da Fargate o Amazon ECS su Amazon EC2:


| Modalità di rete | Description | 
| --- | --- | 
|  `awsvpc`  |  Ogni attività riceve la propria interfaccia di rete elastica (ENI) e un indirizzo IPv4 privato. Ciò fornisce le stesse proprietà di rete delle istanze Amazon EC2 ed è compatibile con le attività Fargate tradizionali. Utilizza il trunking ENI per un'elevata densità di attività.  | 
|  `host`  |  Le attività condividono direttamente il namespace di rete dell'host. La rete di container è legata all'istanza host sottostante.  | 

## Utilizzo di un VPC in IPv6 modalità -only
<a name="managed-instances-networking-ipv6-only"></a>

In una configurazione IPv6 solo, le attività di Amazon ECS comunicano esclusivamente tramite. IPv6 Per configurare VPCs sottoreti per una configurazione IPv6 solo, è necessario aggiungere un blocco IPv6 CIDR al VPC e creare sottoreti che includano solo un blocco CIDR. IPv6 Per ulteriori informazioni, consulta [Aggiungi IPv6 supporto per il tuo VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html) e [crea una sottorete](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) nella Amazon *VPC* User Guide. È inoltre necessario aggiornare le tabelle di routing con le IPv6 destinazioni e configurare i gruppi di sicurezza con regole. IPv6 Per ulteriori informazioni, consultare [Configure route tables](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) e [Configure security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) nella *Guida per l'utente di Amazon VPC*.

Tieni presente le seguenti considerazioni:
+ Puoi aggiornare un servizio Amazon ECS IPv4 -only o dualstack a IPv6 una configurazione -only aggiornando il servizio direttamente per IPv6 utilizzare sottoreti -only o creando un servizio IPv6 solo parallelo e utilizzando le distribuzioni blu-verdi di Amazon ECS per spostare il traffico verso il nuovo servizio. Per ulteriori informazioni sulle implementazioni blu/verdi di Amazon ECS, consultare [Implementazioni Amazon ECS blue/green](deployment-type-blue-green.md).
+ Un servizio IPv6 solo Amazon ECS deve utilizzare sistemi di bilanciamento del carico dualstack con gruppi target. IPv6 Se si sta migrando un servizio di Amazon ECS esistente basato su un Application Load Balancer o un Network Load Balancer, è possibile creare un nuovo sistema di bilanciatore del carico dualstack e spostare il traffico dal vecchio bilanciatore del carico, o aggiornare il tipo di indirizzo IP del bilanciatore del carico esistente.

   Per ulteriori informazioni sui Network Load Balancer, consultare [Create a Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) e [Update the IP address types for your Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-ip-address-type.html) nella *Guida per l'utente di Network Load Balancer*. Per ulteriori informazioni su Application Load Balancer, consultare [Create an Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) e [Update the IP address types for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-ip-address-type.html) nella *Guida per l'utente di Application Load Balancer*.
+ Per le attività di Amazon ECS in una configurazione IPv6 -only per comunicare IPv4 solo con endpoint, puoi configurare DNS64 e tradurre gli indirizzi NAT64 di rete da a. IPv6 IPv4 Per ulteriori informazioni, consulta [DNS64 e NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html) consulta la *Amazon VPC User Guide*.
+ I carichi di lavoro Amazon ECS in una configurazione IPv6 solo devono utilizzare gli endpoint URI dell'immagine dualstack di Amazon ECR quando estraggono immagini da Amazon ECR. Per ulteriori informazioni, consulta la sezione [Guida introduttiva all'invio di richieste IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) nella *Amazon Elastic Container Registry User Guide*.
**Nota**  
Amazon ECR non supporta gli endpoint VPC con interfaccia dualstack utilizzabili dalle attività in una sola configurazione. IPv6 Per ulteriori informazioni, consulta la sezione [Guida introduttiva all'invio di richieste IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) nella *Amazon Elastic Container Registry User Guide*.
+ Amazon ECS Exec non è supportato in una configurazione di IPv6 sola configurazione.

# Assegna un'interfaccia di rete per le attività sulle istanze gestite da Amazon ECS
<a name="managed-instances-awsvpc-mode"></a>

 L'uso della modalità di `awsvpc` rete in Amazon ECS Managed Instances semplifica la rete di container perché hai un maggiore controllo sul modo in cui le tue applicazioni comunicano tra loro e con gli altri servizi all'interno del tuo. VPCs La modalità di rete `awsvpc` fornisce inoltre una maggiore sicurezza per i container in quanto permette di utilizzare i gruppi di sicurezza e gli strumenti di monitoraggio di rete a un livello più granulare all'interno dei processi.

Per impostazione predefinita, ogni istanza di Istanze gestite da Amazon ECS ha un trunk interfaccia di rete elastica (ENI) collegato durante il lancio come ENI principale quando il tipo di istanza supporta il trunking. Per ulteriori informazioni sui tipi di istanza che supportano il trunking ENI, consulta [Supported instances for increased Amazon ECS container network interfaces](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/eni-trunking-supported-instance-types.html).

**Nota**  
Quando il tipo di istanza scelto non supporta il trunk ENIs, l'istanza verrà avviata con un normale ENI.

Ogni attività eseguita sull'istanza riceve il proprio ENI collegato al trunk ENI, con un indirizzo IP privato principale. Se il tuo VPC è configurato per la modalità dual-stack e utilizzi una sottorete con un blocco IPv6 CIDR, anche l'ENI riceve un indirizzo. IPv6 Quando utilizzi una sottorete pubblica, puoi facoltativamente assegnare un indirizzo IP pubblico all'ENI primario di Amazon ECS Managed Instance abilitando l'indirizzamento IPv4 pubblico per la sottorete. Per ulteriori informazioni, consultare [Modify the IP addressing attributes of your subnet](https://docs.aws.amazon.com//vpc/latest/userguide/subnet-public-ip.html) nella *Guida per l'utente di Amazon VPC*. Un'attività può avere una sola ENI associata in un determinato momento. 

 I container che appartengono alla stessa attività possono comunicare tramite l'interfaccia `localhost`. *Per ulteriori informazioni sulle sottoreti VPCs e sulle sottoreti, consulta Come [funziona Amazon VPC nella Amazon VPC](https://docs.aws.amazon.com/vpc/latest/userguide/how-it-works.html) User Guide*

Le seguenti operazioni utilizzano l'ENI primario collegato all'istanza:
+ **Download delle immagini**: le immagini dei container vengono scaricate da Amazon ECR tramite l'ENI principale.
+ **Recupero dei segreti**: i segreti e le altre credenziali di Secrets Manager vengono recuperati tramite l'ENI primario.
+ **Caricamenti dei log**: i log vengono caricati tramite l'ENI principale. CloudWatch
+ **Download dei file di ambiente**: i file di ambiente vengono scaricati tramite l'ENI principale.

Il traffico delle applicazioni fluisce attraverso l'attività ENI.

Poiché ogni attività ottiene la sua ENI, puoi utilizzare funzioni di rete, come i log di flusso VPC, per monitorare il traffico da e verso le tue attività. Per ulteriori informazioni, consulta [Log di flusso VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) nella *Guida per l’utente di Amazon VPC*.

Puoi anche approfittare di. AWS PrivateLink Puoi configurare un endpoint di interfaccia VPC in modo da poter accedere ad Amazon ECS APIs tramite indirizzi IP privati. AWS PrivateLink limita tutto il traffico di rete tra il tuo VPC e Amazon ECS alla rete Amazon. Non è richiesto un gateway Internet, un dispositivo NAT o un gateway privato virtuale. Per ulteriori informazioni, consultare [Amazon ECS interface VPC endpoints (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html).

La modalità di `awsvpc` rete consente inoltre di sfruttare Amazon VPC Traffic Mirroring per la sicurezza e il monitoraggio del traffico di rete quando si utilizzano tipi di istanze senza trunk collegato. ENIs Per ulteriori informazioni, consultare [What is Traffic Mirroring?](https://docs.aws.amazon.com/vpc/latest/mirroring/what-is-traffic-mirroring.html) nella *Guida di Mirroring del traffico Amazon VPC*.

## Considerazioni per la modalità `awsvpc`
<a name="managed-instances-awsvpc-considerations"></a>
+ Le attività richiedono il ruolo collegato ai servizi Amazon ECS per la gestione ENI. Questo ruolo viene creato automaticamente quando crei un cluster o un servizio.
+  ENIs Le attività sono gestite da Amazon ECS e non possono essere scollegate o modificate manualmente.
+ L'assegnazione di un indirizzo IP pubblico all'attività ENI utilizzando `assignPublicIp` durante l'esecuzione di un'attività autonoma (`RunTask`) o la creazione o l'aggiornamento di un servizio (`CreateService`/`UpdateService`) non è supportata.
+ Quando configuri la rete `awsvpc` a livello di attività, devi utilizzare lo stesso VPC specificato come parte del modello di lancio del provider di capacità di Istanze gestite da Amazon ECS. Puoi utilizzare sottoreti e gruppi di sicurezza diversi da quelli specificati nel modello di lancio.
+ Per le attività nella modalità di rete `awsvpc`, utilizzare il tipo di destinazione `ip` durante la configurazione dei gruppi di destinazione del bilanciatore del carico. Amazon ECS gestisce automaticamente la registrazione del gruppo target per le modalità di rete supportate.

## Utilizzo di un VPC in modalità dual-stack
<a name="managed-instance-networking-vpc-dual-stack"></a>

Quando si utilizza un VPC in modalità dual-stack, le attività possono comunicare più IPv4 o meno entrambe. IPv6 IPv4 e IPv6 gli indirizzi sono indipendenti l'uno dall'altro. Pertanto è necessario configurare il routing e la sicurezza nel VPC separatamente IPv4 per e. IPv6 *Per ulteriori informazioni su come configurare il tuo VPC per la modalità dual-stack, consulta [Migrating to nella](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) Amazon VPC User IPv6 Guide.*

Se hai configurato il tuo VPC con un gateway Internet o un gateway Internet solo in uscita, puoi utilizzare il VPC in modalità dual-stack. In questo modo, le attività a cui viene assegnato un IPv6 indirizzo possono accedere a Internet tramite un gateway Internet o un gateway Internet solo in uscita. I gateway NAT sono opzionali. Per ulteriori informazioni, consulta [Gateway Internet](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) e [Gateway Internet egress-only](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html) nella *Guida per l'utente di Amazon VPC*.

Alle attività di Amazon ECS viene assegnato un IPv6 indirizzo se vengono soddisfatte le seguenti condizioni:
+ L'istanza di Istanze gestite da Amazon ECS che ospita l'attività sta usando la versione `1.45.0` o successiva dell'agente del container. Per informazioni sul controllo della versione dell'agente utilizzata dall'istanza e sull'aggiornamento, se necessario, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).
+ L'impostazione dell'account `dualStackIPv6` è abilitata. Per ulteriori informazioni, consulta [Accedi alle funzionalità di Amazon ECS con le impostazioni dell'account](ecs-account-settings.md).
+ Il tuo processo sta usando la modalità di rete `awsvpc`.
+ Il VPC e la sottorete sono configurati per. IPv6 La configurazione include le interfacce di rete create nella sottorete specificata. *Per ulteriori informazioni su come configurare il tuo VPC per la modalità dual-stack, consulta [Migrazione IPv6 e modifica dell'attributo di IPv6 indirizzamento per](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) [la tua sottorete nella](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-ipv6) Amazon VPC User Guide.*

# Modalità di rete host
<a name="managed-instances-host-modes"></a>

Nella modalità `host`, le attività condividono direttamente il namespace di rete dell'host. La configurazione di rete del container è legata all'istanza host di Istanze gestite da Amazon ECS sottostante che si specifica utilizzando il parametro `networkConfiguration` quando si crea un provider di capacità istanze gestite da Amazon ECS.``

L'utilizzo di questa modalità di rete presenta notevoli svantaggi. È possibile creare solo una singola istanza di un'attività su ciascun host, dal momento che solo la prima attività può essere associata alla porta richiesta sull'istanza Amazon EC2. Inoltre, non è possibile rimappare una porta del container quando si utilizza la modalità di rete `host`. Ad esempio, se un'applicazione deve essere in ascolto su un determinato numero di porta, non è possibile rimappare direttamente il numero di porta. È invece necessario gestire eventuali conflitti di porte modificando la configurazione dell'applicazione.

L'utilizzo della modalità di rete `host` comporta anche implicazioni in termini di sicurezza. Questa modalità consente ai container di impersonare l'host e di connettersi ai servizi di rete loopback privati sull'host.

Utilizza la modalità host solo quando è necessario l'accesso diretto alla rete host o durante la migrazione di applicazioni che richiedono l'accesso alla rete a livello di host.

# Opzioni di rete di attività di Amazon ECS per EC2
<a name="task-networking"></a>

Il comportamento della rete delle attività Amazon ECS ospitate su istanze Amazon EC2 dipende dalla *modalità di rete* definita nella definizione di attività. Si consiglia di utilizzare la modalità di rete `awsvpc` a meno che non sia necessario utilizzare una modalità di rete diversa.

Di seguito sono riportate le modalità di rete disponibili.


| Modalità di rete | Container Linux su EC2 | Container Windows su EC2 | Description | 
| --- | --- | --- | --- | 
|  `awsvpc`  |  Sì   |  Sì  |  All'attività viene assegnata la propria interfaccia di rete elastica (ENI) e un indirizzo IPv4 o IPv6 privato primario. Ciò conferisce al processo le stesse proprietà di rete delle istanze Amazon EC2.  | 
|  `bridge`  |  Sì  |  No  |  L'attività utilizza la rete virtuale integrata di Docker su Linux che viene eseguita all'interno di ogni istanza Amazon EC2 che ospita l'attività. La rete virtuale integrata su Linux utilizza il driver di rete `bridge` Docker. Questa è la modalità di rete predefinita su Linux se non viene specificata una modalità di rete nella definizione di attività.  | 
|  `host`  |  Sì  |  No  |  L'attività utilizza la rete dell'host che ignora la rete virtuale integrata di Docker e mappa le porte del container direttamente all'interfaccia di rete elastica (ENI) dell'istanza Amazon EC2 che ospita l'attività. Le mappature dinamiche delle porte non possono essere utilizzate in questa modalità di rete. Un container in una definizione di attività che utilizza questa modalità deve specificare un numero di `hostPort` specifico. Un numero di porta su un host non può essere utilizzato da più attività. Di conseguenza, non sarà possibile eseguire più attività con la stessa definizione di attività su una singola istanza Amazon EC2.  | 
|  `none`  |  Sì  |  No  |  L'attività non dispone di connettività di rete esterna.  | 
|  `default`  |  No  |  Sì  |  L'attività utilizza la rete virtuale integrata di Docker che viene eseguita all'interno di ogni istanza Amazon EC2 che ospita l'attività. La rete virtuale integrata su Windows utilizza il driver di rete `nat` Docker. Questa è la modalità di rete predefinita su Windows se non viene specificata una modalità di rete nella definizione di attività.  | 

Per ulteriori informazioni sulla rete Docker su Linux, consultare [Networking overview](https://docs.docker.com/engine/network/) nella *documentazione di Docker*.

Per ulteriori informazioni sulla rete Docker su Windows, consultare [Windows container networking](https://learn.microsoft.com/en-us/virtualization/windowscontainers/container-networking/architecture) nella *documentazione di Microsoft Containers* su Windows.

## Utilizzo di un VPC in IPv6 modalità -only
<a name="networking-ipv6-only"></a>

In una configurazione IPv6 solo, le attività di Amazon ECS comunicano esclusivamente tramite. IPv6 Per configurare VPCs e creare sottoreti per una configurazione IPv6 solo, è necessario aggiungere un blocco IPv6 CIDR al VPC e creare nuove sottoreti che includano solo un blocco CIDR. IPv6 Per ulteriori informazioni, consulta [Aggiungi IPv6 supporto per il tuo VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html) e [crea una sottorete](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) nella Amazon *VPC* User Guide.

È inoltre necessario aggiornare le tabelle di routing con le IPv6 destinazioni e configurare i gruppi di sicurezza con regole. IPv6 Per ulteriori informazioni, consultare [Configure route tables](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) e [Configure security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) nella *Guida per l'utente di Amazon VPC*.

Tieni presente le seguenti considerazioni:
+ Puoi aggiornare un servizio Amazon ECS IPv4 -only o dualstack a IPv6 una configurazione -only aggiornando il servizio direttamente per IPv6 utilizzare sottoreti -only o creando un servizio IPv6 solo parallelo e utilizzando le distribuzioni blu-verdi di Amazon ECS per spostare il traffico verso il nuovo servizio. Per ulteriori informazioni sulle implementazioni blu/verdi di Amazon ECS, consultare [Implementazioni Amazon ECS blue/green](deployment-type-blue-green.md).
+ Un servizio IPv6 solo Amazon ECS deve utilizzare sistemi di bilanciamento del carico dualstack con gruppi target. IPv6 Se si sta migrando un servizio di Amazon ECS esistente basato su un Application Load Balancer o un Network Load Balancer, è possibile creare un nuovo sistema di bilanciatore del carico dualstack e spostare il traffico dal vecchio bilanciatore del carico, o aggiornare il tipo di indirizzo IP del bilanciatore del carico esistente.

  Per ulteriori informazioni sui Network Load Balancer, consultare [Create a Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) e [Update the IP address types for your Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-ip-address-type.html) nella *Guida per l'utente di Network Load Balancer*. Per ulteriori informazioni su Application Load Balancer, consultare [Create an Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) e [Update the IP address types for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-ip-address-type.html) nella *Guida per l'utente di Application Load Balancer*.
+ IPv6La configurazione -only non è supportata su. Windows È necessario utilizzare Linux ottimizzato per Amazon ECS AMIs per eseguire attività in una configurazione solo IPv6. Per ulteriori informazioni su Linux ottimizzato per Amazon ECS AMIs, consulta. [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md)
+ Quando avvii un'istanza di contenitore per eseguire attività in una configurazione IPv6 -only, devi impostare un IPv6 indirizzo primario per l'istanza utilizzando il `--enable-primary-ipv6` parametro EC2.
**Nota**  
Senza un IPv6 indirizzo primario, le attività in esecuzione sull'istanza del contenitore nelle modalità di rete host o bridge non verranno registrate con i sistemi di bilanciamento del carico o con. AWS Cloud Map

  Per ulteriori informazioni su `--enable-primary-ipv6` per eseguire le istanze di Amazon EC2, consultare [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) in *Riferimento ai comandi di AWS CLI *.

  Per ulteriori informazioni sull'avvio di istanze di container utilizzando il, vedere. Console di gestione AWS[Avvio di un'istanza di container Linux di Amazon ECS](launch_container_instance.md)
+ Per impostazione predefinita, l'agente container Amazon ECS cercherà di rilevare la compatibilità dell'istanza del contenitore per una configurazione IPv6 solo esaminando i valori predefiniti IPv4 e IPv6 i percorsi dell'istanza. Per ignorare questo comportamento, puoi impostare il parametro ` ECS_INSTANCE_IP_COMPATIBILITY` su `ipv4` o `ipv6` nel file dell'istanza `/etc/ecs/ecs.config`.
+ Le attività devono utilizzare la versione `1.99.1` o successiva dell'agente del container.. Per informazioni sul controllo della versione dell'agente utilizzata dall'istanza e sull'aggiornamento, se necessario, consultare [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).
+ Per le attività di Amazon ECS in una configurazione IPv6 -only per comunicare IPv4 solo con endpoint, puoi configurare DNS64 e tradurre gli indirizzi NAT64 di rete da a. IPv6 IPv4 Per ulteriori informazioni, consulta [DNS64 e NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html) consulta la *Amazon VPC User Guide*.
+ I carichi di lavoro Amazon ECS in una configurazione IPv6 solo devono utilizzare gli endpoint URI dell'immagine dualstack di Amazon ECR quando estraggono immagini da Amazon ECR. Per ulteriori informazioni, consulta la sezione [Guida introduttiva all'invio di richieste IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) nella *Amazon Elastic Container Registry User Guide*.
**Nota**  
Amazon ECR non supporta gli endpoint VPC con interfaccia dualstack utilizzabili dalle attività in una sola configurazione. IPv6 Per ulteriori informazioni, consulta la sezione [Guida introduttiva all'invio di richieste IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) nella *Amazon Elastic Container Registry User Guide*.
+ Amazon ECS Exec non è supportato in una configurazione di IPv6 sola configurazione.

### Regioni AWS che supporta la modalità IPv6 solo per Amazon ECS
<a name="networking-ipv6-only-regions"></a>

Puoi eseguire attività in una configurazione IPv6 solo nelle seguenti AWS regioni in cui Amazon ECS è disponibile:
+ Stati Uniti orientali (Ohio)
+ Stati Uniti orientali (Virginia settentrionale)
+ Stati Uniti occidentali (California settentrionale)
+ Stati Uniti occidentali (Oregon)
+ Africa (Città del Capo)
+ Asia Pacifico (Hong Kong)
+ Asia Pacific (Hyderabad)
+ Asia Pacifico (Giacarta)
+ Asia Pacifico (Melbourne)
+ Asia Pacifico (Mumbai)
+ Asia Pacifico (Osaka)
+ Asia Pacifico (Seoul)
+ Asia Pacifico (Singapore)
+ Asia Pacifico (Sydney)
+ Asia Pacifico (Tokyo)
+ Canada (Centrale)
+ Canada occidentale (Calgary)
+ Cina (Pechino)
+ Cina (Ningxia)
+ Europa (Francoforte)
+ Europa (Londra)
+ Europa (Milano)
+ Europa (Parigi)
+ Europa (Spagna)
+ Israele (Tel Aviv)
+ Medio Oriente (Bahrein)
+ Medio Oriente (Emirati Arabi Uniti)
+ Sud America (San Paolo)
+ AWS GovCloud (Stati Uniti orientali)
+ AWS GovCloud (Stati Uniti occidentali)

# Assegna un'interfaccia di rete per un'attività su Amazon ECS
<a name="task-networking-awsvpc"></a>

Le funzionalità di rete delle attività fornite dalla modalità di rete `awsvpc` forniscono alle attività Amazon ECS le stesse proprietà di rete delle istanze Amazon EC2. L'utilizzo della modalità `awsvpc` di rete semplifica il networking in container, poiché avete un maggiore controllo sul modo in cui le applicazioni comunicano tra loro e con gli altri servizi al vostro interno. VPCs La modalità di rete `awsvpc` fornisce inoltre una maggiore sicurezza per i container in quanto permette di utilizzare i gruppi di sicurezza e gli strumenti di monitoraggio di rete a un livello più granulare all'interno dei processi. È possibile anche utilizzare altre funzionalità di rete di Amazon EC2, come i log dei flussi VPC, per monitorare il traffico da e verso le attività. Inoltre, i container che appartengono alla stessa attività possono comunicare tramite l'interfaccia `localhost`.

L'interfaccia di rete elastica (ENI) dell'attività è una funzionalità completamente gestita di Amazon ECS. Amazon ECS crea l'ENI e la collega all'istanza Amazon EC2 dell'host con il gruppo di sicurezza specificato. Il processo invia e riceve il traffico di rete nell'ENI nello stesso modo con cui le istanze Amazon EC2 gestiscono le interfacce di rete primarie. Per impostazione predefinita, a ciascuna attività ENI viene assegnato un IPv4 indirizzo privato. Se il tuo VPC è abilitato per la modalità dual-stack e utilizzi una sottorete con un blocco IPv6 CIDR, anche l'attività ENI riceverà un indirizzo. IPv6 Ogni processo può avere una sola ENI. 

Queste ENI sono visibili nella console Amazon EC2 per l'account. Il tuo account non può scollegare o modificare il. ENIs Questo serve a impedire l'eliminazione accidentale di un'ENI che è associata a un'attività in esecuzione. Puoi visualizzare le informazioni sugli allegati ENI per le attività nella console Amazon ECS o con il funzionamento dell'[DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)API. Quando l'attività viene interrotta o se il servizio viene ridotto, l'ENI dell'attività viene scollegata ed eliminata.

Quando è necessaria una maggiore densità ENI, utilizzare le impostazioni dell'account `awsvpcTrunking`. Inoltre, Amazon ECS crea e collega un'interfaccia di rete “trunk” per l'istanza di container. La rete trunk è completamente gestita da Amazon ECS. L'ENI trunk viene eliminata quando termini o annulli la registrazione dell'istanza di container dal cluster Amazon ECS. Per ulteriori informazioni sulle impostazioni dell'account `awsvpcTrunking`, consultare [Prerequisiti](container-instance-eni.md#eni-trunking-launching).

Specificare `awsvpc` nel parametro `networkMode` della definizione dell'attività. Per ulteriori informazioni, consulta [Modalità di rete](task_definition_parameters.md#network_mode). 

Pertanto, quando si esegue un'attività o si crea un servizio, utilizzare un parametro `networkConfiguration` che include una o più sottoreti in cui inserire le attività e uno o più gruppi di sicurezza da collegare all'ENI. Per ulteriori informazioni, consulta [Configurazione della rete](service_definition_parameters.md#sd-networkconfiguration). Le attività vengono posizionate nelle istanze Amazon EC2 compatibili nelle stesse zone di disponibilità delle sottoreti e i gruppi di sicurezza specificati vengono associati all'ENI assegnata all'attività.

## Considerazioni per Linux
<a name="linux"></a>

 Tieni in considerazione le informazioni seguenti durante l'utilizzo del sistema operativo Linux.
+ Se si utilizza un'istanza p5.48xlarge in modalità `awsvpc`, non è possibile eseguire più di un'attività sull'istanza.
+ Le attività e i servizi che utilizzano la modalità di `awsvpc` rete richiedono il ruolo collegato ai servizi Amazon ECS per fornire ad Amazon ECS le autorizzazioni per effettuare chiamate ad altri AWS servizi per tuo conto. Questo ruolo viene creato automaticamente quando crei un cluster oppure quando crei o aggiorni un servizio nella Console di gestione AWS. Per ulteriori informazioni, consulta [Uso di ruoli collegati ai servizi per Amazon ECS](using-service-linked-roles.md). Puoi anche creare il ruolo collegato al servizio con il seguente comando: AWS CLI 

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ L'istanza Linux di Amazon EC2 richiede la versione `1.15.0` o successiva dell'agente del container per eseguire processi che utilizzano la modalità di rete `awsvpc`. Se utilizzi l'AMI ottimizzata per Amazon ECS, l'istanza deve disporre almeno della versione `1.15.0-4` del pacchetto `ecs-init`.
+ Amazon ECS popola il nome host del processo con un nome host DNS (interno) fornito da Amazon quando entrambe le opzioni `enableDnsHostnames` e `enableDnsSupport` e sono abilitate nel VPC. Se queste opzioni non sono abilitate, il nome host DNS dell'attività è impostato su un nome host casuale. Per ulteriori informazioni sulle impostazioni DNS per un VPC, consulta [Utilizzo del DNS con il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) nella *Guida per l'utente di Amazon VPC*.
+ Ogni processo Amazon ECS che utilizza la modalità di rete `awsvpc` riceve la propria interfaccia di rete elastica (ENI), che è collegata all'istanza Amazon EC2 che la ospita. Esiste una quota predefinita per il numero di interfacce di rete che possono essere collegate a un'istanza Linux di Amazon EC2. L'interfaccia di rete principale viene calcolata come unica rispetto a quella quota. Ad esempio, per impostazione predefinita, è possibile allegare solo fino a tre `c5.large` ENIs istanze. L'interfaccia di rete principale per l'istanza viene calcolata come unica. È possibile allegarne altre due ENIs all'istanza. Poiché ogni attività che utilizza la modalità di rete `awsvpc` richiede un'ENI, in genere puoi eseguire solo due attività su questo tipo di istanza. Per ulteriori informazioni sui limiti ENI predefiniti per ogni tipo di istanza, consultare [IP addresses per network interface per instance type](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html#AvailableIpPerENI) nella *Guida per l'utente di Amazon EC2*.
+ Amazon ECS supporta l'avvio di istanze Linux di Amazon EC2 che utilizzano tipi di istanze supportati con densità ENI aumentata. Quando decidi di attivare l'impostazione dell'account `awsvpcTrunking` e registri le istanze Linux di Amazon EC2 che utilizzano questi tipi di istanza nel cluster, queste istanze hanno limiti ENI più elevati. L'utilizzo di queste istanze con questa quota più elevata significa che puoi eseguire più attività su ciascuna istanza Linux di Amazon EC2. Per utilizzare la densità ENI aumentata con la funzionalità di trunking, le istanze Amazon EC2 devono utilizzare la versione `1.28.1` o successiva dell'agente del container. Se utilizzi l'AMI ottimizzata per Amazon ECS, l'istanza deve disporre almeno della versione `1.28.1-2` del pacchetto `ecs-init`. Per ulteriori informazioni sul consenso esplicito all'impostazione dell'account `awsvpcTrunking`, consulta [Accedi alle funzionalità di Amazon ECS con le impostazioni dell'account](ecs-account-settings.md). Per ulteriori informazioni su trunking dell'ENI, consulta [Aumento delle interfacce di rete delle istanze di container Linux di Amazon ECS](container-instance-eni.md).
+ Quando si ospitano attività che utilizzano la modalità di `awsvpc` rete su istanze Amazon EC2 Linux, alle attività ENIs non vengono assegnati indirizzi IP pubblici. Per accedere a Internet, le attività devono essere avviate in una sottorete privata configurata per l'utilizzo di un gateway NAT. Per ulteriori informazioni, consulta [Gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) nella *Guida per l’utente di Amazon VPC*. L'accesso di rete in entrata deve avvenire all'interno di un VPC che utilizza l'indirizzo IP privato oppure deve essere instradato attraverso un load balancer dall'interno del VPC. Le attività avviate all'interno di sottoreti pubbliche non hanno accesso a Internet.
+ Amazon ECS riconosce solo le ENI che collega alle istanze Linux di Amazon EC2. Se ti colleghi manualmente ENIs alle tue istanze, Amazon ECS potrebbe tentare di aggiungere un'attività a un'istanza che non dispone di adattatori di rete sufficienti. Ciò può comportare il timeout dell'attività e il passaggio a uno stato di deprovisioning e quindi allo stato di arresto. Ti consigliamo di non collegarti manualmente ENIs alle tue istanze.
+ Le istanze Linux di Amazon EC2 devono essere registrate con la funzionalità `ecs.capability.task-eni` per essere considerate per il posizionamento di processi con la modalità di rete `awsvpc`. Le istanze che eseguono la versione `1.15.0-4` o successiva di `ecs-init` vengono registrate automaticamente con questo attributo.
+ Le ENI che vengono create e collegate alle tue istanze Linux di Amazon EC2 non possono essere scollegate manualmente o modificate dall'account. Questo serve a impedire l'eliminazione accidentale di un'ENI che è associata a un'attività in esecuzione. Per rilasciare il comando ENIs for a task, interrompete l'operazione.
+ È possibile specificare solo 16 sottoreti e 5 gruppi di sicurezza in `awsVpcConfiguration` durante l'esecuzione di un'attività o la creazione di un servizio che utilizza la modalità di rete `awsvpc`. Per ulteriori informazioni, consulta il *riferimento [AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)all'API di Amazon Elastic Container Service*.
+ Quando un processo viene avviato con la modalità di rete `awsvpc`, l'agente del container di Amazon ECS crea un container `pause` aggiuntivo per ciascun processo prima di avviare i container nella definizione di attività. Quindi configura lo spazio dei nomi di rete del `pause` contenitore eseguendo i plugin CNI. [amazon-ecs-cni-plugins ](https://github.com/aws/amazon-ecs-cni-plugins) Quindi l'agente avvia il resto dei container nell'attività in modo che condividano lo stack di rete del container `pause`. Questo significa che tutti i container in un'attività sono indirizzabili tramite gli indirizzi IP dell'ENI e che possono comunicare tra loro sull'interfaccia `localhost`.
+ I servizi con attività che utilizzano la modalità di rete `awsvpc` supportano solo Application Load Balancer e Network Load Balancer. Inoltre, quando crei gruppi target per questi servizi, devi scegliere `ip` come tipo di target. Non usare `instance`. Questo perché i processi che utilizzano la modalità di rete `awsvpc` sono associate a un'ENI e non a un'istanza Linux di Amazon EC2. Per ulteriori informazioni, consulta [Usa il bilanciamento del carico per distribuire il traffico del servizio Amazon ECS](service-load-balancing.md).
+ Se il VPC viene aggiornato per modificare le opzioni DHCP utilizzate, non puoi applicare queste modifiche alle attività esistenti. Avvia nuove attività con queste modifiche applicate, verifica che funzionino correttamente e quindi interrompi le attività esistenti per modificare in modo sicuro queste configurazioni di rete.

## Considerazioni per Windows
<a name="windows"></a>

 Le seguenti considerazioni sono relative all'utilizzo del sistema operativo Windows:
+ Le istanze di container che utilizzano l'AMI Windows Server 2016 ottimizzata per Amazon ECS non possono ospitare attività che utilizzano la modalità di rete `awsvpc`. Se disponi di un cluster che contiene Windows Server 2016 ottimizzato per Amazon ECS AMIs e Windows AMIs che supporta la modalità di `awsvpc` rete, le attività che utilizzano la modalità di `awsvpc` rete non vengono avviate sulle istanze di Windows 2016 Server. Piuttosto, vengono avviati su istanze che supportano le modalità di rete `awsvpc`.
+ L'istanza Windows di Amazon EC2 richiede una versione `1.57.1` o successiva dell'agente contenitore per utilizzare i CloudWatch parametri per i contenitori Windows che utilizzano la `awsvpc` modalità di rete.
+ Le attività e i servizi che utilizzano la modalità di `awsvpc` rete richiedono il ruolo collegato ai servizi Amazon ECS per fornire ad Amazon ECS le autorizzazioni per effettuare chiamate ad altri AWS servizi per tuo conto. Questo ruolo viene creato automaticamente quando crei un cluster oppure quando crei o aggiorni un servizio nella Console di gestione AWS. Per ulteriori informazioni, consulta [Uso di ruoli collegati ai servizi per Amazon ECS](using-service-linked-roles.md). Puoi anche creare il ruolo collegato al servizio con il seguente comando. AWS CLI 

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ L'istanza Windows di Amazon EC2 richiede la versione `1.54.0` o successiva dell'agente del container per eseguire processi che utilizzano la modalità di rete `awsvpc`. Quando avvii l'istanza, devi configurare le opzioni necessarie per la modalità di rete `awsvpc`. Per ulteriori informazioni, consulta [Bootstrap di istanze di container Windows Amazon ECS per il trasferimento dei dati](bootstrap_windows_container_instance.md).
+ Amazon ECS popola il nome host dell'attività con un nome host DNS (interno) fornito da Amazon quando entrambe le opzioni `enableDnsHostnames` e `enableDnsSupport` sono abilitate nel VPC. Se queste opzioni non sono abilitate, il nome host DNS dell'attività sarà un nome host casuale. Per ulteriori informazioni sulle impostazioni DNS per un VPC, consulta [Utilizzo del DNS con il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) nella *Guida per l'utente di Amazon VPC*.
+ Ogni processo Amazon ECS che utilizza la modalità di rete `awsvpc` riceve la propria interfaccia di rete elastica (ENI), che è collegata all'istanza Windows di Amazon EC2 che la ospita. Esiste una quota predefinita per il numero di interfacce di rete che possono essere collegate a un'istanza Windows di Amazon EC2. L'interfaccia di rete principale viene calcolata come unica rispetto a questa quota. Ad esempio, per impostazione predefinita, a un'`c5.large`istanza possono essere ENIs associate solo fino a tre istanze. L'interfaccia di rete principale per l'istanza viene calcolata come una di quelle. È possibile allegarne altre due ENIs all'istanza. Poiché ogni attività che utilizza la modalità di rete `awsvpc` richiede un'ENI, in genere puoi eseguire solo due attività su questo tipo di istanza. Per ulteriori informazioni sui limiti ENI predefiniti per ogni tipo di istanza, consultare [IP addresses per network interface per instance type](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/using-eni.html#AvailableIpPerENI) nella *Guida per l'utente di Amazon EC2*.
+ Quando si ospitano attività che utilizzano la modalità di `awsvpc` rete su istanze Windows di Amazon EC2, alle attività ENIs non vengono assegnati indirizzi IP pubblici. Per accedere a Internet, avvia le attività in una sottorete privata configurata per l'utilizzo di un gateway NAT. Per ulteriori informazioni, consulta [Gateway NAT](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) nella *Guida per l’utente di Amazon VPC*. L'accesso di rete in entrata deve avvenire all'interno del VPC utilizzando l'indirizzo IP privato oppure deve essere instradato attraverso un load balancer all'interno del VPC. Le attività avviate all'interno di sottoreti pubbliche non hanno accesso a Internet.
+ Amazon ECS tiene conto solo delle ENI che collega all'istanza Windows di Amazon EC2. Se ti colleghi manualmente ENIs alle tue istanze, Amazon ECS potrebbe tentare di aggiungere un'attività a un'istanza che non dispone di adattatori di rete sufficienti. Ciò può comportare il timeout dell'attività e il passaggio a uno stato di deprovisioning e quindi allo stato di arresto. Ti consigliamo di non collegarti manualmente ENIs alle tue istanze.
+ Le istanze Windows di Amazon EC2 devono essere registrate con la funzionalità `ecs.capability.task-eni` per essere considerate per il posizionamento di processi con la modalità di rete `awsvpc`. 
+  Non puoi modificare o scollegare manualmente le ENI che vengono create e collegate alle tue istanze Windows di Amazon EC2. Questo serve a impedire l'eliminazione accidentale di un'ENI che è associata a un'attività in esecuzione. Per rilasciare il comando ENIs for a task, interrompete l'operazione.
+  Puoi specificare solo fino a 16 sottoreti e 5 gruppi di sicurezza in `awsVpcConfiguration`quando esegui un'attività o crei un servizio che utilizza la modalità di rete `awsvpc`. Per ulteriori informazioni, consulta il *riferimento [AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)all'API di Amazon Elastic Container Service*.
+ Quando un processo viene avviato con la modalità di rete `awsvpc`, l'agente del container di Amazon ECS crea un container `pause` aggiuntivo per ciascun processo prima di avviare i container nella definizione di attività. Quindi configura lo spazio dei nomi di rete del `pause` contenitore eseguendo i plugin CNI. [amazon-ecs-cni-plugins ](https://github.com/aws/amazon-ecs-cni-plugins) Quindi l'agente avvia il resto dei container nell'attività in modo che condividano lo stack di rete del container `pause`. Questo significa che tutti i container in un'attività sono indirizzabili tramite gli indirizzi IP dell'ENI e che possono comunicare tra loro sull'interfaccia `localhost`.
+ I servizi con attività che utilizzano la modalità di rete `awsvpc` supportano solo Application Load Balancer e Network Load Balancer. Quando crei gruppi target per questi servizi, devi scegliere `ip` come tipo di target anziché `instance`. Questo perché i processi che utilizzano la modalità di rete `awsvpc` sono associati a un'ENI e non a un'istanza Windows di Amazon EC2. Per ulteriori informazioni, consulta [Usa il bilanciamento del carico per distribuire il traffico del servizio Amazon ECS](service-load-balancing.md).
+ Se il VPC viene aggiornato per modificare le opzioni DHCP utilizzate, non puoi applicare queste modifiche alle attività esistenti. Avvia nuove attività con queste modifiche applicate, verifica che funzionino correttamente e quindi interrompi le attività esistenti per modificare in modo sicuro queste configurazioni di rete.
+ Gli elementi seguenti non sono supportati quando si utilizza la modalità di rete `awsvpc` in una configurazione Windows EC2:
  + Configurazione dual-stack
  + IPv6
  + Trunking ENI

## Utilizzo di un VPC in modalità dual-stack
<a name="task-networking-vpc-dual-stack"></a>

Quando si utilizza un VPC in modalità dual-stack, le attività possono comunicare più IPv4 o meno entrambe. IPv6 IPv4 e IPv6 gli indirizzi sono indipendenti l'uno dall'altro. Pertanto è necessario configurare il routing e la sicurezza nel VPC separatamente IPv4 per e. IPv6 *Per ulteriori informazioni su come configurare il tuo VPC per la modalità dual-stack, consulta [Migrating to nella](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) Amazon VPC User IPv6 Guide.*

Se hai configurato il tuo VPC con un gateway Internet o un gateway Internet solo in uscita, puoi utilizzare il VPC in modalità dual-stack. In questo modo, le attività a cui viene assegnato un IPv6 indirizzo possono accedere a Internet tramite un gateway Internet o un gateway Internet solo in uscita. I gateway NAT sono opzionali. Per ulteriori informazioni, consulta [Gateway Internet](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) e [Gateway Internet egress-only](https://docs.aws.amazon.com/vpc/latest/userguide/egress-only-internet-gateway.html) nella *Guida per l'utente di Amazon VPC*.

Alle attività di Amazon ECS viene assegnato un IPv6 indirizzo se vengono soddisfatte le seguenti condizioni:
+ L'istanza Linux di Amazon EC2 che ospita l'attività sta usando la versione `1.45.0` o successiva dell'agente del container. Per informazioni sul controllo della versione dell'agente utilizzata dall'istanza e sull'aggiornamento, se necessario, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).
+ L'impostazione dell'account `dualStackIPv6` è abilitata. Per ulteriori informazioni, consulta [Accedi alle funzionalità di Amazon ECS con le impostazioni dell'account](ecs-account-settings.md).
+ Il tuo processo sta usando la modalità di rete `awsvpc`.
+ Il VPC e la sottorete sono configurati per. IPv6 La configurazione include le interfacce di rete create nella sottorete specificata. *Per ulteriori informazioni su come configurare il tuo VPC per la modalità dual-stack, consulta [Migrazione IPv6 e modifica dell'attributo di IPv6 indirizzamento per](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) [la tua sottorete nella](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-ipv6) Amazon VPC User Guide.*

# Mappare le porte dei container di Amazon ECS all'interfaccia di rete dell'istanza EC2
<a name="networking-networkmode-host"></a>

La modalità di rete `host` è supportata solo per le attività Amazon ECS ospitate sulle istanze Amazon EC2. Non è supportata quando si utilizza Fargate con Amazon ECS.

La modalità di rete `host` è la modalità di rete più semplice supportata in Amazon ECS. Utilizzando la modalità host, la rete del container è collegata direttamente all'host sottostante che esegue il container.

![\[Diagramma che mostra l'architettura di una rete con container che utilizzano la modalità di rete host.\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/images/networkmode-host.png)


Si supponga di eseguire un container Node.js con un'applicazione Express in ascolto sulla porta `3000` simile a quella illustrata nel diagramma precedente. Quando si utilizza la modalità di rete `host`, il container riceve il traffico sulla porta 3000 utilizzando l'indirizzo IP dell'istanza Amazon EC2 dell'host sottostante. Ti consigliamo di non utilizzare questa modalità.

L'utilizzo di questa modalità di rete presenta notevoli svantaggi. È possibile creare solo una singola istanza di un'attività su ciascun host, dal momento che solo la prima attività può essere associata alla porta richiesta sull'istanza Amazon EC2. Inoltre, non è possibile rimappare una porta del container quando si utilizza la modalità di rete `host`. Ad esempio, se un'applicazione deve essere in ascolto su un determinato numero di porta, non è possibile rimappare direttamente il numero di porta. È invece necessario gestire eventuali conflitti di porte modificando la configurazione dell'applicazione.

L'utilizzo della modalità di rete `host` comporta anche implicazioni in termini di sicurezza. Questa modalità consente ai container di impersonare l'host e di connettersi ai servizi di rete loopback privati sull'host.

# Utilizzare la rete virtuale di Docker per le attività di Amazon ECS Linux
<a name="networking-networkmode-bridge"></a>

La modalità di rete `bridge` è supportata solo per le attività Amazon ECS ospitate sulle istanze Amazon EC2.

Con la modalità `bridge`, stai utilizzando un bridge di rete virtuale per creare un livello tra l'host e la rete del container. In questo modo, puoi creare mappature delle porte che rimappano una porta host su una porta container. Le mappature possono essere statiche o dinamiche.

![\[Diagramma che mostra l'architettura di una rete utilizzando la modalità di rete bridge con la mappatura statica delle porte.\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/images/networkmode-bridge.png)


Con una mappatura statica delle porte, puoi definire in modo esplicito la porta host da mappare alla porta container. Nell'esempio precedente, la porta `80` dell'host viene mappata sulla porta `3000` del container. Per comunicare con l'applicazione containerizzata, invia il traffico alla porta `80` all'indirizzo IP dell'istanza Amazon EC2. Dal punto di vista dell'applicazione containerizzata, essa rileva il traffico in entrata sulla porta `3000`.

Se vuoi modificare solo la porta del traffico, la mappatura statica rappresenta la soluzione migliore. Tuttavia, presenta lo stesso svantaggio dell'utilizzo della modalità di rete `host`. È possibile creare solo una singola istanza di un'attività su ciascun host, dal momento che la mappatura statica delle porte consente di mappare solo un solo container sulla porta 80.

Per risolvere questo problema, prendi in considerazione l'utilizzo della modalità di rete `bridge` con una mappatura dinamica delle porte, come illustrato nel diagramma seguente.

![\[Diagramma che mostra l'architettura di una rete utilizzando la modalità di rete bridge con la mappatura dinamica delle porte.\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/images/networkmode-bridge-dynamic.png)


Se non si specifica una porta host nella mappatura delle porte, Docker sceglie una porta casuale e inutilizzata dall'intervallo di porte provvisorie e la assegna come porta host pubblica per il container. Ad esempio, all'applicazione Node.js in ascolto sulla porta `3000` del container potrebbe essere assegnato un numero di porta elevato e casuale, ad esempio `47760`, sull'host Amazon EC2. In questo modo è possibile eseguire più copie del container sull'host. Inoltre, a ciascun container può essere assegnata una propria porta sull'host. Ogni copia del container riceve il traffico sulla porta `3000`. Tuttavia, i client che inviano traffico a questi container utilizzano le porte host assegnate casualmente.

Amazon ECS consente di tenere traccia delle porte assegnate casualmente per ogni attività. A tale scopo, aggiorna automaticamente i gruppi target del sistema di bilanciamento del carico e il rilevamento dei AWS Cloud Map servizi in modo da avere l'elenco degli indirizzi IP e delle porte delle attività. Ciò semplifica l'utilizzo dei servizi che operano in modalità `bridge` con porte dinamiche.

Tuttavia, uno svantaggio dell'utilizzo della modalità di rete `bridge` è la difficoltà di bloccare le comunicazioni tra servizi. Poiché i servizi possono essere assegnati a qualsiasi porta casuale e inutilizzata, è necessario aprire ampi intervalli di porte tra gli host. Tuttavia, non è semplice creare regole specifiche in modo che un determinato servizio possa comunicare solo con un altro servizio specifico. I servizi non dispongono di porte specifiche da utilizzare per le regole di rete dei gruppi di sicurezza.

## Configurazione della modalità di rete bridge per IPv6 carichi di lavoro solo
<a name="networking-networkmode-bridge-ipv6-only"></a>

Per configurare la `bridge` modalità di comunicazione IPv6, è necessario aggiornare Docker le impostazioni del demone. Aggiornare `/etc/docker/daemon.json` come segue:

```
{
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64",
  "ip6tables": true,
  "experimental": true
}
```

Dopo aver aggiornato le impostazioni del daemon Docker, sarà necessario riavviarlo.

**Nota**  
Quando aggiorni e riavvii il daemon, Docker abilita l' IPv6inoltro sull'istanza, il che può comportare la perdita delle route predefinite sulle istanze che utilizzano un'AMI Amazon Linux 2. Per evitare ciò, usa il seguente comando per aggiungere una route predefinita tramite il gateway della sottorete. IPv6   

```
ip route add default via FE80:EC2::1 dev eth0 metric 100
```

# Opzioni di rete di attività di Amazon ECS per Fargate
<a name="fargate-task-networking"></a>

Di default, a ogni processo di Amazon ECS su Fargate viene fornita una interfaccia di rete elastica (ENI) con un indirizzo IP privato primario. Quando utilizzi una sottorete pubblica, puoi eventualmente assegnare un indirizzo IP pubblico all'ENI dell'attività. Se il tuo VPC è configurato per la modalità dual-stack e utilizzi una sottorete con un blocco IPv6 CIDR, anche l'ENI dell'attività riceve un indirizzo. IPv6 Un'attività può avere una sola ENI associata in un determinato momento. I container che appartengono alla stessa attività possono comunicare tramite l'interfaccia `localhost`. Per ulteriori informazioni sulle VPCs sottoreti, consulta How [Amazon VPC works nella Amazon *VPC*](https://docs.aws.amazon.com/vpc/latest/userguide/how-it-works.html) User Guide.

Affinché un'attività su Fargate sia in grado di estrarre un'immagine del container, l'attività deve avere un routing verso Internet. Di seguito è descritto come verificare che l'attività abbia un routing verso Internet.
+ Quando utilizzi una sottorete pubblica, puoi assegnare un indirizzo IP pubblico all'ENI del processo.
+ Quando si utilizza una sottorete privata, la sottorete può avere un gateway NAT collegato.
+ Quando utilizzi immagini di container ospitate in Amazon ECR, puoi configurare Amazon ECR per utilizzare un endpoint VPC di interfaccia e il recupero dell'immagine avviene sull'indirizzo privato dell'attività. IPv4 Per ulteriori informazioni, consulta [Endpoint VPC dell'interfaccia Amazon ECR (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html) nella *Guida per l'utente di Amazon Elastic Container Registry*.

Poiché ogni attività ottiene la sua ENI, puoi utilizzare funzioni di rete, come i log di flusso VPC, per monitorare il traffico da e verso le tue attività. Per ulteriori informazioni, consulta [Log di flusso VPC](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html) nella *Guida per l’utente di Amazon VPC*.

Puoi anche approfittare di. AWS PrivateLink Puoi configurare un endpoint di interfaccia VPC in modo da poter accedere ad Amazon ECS APIs tramite indirizzi IP privati. AWS PrivateLink limita tutto il traffico di rete tra il tuo VPC e Amazon ECS alla rete Amazon. Non è richiesto un gateway Internet, un dispositivo NAT o un gateway privato virtuale. Per ulteriori informazioni, consultare [Amazon ECS interface VPC endpoints (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html).

Per esempi di come utilizzare la `NetworkConfiguration` risorsa con CloudFormation, consulta. [CloudFormation modelli di esempio per Amazon ECS](working-with-templates.md)

 ENIs Quelli che vengono creati sono completamente gestiti da AWS Fargate. Inoltre, esiste una policy IAM associata che viene utilizzata per concedere autorizzazioni per Fargate. Per le attività che utilizzano la piattaforma Fargate versione `1.4.0` o successiva, l'attività riceve un'unica ENI (denominata ENI di attività) e tutto il traffico di rete scorre attraverso tale ENI all'interno del VPC. Questo traffico viene registrato nei log di flusso VPC. Per le attività che utilizzano la piattaforma Fargate versione `1.3.0` e precedenti, oltre all'ENI di attività, l'attività riceve anche un'ENI di proprietà di Fargate che viene utilizzata per un traffico di rete non visibile nei log di flusso VPC. Di seguito vengono descritti il comportamento del traffico di rete e la policy IAM richiesta per ogni versione della piattaforma.


|  Azione  |  Flusso di traffico con piattaforma Linux versione `1.3.0` e versioni precedenti  |  Flusso di traffico con piattaforma Linux versione `1.4.0`  |  Flusso di traffico con piattaforma Windows versione `1.0.0`  |  Autorizzazione IAM  | 
| --- | --- | --- | --- | --- | 
|  Recupero delle credenziali di accesso di Amazon ECR  |  ENI di proprietà Fargate  |  ENI attività  |  ENI attività  |  Ruolo IAM per l'esecuzione del processo  | 
|  Pull immagine  |  ENI attività  |  ENI attività  |  ENI attività  |  Ruolo IAM per l'esecuzione del processo  | 
|  Invio dei log tramite un driver di log  |  ENI attività  |  ENI attività  |  ENI attività  |  Ruolo IAM per l'esecuzione del processo  | 
|  Invio di log FireLens per Amazon ECS  |  ENI attività  |  ENI attività  |  ENI attività  |  Ruolo IAM del processo  | 
|  Recupero di segreti da Secrets Manager o Systems Manager  |  ENI di proprietà Fargate  |  ENI attività  |  ENI attività  |  Ruolo IAM per l'esecuzione del processo  | 
|  Traffico del file system Amazon EFS  |  Non disponibile  |  ENI attività  |  ENI attività  |  Ruolo IAM del processo  | 
|  Traffico delle applicazioni  |  ENI attività  |  ENI attività  |  ENI attività  |  Ruolo IAM del processo  | 

## Considerazioni
<a name="fargate-task-networking-considerations"></a>

Tieni in considerazione le informazioni seguenti quando usi la rete di attività.
+ Il ruolo collegato ai servizi Amazon ECS è necessario per fornire ad Amazon ECS le autorizzazioni per effettuare chiamate ad altri AWS servizi per tuo conto. Questo ruolo viene creato quando crei un cluster oppure quando crei o aggiorni un servizio nella Console di gestione AWS. Per ulteriori informazioni, consulta [Uso di ruoli collegati ai servizi per Amazon ECS](using-service-linked-roles.md). Puoi anche creare il ruolo collegato al servizio utilizzando il seguente comando. AWS CLI 

  ```
  aws iam [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) --aws-service-name ecs.amazonaws.com
  ```
+ Amazon ECS popola il nome host dell'attività con un nome host DNS fornito da Amazon quando entrambe le opzioni `enableDnsHostnames` e `enableDnsSupport` sono abilitate nel VPC. Se queste opzioni non sono abilitate, il nome host DNS dell'attività è impostato su un nome host casuale. Per ulteriori informazioni sulle impostazioni DNS per un VPC, consulta [Utilizzo del DNS con il VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html) nella *Guida per l'utente di Amazon VPC*.
+ È possibile specificare solo fino a 16 sottoreti e 5 gruppi di sicurezza per `awsVpcConfiguration`. Per ulteriori informazioni, consulta il *riferimento [AwsVpcConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AwsVpcConfiguration.html)all'API di Amazon Elastic Container Service*.
+ Non è possibile scollegare o modificare manualmente i ENIs file creati e allegati da Fargate. Questo serve a impedire l'eliminazione accidentale di un'ENI che è associata a un'attività in esecuzione. Per rilasciare il comando ENIs for a task, interrompete l'operazione.
+ Se una sottorete VPC viene aggiornata per modificare la serie di opzioni DHCP utilizzate, non puoi applicare queste modifiche anche alle attività esistenti che utilizzano il VPC. Avvia nuove attività, che riceveranno la nuova impostazione per eseguire la migrazione senza problemi durante il test della nuova modifica e quindi interrompi le attività precedenti, se non è necessario eseguire il rollback.
+ Quanto segue si applica alle attività eseguite sulla versione della piattaforma Fargate `1.4.0` o successiva per Linux o `1.0.0` per Windows. Le attività avviate in sottoreti dual-stack ricevono un indirizzo e un IPv4 indirizzo. IPv6 Le attività avviate nelle sottoreti IPv6 -only ricevono solo un indirizzo. IPv6
+ Per le attività che utilizzano la versione della piattaforma `1.4.0` o successiva per Linux o `1.0.0` Windows, l'attività ENIs supporta i jumbo frame. Le interfacce di rete sono configurate con un'unità di trasmissione massima (MTU), ovvero la dimensione del payload più grande che si adatta all'interno di un singolo frame. Più grande è l'MTU, più il payload dell'applicazione può essere adattato all'interno di un singolo fotogramma, riducendo il sovraccarico per fotogramma e aumentando l'efficienza. Il supporto dei frame jumbo riduce il sovraccarico quando il percorso di rete tra l'attività e la destinazione supporta frame jumbo.
+ I servizi con attività che utilizzano Fargate supportano solo Application Load Balancer e Network Load Balancer. Classic Load Balancer non è supportato. Quando crei gruppi target, devi scegliere `ip` come tipo di target anziché `instance`. Per ulteriori informazioni, consulta [Usa il bilanciamento del carico per distribuire il traffico del servizio Amazon ECS](service-load-balancing.md).

## Utilizzo di un VPC in modalità dual-stack
<a name="fargate-task-networking-vpc-dual-stack"></a>

Quando si utilizza un VPC in modalità dual-stack, le attività possono comunicare più IPv4 o meno entrambe. IPv6 IPv4 e IPv6 gli indirizzi sono indipendenti l'uno dall'altro ed è necessario configurare il routing e la sicurezza nel VPC separatamente IPv4 per e. IPv6 *Per ulteriori informazioni sulla configurazione del tuo VPC per la modalità dual-stack, consulta [Migrating to nella IPv6](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) Amazon VPC User Guide.*

Se vengono soddisfatte le seguenti condizioni, alle attività di Amazon ECS su Fargate viene assegnato IPv6 un indirizzo:
+ L'impostazione del tuo account `dualStackIPv6` di Amazon ECS è attivata (`enabled`) per l'IAM principale che avvia le attività nella regione in cui le stai avviando. Questa impostazione può essere modificata solo utilizzando l'API o. AWS CLI Esiste la possibilità di attivare questa impostazione per un IAM principale specifico sul proprio account o per l'intero account attivando le impostazioni predefinite. Per ulteriori informazioni, consulta [Accedi alle funzionalità di Amazon ECS con le impostazioni dell'account](ecs-account-settings.md).
+ Il VPC e la sottorete sono abilitati per. IPv6 *Per ulteriori informazioni su come configurare il tuo VPC per la modalità dual-stack, consulta [Migrating to nella](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html) Amazon VPC User IPv6 Guide.*
+ La sottorete è abilitata per l'assegnazione automatica IPv6 degli indirizzi. Per ulteriori informazioni su come configurare la sottorete, consulta [Modificare l'attributo di IPv6 indirizzamento per la sottorete](https://docs.aws.amazon.com/vpc/latest/userguide/modify-subnets.html) nella Amazon *VPC* User Guide.
+ L'attività o il servizio utilizza la versione della piattaforma Fargate `1.4.0` o successiva per Linux.

Per le attività di Amazon ECS su Fargate eseguite in un VPC in modalità dual-stack, per comunicare con i servizi di dipendenza utilizzati nel processo di avvio delle attività come ECR, SSM SecretManager e, la tabella di routing della sottorete pubblica richiede il routing (0.0.0.0/0) verso un gateway Internet e la tabella di routing della sottorete privata IPv4 richiede il routing (0.0.0.0/0) verso un gateway NAT. IPv4 Per ulteriori informazioni, consulta i [gateway Internet e i gateway](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html) [NAT nella](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html) Amazon *VPC* User Guide. 

Per esempi su come configurare un VPC dual-stack, consulta [Esempio](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-example.html) di configurazione VPC dual-stack. 

## Utilizzo di un VPC in IPv6 modalità -only
<a name="fargate-task-networking-vpc-ipv6-only"></a>

In una configurazione IPv6 solo, le attività di Amazon ECS comunicano esclusivamente tramite. IPv6 Per configurare VPCs sottoreti per una configurazione IPv6 solo, è necessario aggiungere un blocco IPv6 CIDR al VPC e creare sottoreti che includano solo un blocco CIDR. IPv6 Per ulteriori informazioni, consulta [Aggiungi IPv6 supporto per il tuo VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6-add.html) e [crea una sottorete](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html) nella Amazon *VPC* User Guide. È inoltre necessario aggiornare le tabelle di routing con le IPv6 destinazioni e configurare i gruppi di sicurezza con regole. IPv6 Per ulteriori informazioni, consultare [Configure route tables](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html) e [Configure security group rules](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-security-group-rules.html) nella *Guida per l'utente di Amazon VPC*.

Tieni presente le seguenti considerazioni:
+ Puoi aggiornare un servizio Amazon ECS IPv4 -only o dualstack a IPv6 una configurazione -only aggiornando il servizio direttamente per IPv6 utilizzare sottoreti -only o creando un servizio IPv6 solo parallelo e utilizzando le distribuzioni blu-verdi di Amazon ECS per spostare il traffico verso il nuovo servizio. Per ulteriori informazioni sulle implementazioni blu/verdi di Amazon ECS, consultare [Implementazioni Amazon ECS blue/green](deployment-type-blue-green.md).
+ Un servizio IPv6 solo Amazon ECS deve utilizzare sistemi di bilanciamento del carico dualstack con gruppi target. IPv6 Se si sta migrando un servizio di Amazon ECS esistente basato su un Application Load Balancer o un Network Load Balancer, è possibile creare un nuovo sistema di bilanciatore del carico dualstack e spostare il traffico dal vecchio bilanciatore del carico, o aggiornare il tipo di indirizzo IP del bilanciatore del carico esistente.

   Per ulteriori informazioni sui Network Load Balancer, consultare [Create a Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) e [Update the IP address types for your Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-ip-address-type.html) nella *Guida per l'utente di Network Load Balancer*. Per ulteriori informazioni su Application Load Balancer, consultare [Create an Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) e [Update the IP address types for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-ip-address-type.html) nella *Guida per l'utente di Application Load Balancer*.
+ IPv6La configurazione -only non è supportata su. Windows
+ Per le attività di Amazon ECS in una configurazione IPv6 -only per comunicare IPv4 solo con endpoint, puoi configurare DNS64 e tradurre gli indirizzi NAT64 di rete da a. IPv6 IPv4 Per ulteriori informazioni, consulta [DNS64 e NAT64](https://docs.aws.amazon.com/vpc/latest/userguide/nat-gateway-nat64-dns64.html) consulta la *Amazon VPC User Guide*.
+ IPv6-la configurazione è supportata solo sulla `1.4.0` versione della piattaforma Fargate o successiva.
+ I carichi di lavoro Amazon ECS in una configurazione IPv6 solo devono utilizzare gli endpoint URI dell'immagine dualstack di Amazon ECR quando estraggono immagini da Amazon ECR. Per ulteriori informazioni, consulta la sezione [Guida introduttiva all'invio di richieste IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) nella *Amazon Elastic Container Registry User Guide*.
**Nota**  
Amazon ECR non supporta gli endpoint VPC con interfaccia dualstack utilizzabili dalle attività in una sola configurazione. IPv6 Per ulteriori informazioni, consulta la sezione [Guida introduttiva all'invio di richieste IPv6](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ecr-requests.html#ipv6-access-getting-started) nella *Amazon Elastic Container Registry User Guide*.
+ Amazon ECS Exec non è supportato in una configurazione di IPv6 sola configurazione.
+ Amazon CloudWatch non supporta un endpoint FIPS dualstack che può essere utilizzato per monitorare le attività di Amazon ECS in IPv6 una sola configurazione che utilizza la conformità FIPS-140. Per ulteriori informazioni sul FIPS-140, consultare [AWS Fargate Standard federale per l'elaborazione delle informazioni (FIPS-140)](ecs-fips-compliance.md).

### Regioni AWS che supporta la modalità IPv6 solo per Amazon ECS
<a name="fargate-task-networking-ipv6-only-regions"></a>

Puoi eseguire attività in una configurazione IPv6 solo nelle seguenti configurazioni in Regioni AWS cui Amazon ECS è disponibile:
+ Stati Uniti orientali (Ohio)
+ Stati Uniti orientali (Virginia settentrionale)
+ Stati Uniti occidentali (California settentrionale)
+ Stati Uniti occidentali (Oregon)
+ Africa (Città del Capo)
+ Asia Pacifico (Hong Kong)
+ Asia Pacific (Hyderabad)
+ Asia Pacifico (Giacarta)
+ Asia Pacifico (Melbourne)
+ Asia Pacifico (Mumbai)
+ Asia Pacifico (Osaka)
+ Asia Pacifico (Seoul)
+ Asia Pacifico (Singapore)
+ Asia Pacifico (Sydney)
+ Asia Pacifico (Tokyo)
+ Canada (Centrale)
+ Canada occidentale (Calgary)
+ Cina (Pechino)
+ Cina (Ningxia)
+ Europa (Francoforte)
+ Europa (Londra)
+ Europa (Milano)
+ Europa (Parigi)
+ Europa (Spagna)
+ Israele (Tel Aviv)
+ Medio Oriente (Bahrein)
+ Medio Oriente (Emirati Arabi Uniti)
+ Sud America (San Paolo)
+ AWS GovCloud (Stati Uniti orientali)
+ AWS GovCloud (Stati Uniti occidentali)

# Opzioni di archiviazione per le attività di Amazon ECS
<a name="using_data_volumes"></a>

Amazon ECS ti offre opzioni di archiviazione easy-to-use dei dati flessibili, convenienti e a seconda delle tue esigenze. Amazon ECS supporta le seguenti opzioni di volume di dati per i container:


| Volume di dati | Capacità supportata | Sistemi operativi supportati | Persistenza di archiviazione | Casi d’uso | 
| --- | --- | --- | --- | --- | 
| Amazon Elastic Block Store (Amazon EBS) | Fargate, Amazon EC2, Istanze gestite da Amazon ECS | Linux, Windows (solo su Amazon EC2) | Può essere mantenuto se collegato a un'attività autonoma. Effimero se associato a un'attività gestita da un servizio. | I volumi Amazon EBS forniscono un'archiviazione a blocchi conveniente, durevole e ad alte prestazioni per carichi di lavoro containerizzati a uso intensivo di dati. I casi d'uso più comuni includono carichi di lavoro transazionali come database, desktop virtuali e volumi root, nonché carichi di lavoro ad alta intensità di throughput come l'elaborazione dei log e i carichi di lavoro ETL. Per ulteriori informazioni, consulta [Usare i volumi Amazon EBS con Amazon ECS](ebs-volumes.md). | 
| Amazon Elastic File System (Amazon EFS) | Fargate, Amazon EC2, Istanze gestite da Amazon ECS | Linux | Persistente | I volumi di Amazon EFS offrono uno spazio di archiviazione di file condiviso, semplice, scalabile e persistente da utilizzare con i processi Amazon ECS che aumentano e si riducono automaticamente con l'aggiunta e la rimozione di file. I volumi Amazon EFS supportano la concorrenza e sono utili per le applicazioni containerizzate che scalano orizzontalmente e richiedono funzionalità di storage come bassa latenza, throughput elevato e coerenza. read-after-write I casi d'uso più comuni includono carichi di lavoro come analisi dei dati, elaborazione multimediale, gestione dei contenuti e server Web. Per ulteriori informazioni, consulta [Usare i volumi Amazon EFS con Amazon ECS](efs-volumes.md). | 
| File server Amazon FSx per Windows | Amazon EC2 | Windows | Persistente | FSx i volumi per Windows File Server forniscono file server Windows completamente gestiti che puoi utilizzare per eseguire il provisioning delle attività Windows che richiedono uno storage di file persistente, distribuito, condiviso e statico. I casi d'uso più comuni includono le applicazioni.NET che potrebbero richiedere cartelle locali come archiviazione persistente per salvare gli output delle applicazioni. Amazon FSx for Windows File Server offre una cartella locale nel contenitore che consente la lettura e la scrittura di più contenitori sullo stesso file system supportato da una condivisione SMB. Per ulteriori informazioni, consulta [Utilizzo FSx per volumi Windows File Server con Amazon ECS](wfsx-volumes.md). | 
| Amazon FSx per NetApp ONTAP | Amazon EC2 | Linux | Persistente | I volumi Amazon FSx for NetApp ONTAP forniscono file system NetApp ONTAP completamente gestiti che puoi utilizzare per eseguire il provisioning di attività Linux che richiedono uno storage di file condiviso persistente, ad alte prestazioni e ricco di funzionalità. Amazon FSx for NetApp ONTAP supporta i protocolli NFS e SMB e fornisce funzionalità di livello aziendale come istantanee, clonazione e deduplicazione dei dati. I casi d'uso più comuni includono carichi di lavoro di elaborazione ad alte prestazioni, repository di contenuti e applicazioni che richiedono uno storage condiviso conforme a POSIX. Per ulteriori informazioni, consulta [Montaggio dei file system Amazon FSx for NetApp ONTAP dai contenitori Amazon ECS.](https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/mount-ontap-ecs-containers.html) | 
| Volumi Docker | Amazon EC2 | Windows, Linux | Persistente | I volumi Docker sono una funzionalità del runtime del container Docker che consente ai container di mantenere i dati in modo persistente montando una directory dal file system dell'host. I driver del volume docker (detti anche plugin) vengono utilizzati per integrare i volumi dei container ai sistemi di archiviazione esterni. I volumi Docker possono essere gestiti da driver di terzi o dal driver integrato local. I casi d'uso comuni dei volumi Docker includono la fornitura di volumi di dati persistenti o la condivisione di volumi in posizioni diverse su container diversi sulla stessa istanza di container. Per ulteriori informazioni, consulta [Utilizzo dei volumi Docker con Amazon ECS](docker-volumes.md). | 
| Montaggi vincolati | Fargate, Amazon EC2, Istanze gestite da Amazon ECS | Windows, Linux | Effimero | I montaggi Bind sono costituiti da un file o una directory sull'host, ad esempio un'istanza AWS Fargate Amazon EC2, montata su un contenitore. I casi d'uso più comuni per i montaggi vincolati includono la condivisione di un volume da un container di origine con altri container nella stessa attività, o il montaggio di un volume host o di un volume vuoto in uno o più container. Per ulteriori informazioni, consulta [Utilizzo di montaggio vincolato con Amazon ECS](bind-mounts.md). | 

# Usare i volumi Amazon EBS con Amazon ECS
<a name="ebs-volumes"></a>

I volumi Amazon Elastic Block Store (Amazon EBS) forniscono un'archiviazione a blocchi ad alta disponibilità, conveniente, durevole e ad alte prestazioni per carichi di lavoro a uso intensivo di dati. I volumi Amazon EBS possono essere utilizzati con le attività di Amazon ECS per applicazioni con throughput elevato e transazioni intensive. Per ulteriori informazioni sui volumi Amazon EBS, consultare [Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volumes.html) nella *Guida per l'utente di Amazon EBS*.

I volumi Amazon EBS collegati alle attività di Amazon ECS sono gestiti da Amazon ECS per tuo conto. Durante l'avvio di un'attività autonoma, è possibile fornire la configurazione che verrà utilizzata per collegare un volume EBS all'attività. Durante la creazione o l'aggiornamento del servizio, puoi fornire la configurazione che verrà utilizzata per allegare un volume EBS per attività a ciascuna attività gestita dal servizio Amazon ECS. È possibile configurare nuovi volumi vuoti per gli allegati oppure utilizzare snapshot per caricare dati da volumi esistenti.

**Nota**  
Quando si utilizzano gli snapshot per configurare i volumi, è possibile specificare un intervallo `volumeInitializationRate`, in MiB/s, in corrispondenza del quale i dati vengono recuperati dallo snapshot per creare volumi completamente inizializzati in un periodo di tempo prevedibile. Per ulteriori informazioni sull'inizializzazione dei volumi, consultare [Initialize Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/initalize-volume.html) nella *Guida per l'utente di Amazon EBS*. Per ulteriori informazioni sulla configurazione dei volumi Amazon EBS, consultare [Rimanda la configurazione del volume all'ora di avvio nella definizione di un'attività di Amazon ECS](specify-ebs-config.md) e [Specificare la configurazione del volume Amazon EBS nell'implementazione di Amazon ECS](configure-ebs-volume.md).

La configurazione del volume viene posticipata al momento dell'avvio utilizzando il parametro `configuredAtLaunch` nella definizione dell'attività. Fornendo la configurazione del volume al momento dell'avvio anziché nella definizione dell'attività, è possibile creare definizioni delle attività che non sono limitate a un tipo di volume di dati specifico o a impostazioni specifiche del volume EBS. È quindi possibile riutilizzare le definizioni delle attività in diversi ambienti di runtime. Ad esempio, è possibile fornire un maggiore throughput durante l'implementazione per i carichi di lavoro di produzione rispetto agli ambienti pre-produzione.

 I volumi Amazon EBS collegati alle attività possono essere crittografati con AWS Key Management Service (AWS KMS) chiavi per proteggere i dati. Per ulteriori informazioni, consultare [Crittografia dei dati archiviati nei volumi Amazon EBS allegati alle attività Amazon ECS](ebs-kms-encryption.md).

Per monitorare le prestazioni del volume, puoi anche utilizzare i CloudWatch parametri di Amazon. Per ulteriori informazioni sulle metriche di Amazon ECS per i volumi Amazon EBS, consultare [Metriche di Amazon ECS CloudWatch](available-metrics.md) e [Amazon ECS Container Insights metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html).

Il collegamento di un volume Amazon EBS a un'attività è supportato in tutte le aziende commerciali e nelle [Regioni AWS](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html?icmpid=docs_homepage_addtlrcs#region) in Cina, che supportano Amazon ECS.

## Sistemi operativi e capacità supportati
<a name="ebs-volumes-configuration"></a>

La tabella seguente fornisce il sistema operativo e le configurazioni di capacità supportate.


| Capacity | Linux  | Windows | 
| --- | --- | --- | 
| Fargate |  I volumi Amazon EBS sono supportati nella versione della piattaforma 1.4.0 o successiva (Linux). Per ulteriori informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md). | Non supportata | 
| EC2 | I volumi Amazon EBS sono supportati per le attività ospitate su istanze Nitro basate con Amazon Machine Images () ottimizzato per Amazon ECS. AMIs Per ulteriori informazioni sui tipi di istanza, consultare [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) nella Guida dell'utente di Amazon EC2. I volumi Amazon EBS sono supportati su AMI `20231219` ottimizzate per ECS o versioni successive. Per ulteriori informazioni, consulta [Retrieving Amazon ECS-Optimized AMI metadata](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_AMI.html). | Attività ospitate su istanze Nitro basate con Amazon Machine Images AMIs () ottimizzate per Amazon ECS. Per ulteriori informazioni sui tipi di istanza, consultare [Instance types](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html) nella Guida dell'utente di Amazon EC2. I volumi Amazon EBS sono supportati su AMI `20241017` ottimizzate per ECS o versioni successive. Per ulteriori informazioni, consultare [Retrieving Amazon ECS-Optimized Windows AMI metadata](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_windows_AMI.html). | 
| Istanze gestite da Amazon ECS | I volumi Amazon EBS sono supportati per le attività ospitate su Istanze gestite da Amazon ECS su Linux. | Non supportata | 

## Considerazioni
<a name="ebs-volume-considerations"></a>

 Quando si usano i volumi Amazon EBS, si tenga presente quanto segue:
+ Non è possibile configurare i volumi Amazon EBS per il collegamento alle attività Fargate Amazon ECS nella zona di disponibilità `use1-az3`.
+ Il tipo di volume Amazon EBS magnetico (`standard`) non è supportato per le attività ospitate su Fargate. Per ulteriori informazioni sui tipi di volume Amazon EBS, consultare [Amazon EBS volumes](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) nella *Guida per l'utente di Amazon EC2*.
+ Un ruolo IAM dell'infrastruttura di Amazon ECS è necessario quando si crea un servizio o un'attività autonoma che consiste nella configurazione di un volume al momento dell'implementazione. È possibile allegare la policy IAM `AmazonECSInfrastructureRolePolicyForVolumes` gestita da AWS al ruolo, oppure è possibile utilizzare la policy gestita come guida per creare e allegare la policy con autorizzazioni che soddisfino le esigenze specifiche. Per ulteriori informazioni, consulta [Ruolo IAM dell’infrastruttura Amazon ECS](infrastructure_IAM_role.md).
+ È possibile allegare al massimo un volume Amazon EBS a ciascuna attività Amazon ECS e deve trattarsi di un nuovo volume. Non è possibile collegare un volume Amazon EBS esistente a un'attività. Tuttavia, è possibile configurare un nuovo volume Amazon EBS al momento dell'implementazione utilizzando lo snapshot di un volume esistente.
+ Per utilizzare i volumi Amazon EBS con i servizi Amazon ECS, il comando dell'implementazione deve essere `ECS`. Quando si utilizza questo controller di blue/green distribuzione sono supportate sia le strategie di rolling che quelle di distribuzione.
+ Affinché un contenitore della tua attività possa scrivere sul volume Amazon EBS montato, deve disporre delle autorizzazioni di file system appropriate. Quando specifichi un utente non root nella definizione del contenitore, Amazon ECS configura automaticamente il volume con autorizzazioni basate sul gruppo che consentono all'utente specificato di leggere e scrivere sul volume. Se non viene specificato alcun utente, il contenitore funziona come root e ha pieno accesso al volume.
+ Amazon ECS allega automaticamente i tag riservati `AmazonECSCreated` e `AmazonECSManaged` a un volume Amazon EBS. Se si rimuovono questi tag dal volume, Amazon ECS non sarà in grado di gestire il volume per conto dell'utente. Per ulteriori informazioni sulla menzione di volumi Amazon EBS, consultare [Tagging Amazon EBS volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specify-ebs-config.html#ebs-volume-tagging). Per ulteriori informazioni sull'etichettare le risorse di Amazon ECS, consultare [Tagging your Amazon ECS resources](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html).
+ Il provisioning di volumi da uno snapshot di un volume Amazon EBS che contiene partizioni non è supportato.
+ I volumi collegati alle attività gestite da un servizio non vengono conservati e vengono sempre eliminati al termine della stessa.
+ Non è possibile configurare i volumi Amazon EBS per il collegamento alle attività di Amazon ECS che vengono eseguite su AWS Outposts.

# Comportamento degli utenti non root
<a name="ebs-non-root-behavior"></a>

Quando specifichi un utente non root nella definizione del contenitore, Amazon ECS configura automaticamente il volume Amazon EBS con autorizzazioni basate sul gruppo che consentono all'utente specificato di leggere e scrivere sul volume. Il volume è montato con le seguenti caratteristiche:
+ Il volume è di proprietà dell'utente root e del gruppo root.
+ Le autorizzazioni di gruppo sono impostate per consentire l'accesso in lettura e scrittura.
+ L'utente non root viene aggiunto al gruppo appropriato per accedere al volume.

Segui queste best practice quando usi volumi Amazon EBS con contenitori non root:
+ Usa user IDs (UIDs) e group IDs (GIDs) coerenti tra le immagini del contenitore per garantire autorizzazioni coerenti.
+ Precrea le directory dei punti di montaggio nell'immagine del contenitore e imposta la proprietà e le autorizzazioni appropriate.
+ Testa i tuoi contenitori con volumi Amazon EBS in un ambiente di sviluppo per confermare che le autorizzazioni del file system funzionino come previsto.
+ Se più contenitori per la stessa attività condividono un volume, assicurati che utilizzino un volume compatibile UIDs/GIDs o installino il volume con aspettative di accesso coerenti.

# Rimanda la configurazione del volume all'ora di avvio nella definizione di un'attività di Amazon ECS
<a name="specify-ebs-config"></a>

Per configurare un volume Amazon EBS per gli allegati dell'attività, è necessario specificare il punto di montaggio nella definizione di attività e dare un nome al volume. È inoltre necessario impostare `configuredAtLaunch` su `true` perché i volumi Amazon EBS non possono essere configurati per l'allegato nella definizione dell'attività. Invece, i volumi Amazon EBS sono configurati per l'allegato durante l'implementazione.

Per registrare la definizione dell'attività utilizzando AWS Command Line Interface (AWS CLI), salvate il modello come file JSON, quindi passate il file come input per il `[register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html)` comando. 

Per creare e registrare una definizione di attività utilizzando il Console di gestione AWS, vedere[Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

La definizione di attività seguente illustra la sintassi degli oggetti `mountPoints` e `volumes` nella definizione di attività. Per ulteriori informazioni sui parametri per la definizione di attività, consultare [Parametri di definizione di attività Amazon ECS per Fargate](task_definition_parameters.md). Per utilizzare questo comando, sostituire `user input placeholders` con le proprie informazioni.

## Linux
<a name="linux-example"></a>

```
{
    "family": "mytaskdef",
    "containerDefinitions": [
        {
            "name": "nginx",
            "image": "public.ecr.aws/nginx/nginx:latest",
            "networkMode": "awsvpc",
           "portMappings": [
                {
                    "name": "nginx-80-tcp",
                    "containerPort": 80,
                    "hostPort": 80,
                    "protocol": "tcp",
                    "appProtocol": "http"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEBSVolume",
                    "containerPath": "/mount/ebs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEBSVolume",
            "configuredAtLaunch": true
        }
    ],
    "requiresCompatibilities": [
        "FARGATE", "EC2"
    ],
    "cpu": "1024",
    "memory": "3072",
    "networkMode": "awsvpc"
}
```

## Windows
<a name="windows-example"></a>

```
{
    "family": "mytaskdef",
     "memory": "4096",
     "cpu": "2048",
    "family": "windows-simple-iis-2019-core",
    "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
    "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
    "requiresCompatibilities": ["EC2"]
    "containerDefinitions": [
        {
             "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "essential": true,
            "cpu": 2048,
            "memory": 4096,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "name": "sample_windows_app",
            "portMappings": [
                {
                    "hostPort": 443,
                    "containerPort": 80,
                    "protocol": "tcp"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEBSVolume",
                    "containerPath": "drive:\ebs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEBSVolume",
            "configuredAtLaunch": true
        }
    ],
    "requiresCompatibilities": [
        "FARGATE", "EC2"
    ],
    "cpu": "1024",
    "memory": "3072",
    "networkMode": "awsvpc"
}
```

`mountPoints`  
Tipo: array di oggetti  
Obbligatorio: no  
I punti di montaggio per i volumi di dati nel container. Questo parametro è mappato ai `Volumes` nella creazione container dell'API Docker e l'opzione `--volume` per docker run.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`. I container Windows non possono montare le directory su un'unità diversa e i punti di montaggio non possono essere utilizzati tra le unità. È necessario specificare i punti di montaggio per collegare un volume Amazon EBS direttamente a un'attività Amazon ECS.    
`sourceVolume`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il nome del volume da montare.  
`containerPath`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il percorso nel container in cui verrà montato il volume.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.  
Per le attività su istanze EC2 che eseguono il sistema operativo Windows, lasciare il valore predefinito di `false`.

`name`  
▬Tipo: stringa  
Obbligatorio: no  
Nome del volume. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini (`-`) e trattini bassi (`_`). Nel parametro `sourceVolume` dell'oggetto `mountPoints` della definizione del container viene fatto riferimento a questo nome.

`configuredAtLaunch`  
Tipo: Booleano  
Obbligatorio: sì, quando vuoi collegare un volume EBS direttamente a un'attività.  
Specificare se un volume è configurabile all'avvio. Se impostato su `true`, è possibile configurare il volume quando si esegue un'attività autonoma o quando si crea o si aggiorna un servizio. Se impostato su `false`, non sarà possibile fornire un'altra configurazione di volume nella definizione dell'attività. Questo parametro deve essere fornito e impostato su `true` per configurare un volume Amazon EBS da allegare a un'attività.

# Crittografia dei dati archiviati nei volumi Amazon EBS allegati alle attività Amazon ECS
<a name="ebs-kms-encryption"></a>

Puoi usare AWS Key Management Service (AWS KMS) per creare e gestire chiavi crittografiche che proteggono i tuoi dati. I volumi Amazon EBS vengono crittografati a riposo utilizzando AWS KMS keys. I seguenti tipi di dati sono crittografati:
+ Dati archiviati quando inattivi sul volume
+ I/O del disco
+ Snapshot creati dal volume
+ Nuovi volumi creati da snapshot crittografati

I volumi Amazon EBS collegati alle attività possono essere crittografati utilizzando un Chiave gestita da AWS predefinito con un alias `alias/aws/ebs` o una chiave simmetrica gestita dal cliente specificata nella configurazione del volume. Chiavi gestite da AWS I valori predefiniti sono unici Account AWS per ciascun utente Regione AWS e vengono creati automaticamente. Per creare una chiave simmetrica gestita dal cliente, seguire le fasi descritte in [Creazione delle chiavi KMS per la crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella *Guida per gli sviluppatori di AWS KMS *.

Puoi configurare la crittografia Amazon EBS per impostazione predefinita in modo che tutti i nuovi volumi creati e collegati a un'attività in una determinata operazione Regione AWS vengano crittografati utilizzando la chiave KMS specificata per il tuo account. Per ulteriori informazioni sulla crittografia di Amazon EBS e la crittografia per impostazione predefinita, consultare [Amazon EBS encryption](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) nella *Guida per l'utente di Amazon EBS*.

## Comportamento di Istanze gestite da Amazon ECS
<a name="managed-instances"></a>

È possibile crittografare i volumi Amazon EBS abilitando la crittografia, utilizzando la crittografia per impostazione predefinita o abilitando la crittografia al momento della creazione di un volume che si desidera crittografare. Per informazioni su come abilitare la crittografia per impostazione predefinita (a livello di account), consultare [Encryption by default](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html) nella *Guida per l'utente di Amazon EBS*.

È possibile configurare qualsiasi combinazione di questi tasti. L'ordine di precedenza delle chiavi KMS è il seguente:

1. La chiave KMS specificata nella configurazione del volume. Quando si specifica una chiave KMS nella configurazione del volume, questa sostituisce l'impostazione predefinita di Amazon EBS e qualsiasi chiave KMS specificata a livello di account.

1. La chiave KMS specificata a livello di account. Quando si specifica una chiave KMS per la crittografia a livello di cluster dello storage gestito di Amazon ECS, questa sostituisce la crittografia predefinita di Amazon EBS ma non sostituisce alcuna chiave KMS specificata nella configurazione del volume.

1. Crittografia predefinita di Amazon EBS. La crittografia predefinita si applica quando non si specifica né una chiave KMS a livello di account né una chiave nella configurazione del volume. Se abiliti la crittografia Amazon EBS per impostazione predefinita, l'impostazione predefinita è la chiave KMS che specifichi per la crittografia per impostazione predefinita. Altrimenti, l'impostazione predefinita è Chiave gestita da AWS con l'alias `alias/aws/ebs`.
**Nota**  
Se si imposta `encrypted` a `false` nella configurazione del volume, non si specifica alcuna chiave KMS a livello di account e si abilita la crittografia Amazon EBS per impostazione predefinita, il volume verrà comunque crittografato con la chiave specificata per la crittografia Amazon EBS per impostazione predefinita.

## Comportamento di Istanze non gestite da Amazon ECS
<a name="non-managed-instances"></a>

È possibile anche configurare la crittografia a livello di cluster di Amazon ECS per l'archiviazione gestita da Amazon ECS quando si crea o aggiorna un cluster. La crittografia a livello di cluster ha effetto a livello di attività e può essere utilizzata per crittografare i volumi di Amazon EBS collegati a ciascuna attività in esecuzione in un cluster specifico utilizzando la chiave KMS specificata. Per ulteriori informazioni sulla configurazione della crittografia a livello di cluster per ogni attività, consulta il riferimento [ManagedStorageConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ManagedStorageConfiguration.html)alle *API di Amazon ECS.*

È possibile configurare qualsiasi combinazione di questi tasti. L'ordine di precedenza delle chiavi KMS è il seguente:

1. La chiave KMS specificata nella configurazione del volume. Quando si specifica una chiave KMS nella configurazione del volume, questa sostituisce l'impostazione predefinita di Amazon EBS e qualsiasi chiave KMS specificata a livello di cluster.

1. La chiave KMS specificata a livello di cluster. Quando si specifica una chiave KMS per la crittografia a livello di cluster dello storage gestito di Amazon ECS, questa sostituisce la crittografia predefinita di Amazon EBS ma non sostituisce alcuna chiave KMS specificata nella configurazione del volume.

1. Crittografia predefinita di Amazon EBS. La crittografia predefinita si applica quando non si specifica né una chiave KMS a livello di cluster né una chiave nella configurazione del volume. Se abiliti la crittografia Amazon EBS per impostazione predefinita, l'impostazione predefinita è la chiave KMS che specifichi per la crittografia per impostazione predefinita. Altrimenti, l'impostazione predefinita è Chiave gestita da AWS con l'alias. `alias/aws/ebs`
**Nota**  
Se si imposta `encrypted` a `false` nella configurazione del volume, non specifichi alcuna chiave KMS a livello di cluster e abiliti la crittografia Amazon EBS per impostazione predefinita, il volume verrà comunque crittografato con la chiave specificata per la crittografia Amazon EBS per impostazione predefinita.

## Policy delle chiavi KMS gestite dal cliente
<a name="ebs-kms-encryption-policy"></a>

Per crittografare un volume EBS collegato all'attività utilizzando una chiave gestita dal cliente, è necessario configurare la policy della chiave KMS per garantire che il ruolo IAM utilizzato per la configurazione del volume disponga delle autorizzazioni necessarie per utilizzare la chiave. La policy della chiave deve includere le autorizzazioni `kms:CreateGrant` e `kms:GenerateDataKey*`. Le autorizzazioni `kms:ReEncryptTo` e `kms:ReEncryptFrom` sono necessarie per crittografare i volumi creati utilizzando gli snapshot. Se desideri configurare e crittografare solo nuovi volumi vuoti da allegare, puoi escludere le autorizzazioni `kms:ReEncryptTo` e `kms:ReEncryptFrom`. 

Il seguente frammento di codice JSON mostra le dichiarazioni della policy della chiave che puoi allegare alla policy della chiave KMS. L'utilizzo di queste istruzioni consentirà ad Amazon ECS di utilizzare la chiave per crittografare il volume EBS. Per usare gli esempi di dichiarazioni della policy, sostituire `user input placeholders` con le proprie informazioni. Come sempre, configurare solo le autorizzazioni necessarie.

```
{
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": "kms:DescribeKey",
      "Resource":"*"
    },
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": [
      "kms:GenerateDataKey*",
      "kms:ReEncryptTo",
      "kms:ReEncryptFrom"
      ],
      "Resource":"*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "aws_account_id",
          "kms:ViaService": "ec2.region.amazonaws.com"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:ebs:id"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": { "AWS": "arn:aws:iam::111122223333:role/ecsInfrastructureRole" },
      "Action": "kms:CreateGrant",
      "Resource":"*",
      "Condition": {
        "StringEquals": {
          "kms:CallerAccount": "aws_account_id",
          "kms:ViaService": "ec2.region.amazonaws.com"
        },
        "ForAnyValue:StringEquals": {
          "kms:EncryptionContextKeys": "aws:ebs:id"
        },
        "Bool": {
          "kms:GrantIsForAWSResource": true
        }
      }
    }
```

Per maggiori informazioni sulle autorizzazioni e le policy della chiave, consultare [Key policies in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) e [permissions AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html) nella *Guida per sviluppatori di AWS KMS *. Per la risoluzione dei problemi degli allegati dei volumi EBS relativi alle autorizzazioni chiave, consultare [Risoluzione dei problemi relativi ai volumi di Amazon EBS collegati alle attività di Amazon ECS](troubleshoot-ebs-volumes.md).

# Specificare la configurazione del volume Amazon EBS nell'implementazione di Amazon ECS
<a name="configure-ebs-volume"></a>

Dopo aver registrato una definizione di attività con il parametro `configuredAtLaunch` impostato su `true`, puoi configurare un volume Amazon EBS durante l'implementazione quando esegui un'attività autonoma o quando crei o aggiorni un servizio. Per ulteriori informazioni su come posticipare la configurazione del volume all'ora di avvio utilizzando il parametro `configuredAtLaunch`, consultare [Rimanda la configurazione del volume all'ora di avvio nella definizione di un'attività di Amazon ECS](specify-ebs-config.md).

Per configurare un volume, puoi utilizzare Amazon ECS APIs oppure puoi passare un file JSON come input per i seguenti comandi: AWS CLI 
+ `[run-task](https://docs.aws.amazon.com/cli/latest/reference/ecs/run-task.html)` per eseguire un'attività ECS autonoma.
+ `[start-task](https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html)` per eseguire un'attività ECS autonoma in un'istanza di container specifica. Questo comando non è applicabile alle attività di Fargate.
+ `[create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)` per creare un nuovo servizio ECS.
+ `[update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)` per aggiornare un servizio esistente.

**Nota**  
Affinché un contenitore della tua attività possa scrivere sul volume Amazon EBS montato, deve disporre delle autorizzazioni di file system appropriate. Quando specifichi un utente non root nella definizione del contenitore, Amazon ECS configura automaticamente il volume con autorizzazioni basate sul gruppo che consentono all'utente specificato di leggere e scrivere sul volume. Se non viene specificato alcun utente, il contenitore funziona come root e ha pieno accesso al volume.

 È possibile anche configurare un volume Amazon EBS utilizzando Console di gestione AWS. Per ulteriori informazioni, consultare [Esecuzione di un'applicazione come attività Amazon ECS](standalone-task-create.md), [Creazione di un'implementazione di aggiornamenti continui di Amazon ECS](create-service-console-v2.md) e [Aggiornamento di un servizio Amazon ECS](update-service-console-v2.md).

Il seguente frammento di codice JSON mostra tutti i parametri di un volume Amazon EBS che può essere configurato al momento dell'implementazione. Per utilizzare questi parametri per la configurazione del volume, sostituire `user input placeholders` con le proprie informazioni. Per ulteriori informazioni sui parametri di configurazione, consultare [Volume configurations](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-volumeConfigurations).

```
"volumeConfigurations": [
        {
            "name": "ebs-volume", 
            "managedEBSVolume": {
                "encrypted": true, 
                "kmsKeyId": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", 
                "volumeType": "gp3", 
                "sizeInGiB": 10, 
                "snapshotId": "snap-12345", 
                "volumeInitializationRate":100,
                "iops": 3000, 
                "throughput": 125, 
                "tagSpecifications": [
                    {
                        "resourceType": "volume", 
                        "tags": [
                            {
                                "key": "key1", 
                                "value": "value1"
                            }
                        ], 
                        "propagateTags": "NONE"
                    }
                ], 
                "roleArn": "arn:aws:iam::1111222333:role/ecsInfrastructureRole", 
                 "terminationPolicy": {
                    "deleteOnTermination": true//can't be configured for service-managed tasks, always true 
                },
                "filesystemType": "ext4"
            }
        }
    ]
```

**Importante**  
Assicurarsi che `volumeName`, specificato nella configurazione, sia uguale a `volumeName`, specificato nella definizione dell'attività.

Per informazioni sulla verifica dello stato del volume dell'allegato, consultare [Risoluzione dei problemi relativi ai volumi di Amazon EBS collegati alle attività di Amazon ECS](troubleshoot-ebs-volumes.md). Per informazioni sul ruolo dell'infrastruttura Amazon ECS AWS Identity and Access Management (IAM) necessario per l'allegato del volume EBS, consulta. [Ruolo IAM dell’infrastruttura Amazon ECS](infrastructure_IAM_role.md)

Di seguito sono riportati alcuni frammenti di esempio JSON che mostrano la configurazione dei volumi Amazon EBS. Questi esempi possono essere utilizzati salvando gli snippet in file JSON e passando i file come parametri (utilizzando il parametro) per i `--cli-input-json file://filename` comandi. AWS CLI Sostituisci `user input placeholders` con le informazioni appropriate.

## Configurare un volume per un'attività autonoma
<a name="ebs-run-task"></a>

Il seguente frammento mostra la sintassi per configurare i volumi di Amazon EBS per l'allegato a un'attività autonoma. Il seguente frammento di codice JSON mostra la sintassi per la configurazione delle impostazioni `volumeType`, `sizeInGiB`, `encrypted` e `kmsKeyId`. La configurazione specificata nel file JSON viene utilizzata per creare e allegare un volume EBS all'attività autonoma.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "volumeConfigurations": [
        {
            "name": "datadir",
            "managedEBSVolume": {
                "volumeType": "gp3",
                "sizeInGiB": 100,
                "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
                "encrypted": true,
                "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            }
        }
   ]
}
```

## Configurare un volume al momento della creazione del servizio
<a name="ebs-create-service"></a>

Il seguente frammento mostra la sintassi per configurare i volumi di Amazon EBS per l'allegato alle attività gestite da un servizio. I volumi provengono dallo snapshot specificato utilizzando il parametro `snapshotId` a una velocità di 200 MiB/s. La configurazione specificata nel file JSON viene utilizzata per creare e allegare un volume EBS a ogni attività gestita da un servizio.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "serviceName": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": [
        {
            "name": "myEbsVolume",
            "managedEBSVolume": {
              "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
              "snapshotId": "snap-12345",
              "volumeInitializationRate": 200
            }
        }
   ]
}
```

## Configura un volume al momento dell'aggiornamento del servizio
<a name="ebs-update-service"></a>

Il seguente frammento di codice JSON mostra la sintassi per l'aggiornamento di un servizio che in precedenza non aveva volumi Amazon EBS configurati per il collegamento alle attività. È necessario fornire l'ARN di una revisione della definizione dell'attività con `configuredAtLaunch` impostato su `true`. Il seguente frammento di codice JSON mostra la sintassi per la configurazione delle impostazioni `volumeType`, `sizeInGiB`, `throughput`, `iops` e `filesystemType`. Questa configurazione viene utilizzata per creare e allegare un volume EBS a ogni attività gestita da un servizio.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "service": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": [
        {
            "name": "myEbsVolume",
            "managedEBSVolume": {
              "roleArn":"arn:aws:iam::1111222333:role/ecsInfrastructureRole",
               "volumeType": "gp3",
                "sizeInGiB": 100,
                 "iops": 3000, 
                "throughput": 125, 
                "filesystemType": "ext4"
            }
        }
   ]
}
```

### Configurare un servizio per non utilizzare più i volumi Amazon EBS
<a name="ebs-service-disable-ebs"></a>

Il seguente frammento di codice JSON mostra la sintassi per aggiornare un servizio in modo che non utilizzi più i volumi Amazon EBS. È necessario fornire l'ARN di una definizione di attività con `configuredAtLaunch` impostato su `false` o una definizione di attività senza il parametro `configuredAtLaunch`. È inoltre necessario fornire un oggetto `volumeConfigurations` vuoto.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "service": "mysvc",
   "desiredCount": 2,
   "volumeConfigurations": []
}
```

## Policy di terminazione per i volumi di Amazon EBS
<a name="ebs-volume-termination-policy"></a>

Quando si termina un'attività Amazon ECS, questo utilizza il valore `deleteOnTermination` per determinare se il volume Amazon EBS associato all'attività terminata deve essere eliminato. Per impostazione predefinita, i volumi EBS collegati alle attività vengono eliminati quando l'attività viene terminata. Per le attività autonome, è possibile modificare questa impostazione per preservare il volume al termine dell'attività.

**Nota**  
I volumi collegati alle attività gestite da un servizio non vengono conservati e vengono sempre eliminati al termine della stessa.

## Tag volumi Amazon EBS
<a name="ebs-volume-tagging"></a>

È possibile etichettare i volumi Amazon EBS utilizzando l'oggetto `tagSpecifications`. Utilizzando l'oggetto, è possibile fornire tag personalizzati e impostare la propagazione dei tag dalla definizione dell'attività o dal servizio, a seconda che il volume sia collegato a un'attività autonoma o a un'attività in un servizio. Il numero massimo di tag che è possibile collegare a un volume è pari a 50.

**Importante**  
Amazon ECS allega automaticamente i tag `AmazonECSManaged` e `AmazonECSCreated` riservati a un volume Amazon EBS. Ciò significa che è possibile controllare l'allegato di un massimo di 48 tag aggiuntivi a un volume. Questi tag aggiuntivi possono essere tag definiti dall'utente, gestiti da ECS o propagati.

Se si desidera aggiungere tag gestiti da Amazon ECS al proprio volume, è necessario impostare `enableECSManagedTags` su `true` nella propria chiamata `UpdateService`, `CreateService`, `RunTask` o `StartTask`. Se si attivano i tag gestiti da Amazon ECS, quest'ultimo etichetterà automaticamente il volume con informazioni su cluster e servizi (`aws:ecs:clusterName` e `aws:ecs:serviceName`). Per ulteriori informazioni sull'etichettare le risorse di Amazon ECS, consultare [Tagging your Amazon ECS resources](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html).

Il seguente frammento di codice JSON mostra la sintassi per etichettare ogni volume Amazon EBS collegato a ciascuna attività in un servizio con un tag definito dall'utente. Per utilizzare questo esempio per la creazione di un servizio, sostituisci `user input placeholders` con le tue informazioni.

```
{
   "cluster": "mycluster",
   "taskDefinition": "mytaskdef",
   "serviceName": "mysvc",
   "desiredCount": 2,
   "enableECSManagedTags": true,
   "volumeConfigurations": [
        {
            "name": "datadir",
            "managedEBSVolume": {
                "volumeType": "gp3",
                "sizeInGiB": 100,
                 "tagSpecifications": [
                    {
                        "resourceType": "volume", 
                        "tags": [
                            {
                                "key": "key1", 
                                "value": "value1"
                            }
                        ], 
                        "propagateTags": "NONE"
                    }
                ],
                "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole",
                "encrypted": true,
                "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
            }
        }
   ]
}
```

**Importante**  
È necessario specificare un tipo di risorsa `volume` per etichettare i volumi Amazon EBS.

# Prestazioni dei volumi Amazon EBS per le attività on-demand di Fargate
<a name="ebs-fargate-performance-limits"></a>

Il volume, gli IOPS e il throughput di base di Amazon EBS disponibili per un'attività on demand di Fargate dipendono dal numero totale di unità CPU richieste per l'attività. Se si richiede 0,25, 0,5 o 1 unità CPU virtuale (vCPU) per l'attività Fargate, consigliamo di configurare un volume SSD per uso generico (`gp2` o`gp3`) o un volume Unità disco rigido (HDD) (`st1` o `sc1`). Se si richiede più di 1 vCPU per l'attività Fargate, i seguenti limiti di prestazioni di base si applicano a un volume Amazon EBS collegato all'attività. È possibile ottenere temporaneamente prestazioni EBS superiori ai seguenti limiti. Consigliamo, tuttavia, di pianificare il carico di lavoro in base a questi limiti.


| Unità CPU richieste (in v) CPUs | IOPS di base di Amazon EBS (16 KiB I/O) | Throughput di base di Amazon EBS (in, MiBps 128 KB di I/O) | Larghezza di banda della rete di base (in Mbps) | 
| --- | --- | --- | --- | 
| 2 | 3.000 | 75 | 360 | 
| 4 | 5.000 | 120 | 1.150 | 
| 8 | 10.000 | 250 | 2.300 | 
| 16 | 15.000 | 500 | 4.500 | 

**Nota**  
 Quando si configura un volume Amazon EBS per il collegamento a un'attività Fargate, il limite di prestazioni di Amazon EBS per l'attività Fargate viene condiviso tra l'archivio temporaneo dell'attività e il volume allegato.

# Prestazioni dei volumi Amazon EBS per le attività EC2
<a name="ebs-fargate-performance-limits-ec2"></a>

Amazon EBS fornisce i tipi di volume, che presentano caratteristiche di prestazioni e prezzi diversi, consentendo di definire le prestazioni e i costi di archiviazione in base alle esigenze imposte dalle proprie applicazioni. Per informazioni sulle prestazioni, inclusi IOPS per volume e throughput per volume, consultare [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) nella *Guida per l'utente di Amazon Elastic Block Store*.

# Prestazioni dei volumi Amazon EBS per le attività di istanze gestite da Amazon ECS
<a name="ebs-managed-instances-performance"></a>

Amazon EBS fornisce i tipi di volume, che presentano caratteristiche di prestazioni e prezzi diversi, consentendo di definire le prestazioni e i costi di archiviazione in base alle esigenze imposte dalle proprie applicazioni. Per informazioni sulle prestazioni, inclusi IOPS per volume e throughput per volume, consultare [Amazon EBS volume types](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) nella *Guida per l'utente di Amazon Elastic Block Store*.

# Risoluzione dei problemi relativi ai volumi di Amazon EBS collegati alle attività di Amazon ECS
<a name="troubleshoot-ebs-volumes"></a>

Potrebbe essere necessario risolvere i problemi o verificare il collegamento dei volumi Amazon EBS alle attività di Amazon ECS.

## Verificare lo stato di collegamento dei volumi
<a name="troubleshoot-ebs-volumes-location"></a>

Puoi utilizzare il Console di gestione AWS per visualizzare lo stato dell'allegato di un volume Amazon EBS a un'attività Amazon ECS. Se l'attività inizia e l'allegato fallisce, verrà visualizzato anche un motivo dello stato che si può utilizzare per risolvere il problema. Il volume creato verrà eliminato e l'operazione verrà interrotta. Per ulteriori informazioni sui motivi di stato, consultare [Motivi dello stato dell'allegato del volume Amazon EBS alle attività di Amazon ECS](troubleshoot-ebs-volumes-scenarios.md).

**Per visualizzare lo stato degli allegati di un volume e il motivo dello stato utilizzando la console**

1. [Apri la console nella versione 2. https://console.aws.amazon.com/ecs/](https://console.aws.amazon.com/ecs/v2)

1. Nella pagina **Cluster**, scegliere il cluster in cui è in esecuzione l'attività. Viene visualizzata la pagina dei dettagli del cluster.

1. Nella pagina dettagli del cluster, scegliere la scheda **Attività**.

1. Scegliere l'attività per la quale si desidera visualizzare lo stato degli allegati del volume. Potrebbe essere necessario utilizzare **Filtra lo stato desiderato** e scegliere **Arrestato** se l'attività che si desidera esaminare è stata interrotta.

1. Nella pagina dettagli dell'attività, scegliere la scheda **Volumi**. Sarà possibile visualizzare lo stato degli allegati del volume Amazon EBS in **Stato degli allegati**. Se il volume non riesce a collegarsi all'attività, è possibile scegliere lo stato in **Stato degli allegati** per visualizzare la causa dell'errore.

Puoi anche visualizzare lo stato degli allegati al volume di un'attività e il motivo dello stato associato utilizzando l'[DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)API.

## Errori di servizio e attività
<a name="service-task-failures"></a>

È possibile che si verifichino errori di servizio o attività non specifici dei volumi Amazon EBS che possono influire sull'allegato del volume. Per ulteriori informazioni, consultare la pagina
+ [Messaggi di evento relativi ai servizi](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-event-messages.html)
+ [Codici di errore dell'attività arrestata](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/stopped-task-error-codes.html)
+ [Motivi di errore dell'API](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html)

# Il contenitore non può scrivere sul volume Amazon EBS
<a name="troubleshoot-non-root-container"></a>

Utente non root senza autorizzazioni adeguate  
Quando specifichi un utente non root nella definizione del contenitore, Amazon ECS configura automaticamente il volume con autorizzazioni basate sul gruppo per consentire l'accesso in scrittura. Tuttavia, se continui a riscontrare problemi di autorizzazione:  
+ Verifica che il `user` parametro sia specificato correttamente nella definizione del contenitore utilizzando il formato `uid:gid` (ad esempio,`1001:1001`).
+ Assicurati che l'immagine del contenitore non prevalga sulle autorizzazioni dell'utente dopo il montaggio del volume.
+ Verifica che l'applicazione sia in esecuzione con l'ID utente previsto esaminando i log del contenitore o utilizzando Amazon ECS Exec per ispezionare il contenitore in esecuzione.

Utente root con problemi di autorizzazione  
Se non è specificato alcun utente nella definizione del contenitore, il contenitore funziona come root e dovrebbe avere pieno accesso al volume. Se riscontri problemi:  
+ Verifica che il volume sia montato correttamente controllando i punti di montaggio all'interno del contenitore.
+ Assicurati che il volume non sia configurato come di sola lettura nella configurazione del punto di montaggio.

Attività in più contenitori con utenti diversi  
Nelle attività con più contenitori eseguiti come utenti diversi, Amazon ECS gestisce automaticamente le autorizzazioni di gruppo per consentire a tutti gli utenti specificati di scrivere sul volume. Se i contenitori non sono in grado di scrivere:  
+ Verifica che tutti i contenitori che richiedono l'accesso in scrittura abbiano il `user` parametro configurato correttamente.
+ Verificate che il volume sia montato in tutti i contenitori che devono accedervi.

Per ulteriori informazioni sulla configurazione degli utenti nelle definizioni dei container, consulta [Parametri di definizione delle attività di Amazon ECS per Fargate](https://docs.aws.amazon.com/./task_definition_parameters.html). 

# Motivi dello stato dell'allegato del volume Amazon EBS alle attività di Amazon ECS
<a name="troubleshoot-ebs-volumes-scenarios"></a>

Utilizza il seguente riferimento per risolvere i problemi che potresti riscontrare sotto forma di motivi di stato Console di gestione AWS durante la configurazione dei volumi Amazon EBS da allegare alle attività di Amazon ECS. Per ulteriori informazioni sulla localizzazione di questi motivi di stato nella console, consultare [Verificare lo stato di collegamento dei volumi](troubleshoot-ebs-volumes.md#troubleshoot-ebs-volumes-location).

ECS non è stato in grado di assumere il ruolo dell'infrastruttura ECS configurato 'arn:aws:iam: ::role/ '. *111122223333* *ecsInfrastructureRole* Verificare che il ruolo passato abbia un rapporto di fiducia adeguato con Amazon ECS  
Questo motivo dello stato viene visualizzato nei seguenti scenari.  
+  Fornire un ruolo IAM senza la necessaria policy di attendibilità allegata. Amazon ECS non può accedere al ruolo IAM dell'infrastruttura Amazon ECS che è stato fornito se il ruolo non dispone della policy di attendibilità necessaria. L'attività può rimanere bloccata nello stato `DEPROVISIONING`. Per ulteriori informazioni sulla policy di attendibilità necessaria, consultare [Ruolo IAM dell’infrastruttura Amazon ECS](infrastructure_IAM_role.md).
+ L'utente IAM non è autorizzato a trasferire il ruolo dell'infrastruttura Amazon ECS ad Amazon ECS. L'attività può rimanere bloccata nello stato `DEPROVISIONING`. Per evitare questo problema, è possibile allegare l'autorizzazione `PassRole` al proprio utente. Per ulteriori informazioni, consultare [Ruolo IAM dell’infrastruttura Amazon ECS](infrastructure_IAM_role.md).
+ Il ruolo IAM non dispone delle autorizzazioni necessarie per gli allegati del volume Amazon EBS. L'attività può rimanere bloccata nello stato `DEPROVISIONING`. Per ulteriori informazioni sulle autorizzazioni specifiche necessarie per collegare i volumi Amazon EBS alle attività, consultare [Ruolo IAM dell’infrastruttura Amazon ECS](infrastructure_IAM_role.md).
È possibile anche visualizzare questo messaggio di errore a causa di un ritardo nella propagazione dei ruoli. Se il problema non si risolve riprovando a utilizzare il ruolo dopo aver atteso qualche minuto, è possibile che tu abbia configurato erroneamente la policy di attendibilità per il ruolo.

ECS non è riuscito a configurare il volume EBS. Incontro IdempotentParameterMismatch «; «Il token client che hai fornito è associato a una risorsa che è già stata eliminata. Utilizzare un token client diverso.”  
I seguenti scenari AWS KMS chiave possono portare alla `IdempotentParameterMismatch` visualizzazione di un messaggio:  
+ Specificare un ARN, un ID o un alias della chiave KMS che non è valido. In questo scenario, l'attività potrebbe sembrare avviata correttamente, ma alla fine non riesce perché AWS autentica la chiave KMS in modo asincrono. Per ulteriori informazioni, consultare [Amazon EBS encryption](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-encryption.html) nella *Guida per l'utente di Amazon EC2*.
+ Fornire una chiave gestita dal cliente priva delle autorizzazioni che consentono al ruolo IAM dell'infrastruttura Amazon ECS di utilizzare la chiave per la crittografia. Per evitare problemi di autorizzazione relativi alle policy chiave, consulta la policy AWS KMS chiave di esempio in [Data encryption for Amazon EBS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-kms-encryption) Volumes.
Puoi configurare Amazon EventBridge per inviare eventi di volume Amazon EBS e eventi di modifica dello stato delle attività di Amazon ECS a una destinazione, ad esempio gruppi Amazon CloudWatch . È quindi possibile utilizzare questi eventi per identificare lo specifico problema relativo alla chiave gestita dal cliente che ha interessato l'allegato del volume. Per ulteriori informazioni, consultare la pagina  
+  [Come posso creare un gruppo di CloudWatch log da utilizzare come destinazione per una EventBridge regola?](https://repost.aws/knowledge-center/cloudwatch-log-group-eventbridge) su AWS Re:post.
+ [Task state change events](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_cwe_events.html#ecs_task_events).
+ [ EventBridge Eventi Amazon per Amazon EBS nella Guida](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-cloud-watch-events.html) per l'*utente di Amazon EBS.*

ECS è scaduto durante la configurazione dell'allegato del volume EBS all'attività.  
I seguenti scenari di formato del file system generano questo messaggio.  
+ Il formato del file system specificato durante la configurazione non è compatibile con il [sistema operativo dell'attività](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RuntimePlatform.html).
+ Configurare un volume Amazon EBS da creare da uno snapshot e il formato del file system dello snapshot non è compatibile con il sistema operativo dell'attività. Per i volumi creati da una snapshot, è necessario specificare lo stesso tipo di file system utilizzato dal volume al momento della creazione della snapshot.
È possibile utilizzare i log degli agenti container di Amazon ECS per risolvere il problema di questo messaggio per le attività EC2. Per ulteriori informazioni, consultare [Amazon ECS log file locations](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/logs.html) e [Amazon ECS log collector](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-logs-collector.html).

# Usare i volumi Amazon EFS con Amazon ECS
<a name="efs-volumes"></a>

Amazon Elastic File System (Amazon EFS) offre archiviazione file semplice e scalabile da utilizzare con i processi Amazon ECS. Con Amazon EFS, la capacità di storage è elastica. La capacità di storage aumenta e si riduce automaticamente quando si aggiungono e si rimuovono i file. Le tue applicazioni possono disporre dello storage di cui hanno bisogno nel momento in cui ne hanno bisogno.

Puoi utilizzare i file system Amazon EFS con Amazon ECS per esportare i dati del file system all'interno del tuo parco istanze di container. In questo modo, le tue attività hanno accesso allo stesso storage persistente, indipendentemente dall'istanza in cui si trovano. Inoltre, per utilizzare il file system, le tue definizioni di attività devono fare riferimento ai montaggi di volume inerenti l'istanza di container.

Per un tutorial, vedere [Configurazione dei file system Amazon EFS per Amazon ECS utilizzando la console](tutorial-efs-volumes.md).

## Considerazioni
<a name="efs-volume-considerations"></a>

 Quando usi i volumi Amazon EFS, tieni presente quanto segue:
+ Per le attività che utilizzano EC2, il supporto del file system Amazon EFS è stato aggiunto come anteprima pubblica con l'AMI ottimizzata per Amazon ECS versione `20191212` con l'agente del container versione 1.35.0. Tuttavia, il supporto del file system Amazon EFS è entrato nella disponibilità generale con l'AMI ottimizzata per Amazon ECS versione `20200319` con l'agente del container versione 1.38.0, che conteneva il punto di accesso Amazon EFS e le funzionalità di autorizzazione IAM. Per utilizzare queste funzionalità, ti consigliamo di utilizzare la versione AMI ottimizzata per Amazon ECS `20200319` o versioni successive. Per ulteriori informazioni, consulta [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md).
**Nota**  
Se crei la tua AMI, è necessario utilizzare l'agente del container 1.38.0 o versione successiva, `ecs-init` versione 1.38.0-1 o successiva ed emettere i seguenti comandi sull'istanza Amazon EC2 per abilitare il plug-in del volume Amazon ECS. I comandi dipendono dal fatto che si stia usando Amazon Linux 2 o Amazon Linux come immagine di base.  
Amazon Linux 2  

  ```
  yum install amazon-efs-utils
  systemctl enable --now amazon-ecs-volume-plugin
  ```
Amazon Linux  

  ```
  yum install amazon-efs-utils
  sudo shutdown -r now
  ```
+ Per le attività ospitate su Fargate, i file system Amazon EFS sono supportati sulla versione della piattaforma 1.4.0 o successiva (Linux). Per ulteriori informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).
+ Quando utilizzi volumi Amazon EFS per attività ospitate su Fargate, Fargate crea un container supervisor responsabile della gestione del volume Amazon EFS. Il container supervisor utilizza una piccola quantità di memoria e di CPU dell'attività. Il container supervisor è visibile quando si sottopone a query l'endpoint dei metadati dell'attività versione 4. Inoltre, è visibile in CloudWatch Container Insights come nome del contenitore. `aws-fargate-supervisor` Per ulteriori informazioni durante l'utilizzo di EC2, consultare [Versione 4 degli endpoint dei metadati delle attività di Amazon ECS](task-metadata-endpoint-v4.md). Per ulteriori informazioni durante l'utilizzo di Fargate, consultare [Endpoint metadati delle attività Amazon ECS versione 4 per le attività su Fargate](task-metadata-endpoint-v4-fargate.md).
+ L'utilizzo di volumi Amazon EFS o la specifica di una `EFSVolumeConfiguration` non sono supportati su istanze esterne.
+ L'utilizzo dei volumi Amazon EFS è supportato per le attività che utilizzano istanze gestite da Amazon ECS.
+ Consigliamo di impostare il parametro `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` nel file di configurazione dell'agente su un valore inferiore a quello predefinito (circa 1 ora). Questa modifica aiuta a prevenire la scadenza delle credenziali di montaggio EFS e consente la pulizia dei supporti che non sono in uso.  Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).

## Utilizzo dei punti di accesso Amazon EFS
<a name="efs-volume-accesspoints"></a>

I punti di accesso Amazon EFS sono punti di accesso specifici dell'applicazione in un file system EFS per la gestione dell'accesso dell'applicazione ai set di dati condivisi. Per ulteriori informazioni sui punti di accesso Amazon EFS e su come controllare l'accesso a tali punti, consulta [Working with Amazon EFS Access Points](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) (Utilizzo dei punti di accesso Amazon EFS) nella *Guida per l'utente di Amazon Elastic File System*.

I punti di accesso possono applicare un’identità utente, inclusi i gruppi dell’utente POSIX, per tutte le richieste al file system effettuate tramite il punto di accesso. I punti di accesso possono inoltre applicare una directory root diversa per il file system. In questo modo i client possono accedere solo ai dati nella directory specificata o nelle relative sottodirectory.

**Nota**  
Quando crei un punto di accesso EFS, è necessario specificare un percorso nel file system da utilizzare come directory root. Quando si fa riferimento al file system EFS con un ID punto di accesso nella definizione di attività Amazon ECS, la directory root deve essere omessa o impostata su `/` in modo da forzare il percorso impostato sul punto di accesso EFS.

Puoi utilizzare un ruolo IAM del processo Amazon ECS per imporre che applicazioni specifiche utilizzino un punto di accesso specifico. Combinando le policy IAM con i punti di accesso, puoi fornire accesso sicuro a set di dati specifici per le applicazioni. Per ulteriori informazioni su come utilizzare i ruoli IAM dell'attività, consulta [Ruolo IAM dell'attività Amazon ECS](task-iam-roles.md).

# Best practice per l'utilizzo di volumi Amazon EFS con Amazon ECS
<a name="efs-best-practices"></a>

Prendere nota dei seguenti consigli di best practice quando si utilizza Amazon EFS con Amazon ECS.

## Sicurezza e controlli di accesso per i volumi Amazon EFS
<a name="storage-efs-security"></a>

Amazon EFS offre funzionalità di controllo degli accessi che è possibile utilizzare per garantire che i dati archiviati in un file system Amazon EFS siano sicuri e accessibili solo dalle applicazioni che ne hanno bisogno. È possibile proteggere i dati abilitando la crittografia dei dati memorizzati su disco e in transito. Per ulteriori informazioni, consulta [Crittografia dati in Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/encryption.html) nella *Amazon Elastic File System User Guide*.

Oltre alla crittografia dei dati, è possibile anche utilizzare Amazon EFS per limitare l'accesso a un file system. Esistono tre modi per implementare il controllo degli accessi in EFS.
+ **Gruppi di sicurezza**: con gli obiettivi di montaggio di Amazon EFS, è possibile configurare un gruppo di sicurezza utilizzato per consentire e negare il traffico di rete. È possibile configurare il gruppo di sicurezza collegato ad Amazon EFS per consentire il traffico NFS (porta 2049) dal gruppo di sicurezza collegato alle istanze Amazon ECS o, quando si utilizza la modalità di rete `awsvpc`, l'attività di Amazon ECS.
+ **IAM**: è possibile limitare l'accesso a un file system Amazon EFS utilizzando IAM. Una volta configurate, le attività di Amazon ECS richiedono un ruolo IAM per l'accesso al file system per montare un file system EFS. Per ulteriori informazioni, consultare [Using IAM to control file system data access](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html) nella *Guida per l'utente di Amazon Elastic File System*.

  Le policy IAM possono inoltre applicare condizioni predefinite, ad esempio richiedere a un client di utilizzare TLS durante la connessione a un file system Amazon EFS. Per ulteriori informazioni, consultare [Amazon EFS condition keys for clients](https://docs.aws.amazon.com/efs/latest/ug/iam-access-control-nfs-efs.html#efs-condition-keys-for-nfs), nella *Guida per l'utente di Amazon Elastic File System*.
+ **Punti di accesso Amazon EFS**: i punti di accesso di Amazon EFS sono punti di accesso specifici dell'applicazione in un file system Amazon EFS. È possibile utilizzare i punti di accesso per applicare un'identità utente, inclusi i gruppi dell'utente POSIX, per tutte le richieste al file system effettuate tramite il punto di accesso. I punti di accesso possono inoltre applicare una directory root diversa per il file system. In questo modo i client possono accedere solo ai dati nella directory specificata o nelle relative sottodirectory.

### Policy IAM
<a name="storage-efs-security-iam"></a>

È possibile utilizzare le policy IAM per controllare l'accesso al file system Amazon EFS.

È possibile specificare le seguenti operazioni per i client in un file system utilizzando una policy del file system.


| Azione | Description | 
| --- | --- | 
|  `elasticfilesystem:ClientMount`  |  Fornisce un accesso in sola lettura a un file system.  | 
|  `elasticfilesystem:ClientWrite`  |  Fornisce le autorizzazioni di scrittura su un file system.  | 
|  `elasticfilesystem:ClientRootAccess`  |  Fornisce la possibilità di utilizzare l'utente root quando si accede a un file system.  | 

È necessario specificare ogni azione in una policy. Le policy possono essere definite nei seguenti modi:
+ Basata su client: collega la policy al ruolo dell'attività

  Impostare l'opzione **Autorizzazione IAM** quando si crea la definizione dell'attività. 
+ Basata sulle risorse: collega la policy al file system Amazon EFS

  Se la policy basata sulle risorse non esiste, per impostazione predefinita al momento della creazione del file system l'accesso è concesso a tutti i principali (\$1). 

Quando si imposta l'opzione **Autorizzazione IAM**, uniamo la policy associata al ruolo dell'attività e quella basata sulle risorse Amazon EFS. L'opzione **Autorizzazione IAM** trasmette l'identità dell'attività (il ruolo dell'attività) con la policy ad Amazon EFS. Ciò consente alla policy basata sulle risorse di Amazon EFS di avere un contesto per l'utente o il ruolo IAM specificato nella policy. Se non imposti l'opzione, la policy a livello di risorsa di Amazon EFS identifica l'utente IAM come “anonimo”.

Prendi in considerazione l'implementazione di tutti e tre i controlli di accesso su un file system Amazon EFS per la massima sicurezza. Ad esempio, puoi configurare il gruppo di sicurezza collegato a un punto di montaggio Amazon EFS per consentire solo il traffico NFS in ingresso da un gruppo di sicurezza associato all'istanza di container o all'attività Amazon ECS. Inoltre, è possibile configurare Amazon EFS per richiedere un ruolo IAM per accedere al file system, anche se la connessione proviene da un gruppo di sicurezza consentito. Infine, è possibile utilizzare i punti di accesso di Amazon EFS per applicare le autorizzazioni utente POSIX e specificare le directory root per le applicazioni.

Il seguente frammento di definizione delle attività mostra come montare un file system Amazon EFS utilizzando un punto di accesso.

```
"volumes": [
    {
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-1234",
        "authorizationConfig": {
          "accessPointId": "fsap-1234",
          "iam": "ENABLED"
        },
        "transitEncryption": "ENABLED",
        "rootDirectory": ""
      },
      "name": "my-filesystem"
    }
]
```

## Prestazioni di volume Amazon EFS
<a name="storage-efs-performance"></a>

Amazon EFS offre due modalità di prestazioni: i I/O. General Purpose is suitable for latency-sensitive applications such as content management systems and CI/CD tools. In contrast, Max I/O file system General Purpose e Max sono adatti per carichi di lavoro come analisi dei dati, elaborazione multimediale e apprendimento automatico. Questi carichi di lavoro devono eseguire operazioni parallele da centinaia o addirittura migliaia di container e richiedono il throughput aggregato e gli IOPS più elevati possibili. Per ulteriori informazioni, consultare [Amazon EFS performance modes](https://docs.aws.amazon.com/efs/latest/ug/performance.html#performancemodes) nella *Guida per l'utente di Amazon Elastic File System*.

Alcuni carichi di lavoro sensibili alla latenza richiedono sia i I/O livelli più alti forniti dalla modalità Max I/O Performance sia la latenza più bassa fornita dalla modalità a prestazioni General Purpose. Per questo tipo di carico di lavoro, consigliamo di creare più file system in modalità prestazionale per uso generico. In questo modo, è possibile distribuire il carico di lavoro dell'applicazione su tutti questi file system, purché il carico di lavoro e le applicazioni possano supportarlo.

## Throughput dei volumi Amazon EFS
<a name="storage-efs-performance-throughput"></a>

Tutti i file system Amazon EFS hanno un throughput misurato associato determinato dalla quantità di throughput assegnato per i file system che utilizzano *Throughput assegnato* o dalla quantità di dati archiviati nella classe di archiviazione EFS Standard o a zona unica per i file system che utilizzano *Throughput di bursting*. Per ulteriori informazioni, consultare [Understanding metered throughput](https://docs.aws.amazon.com/efs/latest/ug/performance.html#read-write-throughput) nella *Guida per l'utente di Amazon Elastic File System*.

La modalità di throughput predefinita per i file system Amazon EFS è la modalità bursting. Con la modalità bursting, il throughput disponibile per un file system aumenta o diminuisce man mano che quest'ultimo cresce. Poiché i carichi di lavoro basati su file in genere registrano picchi, richiedendo livelli di throughput elevati per certi periodi di tempo e livelli di throughput inferiori per il resto, Amazon EFS è progettato per consentire livelli di throughput elevati per certi periodi di tempo. Inoltre, poiché molti carichi di lavoro richiedono un elevato livello di lettura, le operazioni di lettura vengono misurate con un rapporto 1:3 rispetto ad altre operazioni NFS (come la scrittura). 

Tutti i file system Amazon EFS offrono prestazioni di base costanti di 50 MB/s per ogni TB di storage Amazon EFS Standard o Amazon EFS One Zone. Tutti i file system (indipendentemente dalle dimensioni) possono arrivare a 100 MB/s. File systems with more than 1TB of EFS Standard or EFS One Zone storage can burst to 100 MB/s for each TB. Because read operations are metered at a 1:3 ratio, you can drive up to 300 MiBs/s per ogni TIB di velocità di lettura. Man mano che aggiungi dati al file system, il throughput massimo disponibile per il file system scala in modo lineare e automatico con l'archivio nella classe di archiviazione Amazon EFS Standard. Se è necessaria una quantità maggiore di throughput rispetto a quella che si può ottenere con la quantità di dati archiviati, è possibile configurare il Throughput assegnato sulla quantità specifica richiesta dal carico di lavoro.

Il throughput del file system è condiviso tra tutte le istanze di Amazon EC2 connesse a un file system. Ad esempio, un file system da 1 TB in grado di raggiungere il 100% MB/s del throughput può generare 100 unità MB/s da una singola istanza di Amazon EC2, ognuna con una velocità di 10 MB/s. Per ulteriori informazioni, consulta [Amazon EFS performance](https://docs.aws.amazon.com/efs/latest/ug/performance.html) nella *Guida per l'utente di Amazon Elastic File System*.

## Ottimizzazione dei costi per i volumi di Amazon EFS
<a name="storage-efs-costopt"></a>

Amazon EFS semplifica la scalabilità dell'archiviazione. I file system di Amazon EFS crescono automaticamente man mano che aggiungi più dati. Specialmente con la modalità *Throughput di bursting* di Amazon EFS, il throughput su Amazon EFS scala mentre le dimensioni del file system nella classe di archiviazione Standard aumentano. Per migliorare il throughput senza pagare costi aggiuntivi per il throughput assegnato su un file system EFS, è possibile condividere un file system Amazon EFS con più applicazioni. Utilizzando i punti di accesso Amazon EFS, puoi implementare l'isolamento dell'archiviazione nei file system Amazon EFS condivisi. In questo modo, anche se le applicazioni condividono ancora lo stesso file system, possono accedere ai dati solo con l'autorizzazione.

Man mano che i dati crescono, Amazon EFS ti aiuta a spostare automaticamente i file a cui si accede raramente in una classe di archiviazione inferiore. La classe di archiviazione Accesso Infrequente Amazon EFS Standard (IA) riduce i costi di archiviazione per i file ai quali non viene effettuato l'accesso ogni giorno. Ciò avviene senza sacrificare disponibilità elevata, durabilità elevata, elasticità e accesso al file system POSIX disponibili tramite Amazon EFS. Per ulteriori informazioni, consultare [EFS storage classes](https://docs.aws.amazon.com/efs/latest/ug/features.html) nella *Guida per l'utente di Amazon Elastic File System*.

Prendi in considerazione l'utilizzo delle policy del ciclo di vita di Amazon EFS per risparmiare automaticamente denaro spostando i file a cui si accede raramente nell'archivio di Amazon EFS IA. Per ulteriori informazioni, consulta [Amazon EFS lifecycle management](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html) nella *Guida per l'utente di Amazon Elastic File System*.

Quando si crea un file system Amazon EFS, è possibile scegliere se Amazon EFS replica i dati su più zone di disponibilità (Standard) o se li archivia in modo ridondante all'interno di un'unica zona di disponibilità. La classe di archiviazione Amazon EFS a zona unica può ridurre i costi di archiviazione di un margine significativo rispetto alle classi di archiviazione Amazon EFS Standard. Prendere in considerazione l'utilizzo della classe di archiviazione Amazon EFS a zona unica per carichi di lavoro che non richiedono resilienza Multi-AZ. È possibile ridurre ulteriormente il costo dell'archiviazione Amazon EFS a zona unica spostando i file a cui si accede raramente su Accesso infrequente a zona unica Amazon EFS. Per ulteriori informazioni, consulta la sezione [Amazon EFS Infrequent Access](https://aws.amazon.com/efs/features/infrequent-access/).

## Protezione dei dati dei volumi Amazon EFS
<a name="storage-efs-dataprotection"></a>

Amazon EFS archivia i dati in modo ridondante su più zone di disponibilità per file system utilizzando classi di archiviazione standard. Se si selezionano le classi di archiviazione Amazon EFS a zona unica, i dati vengono archiviati in modo ridondante all'interno di una singola zona di disponibilità. Inoltre, Amazon EFS è progettato per fornire il 99,999999999% (11 volte 9) di durabilità in un determinato anno.

Come per qualsiasi ambiente, è consigliabile disporre di un backup e creare protezioni contro l'eliminazione accidentale. Per i dati di Amazon EFS, tale best practice include un backup funzionante e regolarmente testato utilizzando AWS Backup. I file system che utilizzano le classi di archiviazione Amazon EFS a zona unica sono configurati per eseguire automaticamente il backup dei file per impostazione predefinita al momento della creazione del file system, a meno che non si scelga di disabilitare questa funzionalità. Per ulteriori informazioni, consultare [Backing up EFS file systems](https://docs.aws.amazon.com/efs/latest/ug/awsbackup.html) della *Guida per l'utente di Amazon Elastic File System*.

# Specificare di un file system Amazon EFS nella definizione di un'attività Amazon ECS
<a name="specify-efs-config"></a>

Per utilizzare i volumi del file system Amazon EFS per i container, è necessario specificare le configurazioni di volume e punto di montaggio nella definizione di attività. Il seguente frammento JSON della definizione di attività illustra la sintassi degli oggetti `volumes` e `mountPoints` per un container.

```
{
    "containerDefinitions": [
        {
            "name": "container-using-efs",
            "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
            "entryPoint": [
                "sh",
                "-c"
            ],
            "command": [
                "ls -la /mount/efs"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEfsVolume",
                    "containerPath": "/mount/efs",
                    "readOnly": true
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "myEfsVolume",
            "efsVolumeConfiguration": {
                "fileSystemId": "fs-1234",
                "rootDirectory": "/path/to/my/data",
                "transitEncryption": "ENABLED",
                "transitEncryptionPort": integer,
                "authorizationConfig": {
                    "accessPointId": "fsap-1234",
                    "iam": "ENABLED"
                }
            }
        }
    ]
}
```

`efsVolumeConfiguration`  
Tipo: oggetto  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizzano volumi Amazon EFS.    
`fileSystemId`  
Tipo: stringa  
Obbligatorio: sì  
L'ID del file system Amazon EFS da utilizzare.  
`rootDirectory`  
▬Tipo: stringa  
Obbligatorio: no  
La directory all'interno del file system Amazon EFS da montare come directory principale all'interno dell'host. Se questo parametro viene omesso, viene utilizzata la radice del volume Amazon EFS. La specifica di `/` avrà lo stesso effetto dell'omissione di questo parametro.  
Se un punto di accesso EFS è specificato in `authorizationConfig`, il parametro della directory root deve essere omesso o impostato su `/` per applicare il percorso impostato sul punto di accesso EFS.  
`transitEncryption`  
Tipo: String  
Valori validi: `ENABLED` \$1 `DISABLED`  
Obbligatorio: no  
Specifica se abilitare o meno la crittografia per i dati Amazon EFS in transito tra l'host Amazon ECS e il server Amazon EFS. Se si utilizza l'autorizzazione IAM di Amazon EFS, è necessario abilitare la crittografia di transito. Se questo parametro viene omesso, viene utilizzato il comportamento predefinito di `DISABLED`. Per ulteriori informazioni, consulta [Encrypting Data in Transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`transitEncryptionPort`  
Tipo: Integer  
Obbligatorio: no  
La porta da utilizzare per l'invio di dati crittografati tra l'host Amazon ECS e il server Amazon EFS. Se non si specifica una porta di crittografia di transito, verrà utilizzata la strategia di selezione della porta utilizzata dall'helper per il montaggio di Amazon EFS. Per ulteriori informazioni, consulta [Assistente per il montaggio di EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`authorizationConfig`  
Tipo: oggetto  
Obbligatorio: no  
I dettagli di configurazione dell'autorizzazione per il file system Amazon EFS.    
`accessPointId`  
▬Tipo: stringa  
Obbligatorio: no  
L'ID del punto di accesso da utilizzare. Se viene specificato un punto di accesso, il valore della directory root specificato in `efsVolumeConfiguration` deve essere omesso o impostato su `/` per applicare il percorso impostato sul punto di accesso EFS. Se si utilizza un punto di accesso, la crittografia di transito deve essere abilitata in `EFSVolumeConfiguration`. Per ulteriori informazioni, consulta [Utilizzo dei punti di accesso Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`iam`  
Tipo: String  
Valori validi: `ENABLED` \$1 `DISABLED`  
Obbligatorio: no  
 Specifica se utilizzare o meno il ruolo IAM dell'attività Amazon ECS riportato in una definizione di attività durante il montaggio del file system Amazon EFS. Se abilitato, la crittografia di transito deve essere abilitata nella casella `EFSVolumeConfiguration`. Se questo parametro viene omesso, viene utilizzato il comportamento predefinito di `DISABLED`. Per ulteriori informazioni consulta [Ruoli IAM per le attività](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

# Configurazione dei file system Amazon EFS per Amazon ECS utilizzando la console
<a name="tutorial-efs-volumes"></a>

Informazioni su come utilizzare i file system Amazon Elastic File System (Amazon EFS) con Amazon ECS.

## Fase 1: Creazione di un cluster Amazon ECS
<a name="efs-create-cluster"></a>

Utilizza la procedura seguente per creare un cluster Amazon ECS. 

**Creazione di un nuovo cluster (console Amazon ECS)**

Prima di iniziare, assegna l'autorizzazione IAM appropriata. Per ulteriori informazioni, consulta [Esempi di cluster Amazon ECS](security_iam_id-based-policy-examples.md#IAM_cluster_policies).

1. Apri la console nella [https://console.aws.amazon.com/ecs/versione 2](https://console.aws.amazon.com/ecs/v2).

1. Seleziona la Regione da utilizzare nella barra di navigazione.

1. Nel pannello di navigazione scegli **Cluster**.

1. Nella pagina **Clusters** (Cluster), scegli **Create cluster** (Crea cluster).

1. In **Configurazione del cluster**, per **Nome cluster**, inserisci `EFS-tutorial` come nome del cluster.

1. (Facoltativo) Per modificare il VPC e le sottoreti in cui vengono avviati i processi e i servizi, in **Networking** (Reti), esegui una qualunque di queste operazioni:
   + Per rimuovere una sottorete, in **Subnets** (Sottoreti), scegli **X** per ogni sottorete da rimuovere.
   + Per passare a un VPC diverso da quello **di default**, in **VPC**, scegli un **VPC** esistente, poi in **Subnets** (Sottoreti), seleziona ciascuna sottorete.

1.  Per aggiungere istanze Amazon EC2 al cluster, espandi **Infrastruttura** e seleziona **Istanze Amazon EC2**. Successivamente, configura il gruppo Auto Scaling che funge da provider di capacità:

   1. Per creare un gruppo Auto Scaling, da **Auto Scaling group (ASG)** (Gruppo di Auto Scaling (ASG)), seleziona **Create new group** (Crea nuovo gruppo) e quindi fornisci i seguenti dettagli sul gruppo:
     + Per **Sistema operativo/architettura**, seleziona Amazon Linux 2.
     + In **EC2 instance type (Tipo di istanza EC2)**, selezionare `t2.micro`.

        In **SSH key pair** (Coppia di chiavi SSH), scegli la coppia che dimostra la tua identità quando ti connetti all'istanza.
     + In **Capacità**, inserisci `1`.

1. Scegli **Create** (Crea).

## Fase 2: creazione di un gruppo di sicurezza per le istanze Amazon EC2 e il file system Amazon EFS
<a name="efs-security-group"></a>

In questa fase, crea un gruppo di sicurezza per le istanze Amazon EC2 che consenta il traffico di rete in entrata sulla porta 80 e per il file system Amazon EFS che consenta l'accesso in entrata dalle istanze di container. 

Crea un gruppo di sicurezza per le istanze Amazon EC2 con le seguenti opzioni:
+ **Nome gruppo di sicurezza**: immetti un nome univoco per il gruppo di sicurezza.
+ **VPC**: il VPC identificato in precedenza per il cluster.
+ **Regola in entrata**
  + **Tipo**: **HTTP**
  + **Origine**: **0.0.0.0/0**.

Crea un gruppo di sicurezza per il file system Amazon EFS con le seguenti opzioni:
+ **Nome gruppo di sicurezza**: immetti un nome univoco per il gruppo di sicurezza. Ad esempio, `EFS-access-for-sg-dc025fa2`.
+ **VPC**: il VPC identificato in precedenza per il cluster.
+ **Regola in entrata**
  + **Tipo**: **NFS**
  + **Origine**: **personalizzato** con l'ID del gruppo di sicurezza creato per le istanze.

Per informazioni sulla creazione di un gruppo di sicurezza, consultare [Create a security group for your Amazon EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-security-group.html) nella *Guida per l'utente di Amazon EC2*.

## Fase 3: Creazione di un file system Amazon EFS
<a name="efs-create-filesystem"></a>

In questa fase, viene creato un file system Amazon EFS.

**Come creare un file system Amazon EFS per i processi di Amazon ECS**

1. Apri la console Amazon Elastic File System all'indirizzo [https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/).

1. Scegliere **Create file system (Crea file system)**.

1. Inserisci un nome per il file system, quindi scegli il VPC in cui sono ospitate le istanze di container. Di default, ciascuna sottorete nel VPC specificato riceve un target di montaggio che utilizza il gruppo di sicurezza predefinito per tale VPC. Quindi, scegli **Personalizza**.
**Nota**  
Questo tutorial dà per scontato che il file system Amazon EFS, il cluster Amazon ECS, le istanze di container e i processi si trovano nello stesso VPC. Per ulteriori informazioni sul montaggio di un file system da un VPC diverso, consultare [Walkthrough: Mount a file system from a different VPC](https://docs.aws.amazon.com/efs/latest/ug/efs-different-vpc.html) nella *Guida per l'utente di Amazon EFS*.

1. Nella pagina **Impostazioni del file system**, configura le impostazioni facoltative, quindi in **Impostazioni delle prestazioni**, scegli **Ottimizzazione** come modalità di throughput per il file system. Dopo aver configurato le impostazioni, seleziona **Avanti**.

   1. (Opzionale) Aggiungi tag al tuo file system. Ad esempio, puoi specificare un nome di file system univoco inserendolo nella colonna **Value** (Valore) accanto alla chiave **Name** (Nome).

   1. (Facoltativo) Abilita la gestione del ciclo di vita per risparmiare denaro in storage con accessi non frequenti. Per ulteriori informazioni, consulta [Gestione del ciclo di vita EFS](https://docs.aws.amazon.com/efs/latest/ug/lifecycle-management-efs.html) nella *Amazon Elastic File System User Guide*.

   1. (Facoltativo) Abilita la crittografia. Seleziona la casella di controllo per abilitare la crittografia del file system Amazon EFS inattivo.

1. Nella pagina **Accesso di rete**, in **Target di montaggio**, sostituisci la configurazione del gruppo di sicurezza esistente per ogni zona di disponibilità con il gruppo di sicurezza creato per il file system in [Fase 2: creazione di un gruppo di sicurezza per le istanze Amazon EC2 e il file system Amazon EFS](#efs-security-group), quindi scegli **Avanti**.

1.  Non è necessario configurare la **Policy del file system** per questo tutorial, quindi puoi saltare la sezione scegliendo **Avanti**.

1. Esamina le opzioni del file system e scegli **Crea** per completare il processo.

1. Dalla schermata **File system**, registra **ID del file system**. Nel passaggio successivo, si farà riferimento a questo valore nella definizione di attività di Amazon ECS.

## Fase 4: Aggiunta di contenuti al file system Amazon EFS
<a name="efs-add-content"></a>

In questa fase, monti il file system Amazon EFS su un'istanza Amazon EC2 e aggiungi contenuto. Questo è per scopi di test in questo tutorial, per illustrare la natura persistente dei dati. Quando si utilizza questa funzione è necessario disporre della propria applicazione o di un altro metodo di scrittura dei dati nel file system Amazon EFS.

**Come creare un'istanza di Amazon EC2 e montare il file system Amazon EFS**

1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Scegliere **Launch Instance (Avvia istanza)**.

1. In **Immagini di applicazioni e sistema operativo (Amazon Machine Image)**, seleziona **AMI (HVM) di Amazon Linux 2**.

1. In **Tipo di istanza**, mantieni il tipo di istanza predefinito `t2.micro`.

1.  In **Coppia di chiavi (registrazione)**, seleziona una coppia di chiavi per l'accesso SSH all'istanza.

1. In **Impostazioni di rete**, seleziona il VPC specificato per il file system Amazon EFS e il cluster Amazon ECS. Seleziona una sottorete e il gruppo di sicurezza dell'istanza creato in [Fase 2: creazione di un gruppo di sicurezza per le istanze Amazon EC2 e il file system Amazon EFS](#efs-security-group). Configura il gruppo di sicurezza dell'istanza. Assicurati che l'opzione **Assegna automaticamente IP pubblico** sia abilitata.

1. In **Configura storage**, scegli il pulsante **Modifica** per i file system, quindi scegli **EFS**. Seleziona il file system creato in [Fase 3: Creazione di un file system Amazon EFS](#efs-create-filesystem). Puoi modificare facoltativamente il punto di montaggio o lasciare il valore predefinito.
**Importante**  
Devi selezionare una sottorete prima di poter aggiungere un file system all'istanza.

1. Deseleziona l'opzione **Crea e allega automaticamente i gruppi di sicurezza**. Lascia selezionata l'altra casella di controllo. Scegli **Add shared file system** (Aggiungi file system condiviso).

1. In **Dettagli avanzati**, assicurati che lo script dati utente venga popolato automaticamente con le fasi di montaggio del file system Amazon EFS.

1.  In **Riepilogo**, assicurati che **Numero di istanze** sia **1**. Scegliere **Launch Instance (Avvia istanza)**.

1. Nella pagina **Avvia un'istanza**, scegli **Visualizza tutte le istanze** per visualizzare lo stato delle istanze. Inizialmente, **Stato dell'istanza** è `PENDING`. Quando lo stato cambia in `RUNNING` e l'istanza supera tutti i controlli di stato, l'istanza è pronta per l'uso.

Ora, connettiti all'istanza Amazon EC2 e aggiungi contenuti al file system Amazon EFS.

**Come connettersi all'istanza Amazon EC2 e aggiungere contenuti al file system Amazon EFS**

1. Esegui l'SSH sull'istanza Amazon EC2 creata. Per ulteriori informazioni, consultare [Connect to your Linux instance using SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) nella *Guida per l'utente di Amazon EC2*.

1. Dalla finestra del terminale, esegui il comando **df -T** per verificare che il file system Amazon EFS sia montato. Nel seguente output, abbiamo evidenziato il montaggio del file system Amazon EFS.

   ```
   $ df -T
   Filesystem     Type            1K-blocks    Used        Available Use% Mounted on
   devtmpfs       devtmpfs           485468       0           485468   0% /dev
   tmpfs          tmpfs              503480       0           503480   0% /dev/shm
   tmpfs          tmpfs              503480     424           503056   1% /run
   tmpfs          tmpfs              503480       0           503480   0% /sys/fs/cgroup
   /dev/xvda1     xfs               8376300 1310952          7065348  16% /
   127.0.0.1:/    nfs4     9007199254739968       0 9007199254739968   0% /mnt/efs/fs1
   tmpfs          tmpfs              100700       0           100700   0% /run/user/1000
   ```

1. Passa alla directory in cui è montato il file system Amazon EFS. Nell'esempio precedente è `/mnt/efs/fs1`.

1. Crea un file denominato `index.html` con i seguenti contenuti:

   ```
   <html>
       <body>
           <h1>It Works!</h1>
           <p>You are using an Amazon EFS file system for persistent container storage.</p>
       </body>
   </html>
   ```

## Fase 5: creazione di una definizione di attività
<a name="efs-task-def"></a>

La seguente definizione di attività crea un volume di dati denominato `efs-html`. Il container `nginx` monta il volume di dati host nella radice NGINX, `/usr/share/nginx/html`.

**Per creare una nuova definizione di attività utilizzando la console Amazon ECS**

1. Apri la console nella [https://console.aws.amazon.com/ecs/versione 2](https://console.aws.amazon.com/ecs/v2).

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Scegli **Create new task definition** (Crea nuova definizione di attività), **Create new task definition with JSON** (Crea nuova definizione di attività con JSON).

1. Nella casella dell'editor JSON, copia e incolla il seguente testo JSON, sostituendo `fileSystemId` con l'ID del file system Amazon EFS.

   ```
   {
       "containerDefinitions": [
           {
               "memory": 128,
               "portMappings": [
                   {
                       "hostPort": 80,
                       "containerPort": 80,
                       "protocol": "tcp"
                   }
               ],
               "essential": true,
               "mountPoints": [
                   {
                       "containerPath": "/usr/share/nginx/html",
                       "sourceVolume": "efs-html"
                   }
               ],
               "name": "nginx",
               "image": "public.ecr.aws/docker/library/nginx:latest"
           }
       ],
       "volumes": [
           {
               "name": "efs-html",
               "efsVolumeConfiguration": {
                   "fileSystemId": "fs-1324abcd",
                   "transitEncryption": "ENABLED"
               }
           }
       ],
       "family": "efs-tutorial",
       "executionRoleArn":"arn:aws:iam::111122223333:role/ecsTaskExecutionRole"
   }
   ```
**Nota**  
Il ruolo IAM di esecuzione delle attività di Amazon ECS non richiede autorizzazioni specifiche relative ad Amazon EFS per montare un file system di Amazon EFS. Per impostazione predefinita, se non esiste una policy basata sulle risorse di Amazon EFS, l'accesso è concesso a tutti i principali (\$1) al momento della creazione del file system.  
Il ruolo dell'attività di Amazon ECS è richiesto solo se “Autorizzazione EFS IAM” è abilitata nella definizione dell'attività di Amazon ECS. Se abilitata, l'identità del ruolo dell'attività deve avere accesso al file system di Amazon EFS nella policy basata sulle risorse di Amazon EFS e l'accesso anonimo deve essere disabilitato.

1. Scegli **Create** (Crea).

## Fase 6: Esecuzione di un processo e visualizzazione dei risultati
<a name="efs-run-task"></a>

Ora che il file system Amazon EFS è stato creato e che è presente del contenuto Web per il container NGINX da servire, è possibile eseguire un processo utilizzando la definizione di attività creata. I server Web NGINX gestiscono la pagina HTML semplice. Se aggiorni il contenuto del tuo file system Amazon EFS, le modifiche vengono propagate a qualsiasi container in cui è montato lo stesso file system.

L'attività viene eseguita nella sottorete definita per il cluster.

**Esecuzione di un processo e visualizzazione dei risultati attraverso la console**

1. Apri la console nella [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Nella pagina **Cluster**, seleziona il cluster per eseguire il processo autonomo contenuto.

   Determina la risorsa da cui avviare il servizio.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/tutorial-efs-volumes.html)

1. (Facoltativo) Scegli come viene distribuita l'attività pianificata nell'infrastruttura cluster. Espandi **Compute configuration** (Configurazione di calcolo), quindi effettua le seguenti operazioni:    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/tutorial-efs-volumes.html)

1. Per **Tipo di applicazione**, scegli **Processo**.

1. Per **Definizione di attività**, seleziona la definizione dell'attività `efs-tutorial` che hai creato in precedenza.

1. Per **Attività desiderate**, inserisci `1`.

1. Scegli **Create** (Crea).

1. Nella pagina **Cluster**, seleziona **Infrastruttura**.

1. In **Istanze di container**, seleziona l'istanza di container a cui effettuare la connessione.

1. Nella pagina **Istanza di container**, nella sezione **Reti**, registra l'**IP pubblico** per l'istanza.

1. Apri un browser e inserisci l'indirizzo IP pubblico. Dovresti visualizzare un messaggio simile al seguente:

   ```
   It works!
   You are using an Amazon EFS file system for persistent container storage.
   ```
**Nota**  
In caso contrario, assicurati che il gruppo di sicurezza per l'istanza di container consenta il traffico di rete in entrata sulla porta 80 e che il gruppo di sicurezza per il file system consenta l'accesso in entrata dall'istanza di container.

# Utilizzo FSx per volumi Windows File Server con Amazon ECS
<a name="wfsx-volumes"></a>

FSx per Windows File Server fornisce file server Windows completamente gestiti, supportati da un file system Windows. Quando si utilizza FSx for Windows File Server insieme a ECS, è possibile effettuare il provisioning delle attività di Windows con uno storage di file statico persistente, distribuito, condiviso. Per ulteriori informazioni, consulta [What Is FSx for Windows File Server?](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) .

**Nota**  
Le istanze EC2 che utilizzano l'AMI Windows Server 2016 Full ottimizzata FSx per Amazon ECS non supportano i volumi di attività ECS di Windows File Server.  
Non è possibile utilizzarlo FSx per i volumi di Windows File Server in un contenitore Windows nella configurazione Fargate. Invece, è possibile [modificare i container per montarli all'avvio](https://aws.amazon.com/blogs/containers/use-smb-storage-with-windows-containers-on-aws-fargate/).

È possibile utilizzare Windows File Server FSx per distribuire carichi di lavoro Windows che richiedono l'accesso allo storage esterno condiviso, allo storage regionale ad alta disponibilità o allo storage ad alto throughput. Puoi montare uno o più FSx volumi del file system Windows File Server in un contenitore Amazon ECS eseguito su un'istanza Amazon ECS Windows. Puoi condividere FSx i volumi del file system Windows File Server tra più contenitori Amazon ECS all'interno di una singola attività Amazon ECS.

Per abilitare l'uso di FSx per Windows File Server con ECS, includi l'ID del file system FSx per Windows File Server e le informazioni correlate in una definizione di attività. Ciò viene riportato nel frammento JSON della definizione di attività di esempio di seguito riportato. Per poter creare ed eseguire una definizione di attività, è necessario quanto riportato di seguito.
+ Un'istanza EC2 Windows per ECS unita a un dominio valido. Può essere ospitata da un [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html), Active Directory on-premises o Active Directory autogestito su Amazon EC2.
+ Un parametro Gestione dei segreti AWS segreto o Systems Manager che contiene le credenziali utilizzate per aggiungere il dominio Active Directory e collegare il file system FSx per Windows File Server. I valori delle credenziali sono le credenziali di nome e password immesse durante la creazione di Active Directory.

Per un tutorial correlato, consulta [Scopri come configurare FSx i file system Windows File Server per Amazon ECS](tutorial-wfsx-volumes.md).

## Considerazioni
<a name="wfsx-volume-considerations"></a>

Quando si utilizza FSx per volumi Windows File Server, si consideri quanto segue:
+ I volumi FSx for Windows File Server sono supportati nativamente con Amazon ECS su istanze Windows Amazon EC2: Amazon ECS gestisce automaticamente il montaggio tramite la configurazione della definizione delle attività.

  Sulle istanze Amazon EC2 Linux, Amazon ECS non può montare automaticamente i volumi FSx for Windows File Server tramite le definizioni delle attività. Tuttavia, puoi montare manualmente una condivisione di file FSx for Windows File Server su un'istanza Linux EC2 a livello di host e poi montare in associazione quel percorso nei tuoi contenitori Amazon ECS. Per ulteriori informazioni, consulta [Montaggio di condivisioni di FSx file Amazon da Linux](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/map-shares-linux.html).
**Importante**  
Si tratta di una configurazione autogestita. Per indicazioni sul montaggio e la manutenzione delle FSx condivisioni di file Windows File Server su Linux, consulta la [FSx documentazione relativa a Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/).
**Importante**  
Quando si utilizza una condivisione FSx for Windows File Server montata manualmente su istanze Linux EC2, Amazon FSx ECS e per Windows File Server funzionano in modo indipendente: Amazon ECS non monitora il montaggio FSx di Amazon e per Windows File Server non tiene traccia del FSx posizionamento delle attività o degli eventi del ciclo di vita di Amazon ECS. Sei responsabile di garantire la raggiungibilità della rete tra le tue istanze di container Amazon ECS e il FSx file system Amazon, implementare i controlli dello stato del montaggio e gestire la logica di riconnessione per tollerare gli eventi di failover.
+ FSx per Windows File Server con Amazon ECS non supporta AWS Fargate.
+ FSx per Windows File Server con Amazon ECS non è supportato su Amazon ECS Managed Instances.
+ FSx per Windows File Server con Amazon ECS con modalità `awsvpc` di rete richiede una versione `1.54.0` o successiva dell'agente contenitore.
+ Il numero massimo di lettere di unità che possono essere utilizzate per un processo Amazon ECS è 23. A ogni attività con un volume FSx per Windows File Server viene assegnata una lettera di unità.
+ Per impostazione predefinita, il tempo di pulizia delle risorse dell'attività è di tre ore dopo la fine dell'attività. Anche se non viene utilizzata da alcuna attività, una mappatura di file creata da un'attività persiste per 3 ore. Il tempo di pulizia di default può essere configurato utilizzando la variabile di ambiente `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION` di Amazon ECS. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).
+ Le attività in genere vengono eseguite solo nello stesso VPC del file system FSx per Windows File Server. Tuttavia, è possibile avere il supporto cross-VPC se esiste una connettività di rete consolidata tra il VPC del cluster Amazon ECS e il file system FSx per Windows File Server tramite peering VPC.
+ Puoi controllare l'accesso a un file system FSx for Windows File Server a livello di rete configurando i gruppi di sicurezza VPC. Solo le attività ospitate su istanze EC2 unite al dominio Active Directory con gruppi di sicurezza Active Directory correttamente configurati possono accedere alla condivisione di file per Windows File Server. FSx Se i gruppi di sicurezza non sono configurati correttamente, Amazon ECS non riuscirà a eseguire l'avvio dell'attività e sarà restituito il seguente messaggio di errore: `unable to mount file system fs-id`. 
+ FSx for Windows File Server è integrato con AWS Identity and Access Management (IAM) per controllare le azioni che gli utenti e i gruppi IAM possono eseguire su risorse specifiche FSx per Windows File Server. Con l'autorizzazione del client, i clienti possono definire ruoli IAM che consentono o negano l'accesso a file system specifici FSx per Windows File Server, richiedono facoltativamente l'accesso in sola lettura e facoltativamente consentono o impediscono l'accesso root al file system da parte del client. Per ulteriori informazioni, consulta la sezione [Sicurezza](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/security.html) nella Amazon FSx Windows User Guide.

# Procedure consigliate FSx per l'utilizzo per Windows File Server con Amazon ECS
<a name="wfsx-best-practices"></a>

Prendi nota delle seguenti best practice consigliate quando utilizzi FSx Windows File Server con Amazon ECS.

## Controlli di sicurezza e accesso FSx per Windows File Server
<a name="wfsx-security-access-controls"></a>

FSx per Windows File Server offre le seguenti funzionalità di controllo dell'accesso che è possibile utilizzare per garantire che i dati archiviati in un file system FSx per Windows File Server siano sicuri e accessibili solo dalle applicazioni che ne hanno bisogno.

### Crittografia dei dati FSx per volumi Windows File Server
<a name="storage-fsx-security-encryption"></a>

FSx per Windows File Server supporta due forme di crittografia per i file system. Si tratta della crittografia dei dati in transito e di quella dei dati a riposo. La crittografia dei dati in transito è supportata sulle condivisioni di file mappate su un'istanza di container che supporta il protocollo SMB 3.0 o successivo. La crittografia dei dati inattivi viene abilitata automaticamente durante la creazione di un FSx file system Amazon. Amazon crittografa FSx automaticamente i dati in transito utilizzando la crittografia SMB quando accedi al tuo file system senza che tu debba modificare le tue applicazioni. Per ulteriori informazioni, consulta la sezione [Crittografia dei dati FSx in Amazon](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/encryption.html) *nella Guida FSx per l'utente di Amazon per Windows File Server*.

### Usa Windows ACLs per il controllo degli accessi a livello di cartella
<a name="storage-fsx-security-access"></a>

L'istanza Windows Amazon EC2 accede alle condivisioni di FSx file Amazon utilizzando le credenziali di Active Directory. Utilizza elenchi di controllo degli accessi standard di Windows (ACLs) per un controllo granulare degli accessi a livello di file e cartella. È possibile creare più credenziali, ognuna per una cartella specifica all'interno della condivisione associata a un'attività specifica.

Nell'esempio seguente, l'attività ha accesso alla cartella `App01` utilizzando le credenziali salvate in Secrets Manager. Il nome della risorsa Amazon (ARN) è `1234`.

```
"rootDirectory": "\\path\\to\\my\\data\App01",
"credentialsParameter": "arn-1234",
"domain": "corp.fullyqualified.com",
```

In un altro esempio, un'attività ha accesso alla cartella `App02` utilizzando le credenziali salvate in Secrets Manager. Il suo ARN è `6789`.

```
"rootDirectory": "\\path\\to\\my\\data\App02",
"credentialsParameter": "arn-6789",
"domain": "corp.fullyqualified.com",
```

# Specificare un file system FSx per Windows File Server in una definizione di attività Amazon ECS
<a name="specify-wfsx-config"></a>

Per utilizzarli FSx per i volumi del file system Windows File Server per i contenitori, specifica le configurazioni del volume e del punto di montaggio nella definizione dell'attività. Il seguente frammento JSON della definizione di attività illustra la sintassi degli oggetti `volumes` e `mountPoints` per un container.

```
{
    "containerDefinitions": [
        {
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "portMappings": [],
            "command": ["New-Item -Path C:\\fsx-windows-dir\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>It Works!</h2> <p>You are using Amazon FSx for Windows File Server file system for persistent container storage.</p>' -Force"],
            "cpu": 512,
            "memory": 256,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "essential": false,
            "name": "container1",
            "mountPoints": [
                {
                    "sourceVolume": "fsx-windows-dir",
                    "containerPath": "C:\\fsx-windows-dir",
                    "readOnly": false
                }
            ]
        },
        {
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "portMappings": [
                {
                    "hostPort": 443,
                    "protocol": "tcp",
                    "containerPort": 80
                }
            ],
            "command": ["Remove-Item -Recurse C:\\inetpub\\wwwroot\\* -Force; Start-Sleep -Seconds 120; Move-Item -Path C:\\fsx-windows-dir\\index.html -Destination C:\\inetpub\\wwwroot\\index.html -Force; C:\\ServiceMonitor.exe w3svc"],
            "mountPoints": [
                {
                    "sourceVolume": "fsx-windows-dir",
                    "containerPath": "C:\\fsx-windows-dir",
                    "readOnly": false
                }
            ],
            "cpu": 512,
            "memory": 256,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "essential": true,
            "name": "container2"
        }
    ],
    "family": "fsx-windows",
    "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole",
    "volumes": [
        {
            "name": "fsx-windows-dir",
            "fsxWindowsFileServerVolumeConfiguration": {
                "fileSystemId": "fs-0eeb5730b2EXAMPLE",
                "authorizationConfig": {
                    "domain": "example.com",
                    "credentialsParameter": "arn:arn-1234"
                },
                "rootDirectory": "share"
            }
        }
    ]
}
```

`FSxWindowsFileServerVolumeConfiguration`  
Tipo: oggetto  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizza FSx il file system [Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) per l'archiviazione delle attività.    
`fileSystemId`  
Tipo: stringa  
Obbligatorio: sì  
L' FSx ID del file system Windows File Server da utilizzare.  
`rootDirectory`  
Tipo: stringa  
Obbligatorio: sì  
La directory all'interno del FSx file system Windows File Server da montare come directory principale all'interno dell'host.  
`authorizationConfig`    
`credentialsParameter`  
Tipo: stringa  
Obbligatorio: sì  
Le opzioni delle credenziali di autorizzazione:  
+ L'Amazon Resource Name (ARN) di un segreto di [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).
+ Amazon Resource Name (ARN) di un parametro di [Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).  
`domain`  
Tipo: stringa  
Obbligatorio: sì  
Un nome di dominio completo ospitato da una directory [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) (AWS Managed Microsoft AD) o da una directory EC2 Active autonoma.

## Metodi per l'archiviazione delle FSx credenziali del volume Windows File Server
<a name="creds"></a>

Esistono due metodi diversi per archiviare le credenziali da utilizzare con il parametro delle credenziali.
+ **Gestione dei segreti AWS segreto**

  Questa credenziale può essere creata nella Gestione dei segreti AWS console utilizzando la categoria *segreta Altro tipo*. Si aggiunge una riga per ogni key/value coppia username/admin e una *password* password/.
+ **Parametro di Systems Manager**

  Queste credenziali possono essere create nella console dei parametri di Systems Manager immettendo del testo nel modulo illustrato nel frammento di codice di esempio seguente.

  ```
  {
    "username": "admin",
    "password": "password"
  }
  ```

`credentialsParameter` nel parametro `FSxWindowsFileServerVolumeConfiguration` della definizione di attività conterrà l'ARN del segreto o l'ARN del parametro di Systems Manager. Per ulteriori informazioni, consulta [Cos'è AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) nella *Guida per l'utente di Secrets Manager* e [Archivio parametri di Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) nella *Guida per l'utente di Systems Manager*.

# Scopri come configurare FSx i file system Windows File Server per Amazon ECS
<a name="tutorial-wfsx-volumes"></a>

Scopri come avviare un'istanza Windows ottimizzata per Amazon ECS che ospita un file system FSx per Windows File Server e contenitori in grado di accedere al file system. A tale scopo, è innanzitutto necessario creare un Microsoft Active Directory Directory Service AWS gestito. Quindi, creare un file system FSx per Windows File Server e un cluster con un'istanza Amazon EC2 e una definizione di attività. Si configura la definizione delle attività per i contenitori in modo che utilizzino il file system FSx per Windows File Server. Infine, esegui il test del file system.

Occorrono dai 20 ai 45 minuti ogni volta che si avvia o si elimina il file system Active Directory o il file system FSx per Windows File Server. Considera almeno 90 minuti per completare il tutorial oppure completalo in più sessioni.

## Prerequisiti per il tutorial
<a name="wfsx-prerequisites"></a>
+ Un utente amministratore. Per informazioni, consulta [Configurazione per l'uso di Amazon ECS](get-set-up-for-amazon-ecs.md).
+ (Facoltativo) Una coppia di chiavi `PEM` per la connessione all'istanza Windows di EC2 tramite l'accesso RDP. Per informazioni sulla creazione di coppie di chiavi, consultare [Amazon EC2 key pairs and Amazon EC2 instances](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) nella *Guida per l'utente di Amazon EC2*.
+ Un VPC con almeno una sottorete pubblica e una sottorete privata e un gruppo di sicurezza. È possibile utilizzare il VPC di default. Non è necessario un gateway o un dispositivo NAT. Directory Service non supporta Network Address Translation (NAT) con Active Directory. Affinché ciò funzioni, Active Directory, il file system FSx per Windows File Server, il cluster ECS e l'istanza EC2 devono trovarsi all'interno del VPC. Per ulteriori informazioni su VPCs Active Directory, consulta [Creazione di un VPC](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) [e Prerequisiti per la creazione di un Microsoft AWS AD gestito](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html#ms_ad_getting_started_prereqs).
+ Le autorizzazioni IAM ecsInstanceRole e ecsTaskExecution Role sono associate al tuo account. Questi ruoli collegati ai servizi consentono ai servizi di effettuare chiamate API e accedere a container, segreti, directory e server di file per tuo conto.

## Fase 1: Creazione dei ruoli di accesso IAM
<a name="iam-roles"></a>

**Crea un cluster con la Console di gestione AWS.**

1. Verifica se ne possiedi uno ecsInstanceRole e scopri come puoi crearne uno se non ne hai uno. [Ruolo IAM delle istanze di container Amazon ECS](instance_IAM_role.md)

1. Consigliamo di personalizzare le policy dei ruoli per ottenere autorizzazioni minime in un ambiente di produzione effettivo. Per completare questo tutorial, verifica che la seguente politica AWS gestita sia allegata al tuoecsInstanceRole. Collega la policy, se non è già collegata.
   + EC2ContainerServiceforEC2Ruolo di Amazon
   + Amazon SSMManaged InstanceCore
   + Amazon SSMDirectory ServiceAccess

   Per allegare politiche AWS gestite.

   1. Aprire la [console IAM](https://console.aws.amazon.com//iam/).

   1. Nel pannello di navigazione, selezionare **Ruoli**.

   1. Scegli un **ruolo gestito da AWS **.

   1. Scegli **Autorizzazioni, Collega policy**.

   1. Per limitare le policy disponibili da collegare, utilizza **Filtro**.

   1. Seleziona la policy appropriata, quindi scegli **Collega policy**.

1. Verifica se hai un ecsTaskExecution ruolo e scopri come puoi crearne uno se non ne hai uno. [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md)

   Consigliamo di personalizzare le policy dei ruoli per ottenere autorizzazioni minime in un ambiente di produzione effettivo. Per completare questo tutorial, verifica che le seguenti politiche AWS gestite siano allegate al tuo ecsTaskExecution ruolo. Collega le policy, se non sono già collegate. Utilizza la procedura indicata nella sezione precedente per allegare le politiche AWS gestite.
   + SecretsManagerReadWrite
   + Amazon FSx ReadOnlyAccess
   + Amazon SSMRead OnlyAccess
   + Amazon ECSTask ExecutionRolePolicy

## Fase 2: Creazione di Windows Active Directory (AD)
<a name="wfsx-create-ads"></a>

1. Segui i passaggi descritti in [Creazione di AWS Managed Microsoft AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/ms_ad_getting_started.html#ms_ad_getting_started_create_directory) nella AWS *Directory Service Administration Guide*. Utilizza il VPC designato per questo tutorial. Nella fase 3 della *creazione di AWS Managed Microsoft AD*, salva il nome utente e la password di amministratore da utilizzare nel passaggio successivo. Annotare inoltre il nome completo della directory DNS per le operazioni successive. È possibile completare la fase seguente durante la creazione di Active Directory.

1. Crea un segreto di AWS Secrets Manager da utilizzare nei passaggi seguenti. Per ulteriori informazioni, consulta Guida [introduttiva a Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html#get-started) nella *Guida per l'utente di AWS Secrets Manager*.

   1. Apri la [console Secrets Manager](https://console.aws.amazon.com//secretsmanager/).

   1. Fai clic su **Archivia un nuovo segreto**.

   1. Seleziona **Altro tipo di segreti**.

   1. Per **Chiave/valore segreto**, nella prima riga, crea una chiave **username** con valore **admin**. Fai clic su **\$1 Aggiungi riga**.

   1. Nella nuova riga, crea una chiave **password**. Per ulteriori informazioni, digitate la password inserita nel passaggio 3 di *Create Your AWS Managed AD Directory*.

   1. Fai clic sul pulsante **Successivo**.

   1. Specifica un nome e una descrizione per il segreto. Fare clic su **Avanti**.

   1. Fare clic su **Avanti**. Fai clic su **Archivia**.

   1. Dall'elenco nella pagina **Segreti**, seleziona il segreto appena creato.

   1. Salva l'ARN del nuovo segreto per utilizzarlo nelle fasi seguenti.

   1. Durante la creazione di Active Directory, è possibile procedere alla fase successiva.

## Fase 3: Verifica e aggiornamento del gruppo di sicurezza
<a name="wfsx-sg"></a>

In questa fase è possibile verificare e aggiornare le regole per il gruppo di sicurezza in uso. Pertanto è possibile utilizzare il gruppo di sicurezza di default creato per il VPC.

**Verifica e aggiorna il gruppo di sicurezza.**

È necessario creare o modificare il gruppo di sicurezza per inviare dati da e verso le porte, descritti in [Amazon VPC Security Groups](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/limit-access-security-groups.html#fsx-vpc-security-groups) nella Guida *FSx per l'utente di Windows File Server*. A tale scopo, è possibile creare la regola in ingresso del gruppo di sicurezza visualizzata nella prima riga della tabella di regole in entrata riportata di seguito. Questa regola consente il traffico in ingresso dalle interfacce di rete (e le relative istanze associate) assegnate al gruppo di sicurezza. Tutte le risorse cloud create si trovano all'interno dello stesso VPC e collegate allo stesso gruppo di sicurezza. Pertanto, questa regola consente l'invio di traffico da e verso il file system FSx per Windows File Server, Active Directory e l'istanza ECS, se necessario. Le altre regole in entrata consentono al traffico di servire il sito Web e l'accesso RDP per la connessione all'istanza ECS.

Nella tabella seguente vengono illustrate le regole in entrata del gruppo di sicurezza necessarie per questo tutorial.


| Tipo | Protocollo | Intervallo porte | Origine | 
| --- | --- | --- | --- | 
|  Tutto il traffico  |  Tutti  |  Tutti  |  *sg-securitygroup*  | 
|  HTTPS  |  TCP  |  443  |  0.0.0.0/0  | 
|  RDP  |  TCP  |  3389  |  indirizzo IP del laptop  | 

Nella tabella seguente vengono illustrate le regole in uscita del gruppo di sicurezza necessarie per questo tutorial.


| Tipo | Protocollo | Intervallo porte | Destinazione | 
| --- | --- | --- | --- | 
|  Tutto il traffico  |  Tutti  |  Tutti  |  0.0.0.0/0  | 

1. Apri la [Console EC2](https://console.aws.amazon.com//ec2/) e seleziona **Gruppi di sicurezza** dal menu sulla sinistra.

1. Dall'elenco dei gruppi di sicurezza ora visualizzati, seleziona la casella di controllo a sinistra del gruppo di sicurezza utilizzato per questo tutorial.

   Vengono visualizzati i dettagli del gruppo di sicurezza.

1. Modifica le regole in ingresso e in uscita selezionando le schede **Inbound rules** (Regole in entrata) o **Outbound rules** (Regole in uscita) e scegliendo l'opzione **Edit inbound rules** (Modifica regole in entrata) o **Edit outbound rules** (Modifica regole in uscita). Modifica le regole in base a quelle visualizzate nelle tabelle precedenti. Dopo aver creato l'istanza EC2 più avanti in questa esercitazione, modificare l'origine RDP della regola in ingresso con l'indirizzo IP pubblico dell'istanza EC2 come descritto in [Connect to your Windows instance using RDP](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connecting_to_windows_instance.html) nella *Guida per l'utente di Amazon EC2*.

## Passaggio 4: creare un file system FSx per Windows File Server
<a name="wfsx-create-fsx"></a>

Dopo aver verificato e aggiornato il gruppo di sicurezza e aver creato Active Directory e aver raggiunto lo stato attivo, crea il file system FSx per Windows File Server nello stesso VPC di Active Directory. Utilizza i passaggi seguenti per creare un file system FSx per Windows File Server per le tue attività Windows.

**Creare il tuo primo file system.**

1. Apri la [ FSx console Amazon](https://console.aws.amazon.com//fsx/).

1. Nel pannello di controllo, scegli **Crea file system** per avviare la procedura guidata di creazione del file system.

1. Nella pagina **Seleziona il tipo di file system**, scegli **FSx Windows File Server**, quindi scegli **Avanti**. Viene visualizzata la pagina **Crea file system**.

1. Nella sezione **Dettagli file system**, specifica un nome per il file system. La denominazione dei file system ne semplifica la ricerca e la gestione. Puoi utilizzare fino a 256 caratteri Unicode. I caratteri consentiti sono lettere, numeri, spazi e caratteri speciali segno più (\$1), segno meno (-), segno uguale (=), punto (.), trattino basso (\$1), due punti (:) e barra (/).

1. Per **Tipo di implementazione**, scegli **Single-AZ** per implementare un file system distribuito in una zona di disponibilità singola. *Single-AZ 2* è l'ultima generazione di file system a zona di disponibilità singola e supporta l'archiviazione SSD e HDD.

1. Per **Tipo di archiviazione**, scegli **HDD**.

1. In **Capacità di archiviazione**, specifica la capacità di archiviazione minima. 

1. Mantieni **Capacità di velocità effettiva** sul valore di default.

1. Nella sezione **Rete e sicurezza**, scegli lo stesso Amazon VPC che hai scelto per la tua Directory Service directory.

1. Per **Gruppi di sicurezza VPC**, scegli il gruppo di sicurezza verificato in *Fase 3: Verifica e aggiornamento del gruppo di sicurezza*.

1. Per **Autenticazione Windows**, scegli **AWS Managed Microsoft Active Directory**, quindi seleziona la tua directory Directory Service dall'elenco.

1. Per **Crittografia**, mantieni l'impostazione di default **Chiave di crittografia** su **aws/fsx (default)**.

1. Mantieni le impostazioni di default per **Preferenze di manutenzione**.

1. Fai clic sul pulsante **Successivo**.

1. Rivedi la configurazione del file system riportata nella pagina **Crea file system**. Come riferimento, prendi nota delle impostazioni del file system che è possibile modificare dopo la sua creazione. Scegliere **Create file system (Crea file system)**. 

1. Prendi nota dell'ID file system. Sarà utile in una fase successiva.

   Puoi passare ai passaggi successivi per creare un cluster e un'istanza EC2 durante la creazione del file system FSx per Windows File Server.

## Fase 5: Creazione di un cluster Amazon ECS
<a name="wfsx-create-cluster"></a>

**Creazione di un cluster tramite la console Amazon ECS**

1. [Apri la console nella versione 2https://console.aws.amazon.com/ecs/.](https://console.aws.amazon.com/ecs/v2)

1. Seleziona la Regione da utilizzare nella barra di navigazione.

1. Nel pannello di navigazione scegli **Cluster**.

1. Nella pagina **Clusters** (Cluster), scegli **Create cluster** (Crea cluster).

1. In **Configurazione del cluster**, per **Nome cluster**, inserisci **windows-fsx-cluster**.

1. Espandi **l'infrastruttura**, cancella AWS Fargate (senza server) e seleziona le istanze **Amazon EC2**.

   1. Per creare un gruppo Auto Scaling, da **Auto Scaling group (ASG)** (Gruppo di Auto Scaling (ASG)), seleziona **Create new group** (Crea nuovo gruppo) e quindi fornisci i seguenti dettagli sul gruppo:
     + Per **Sistema operativo/architettura**, scegli **Windows Server 2019 Core**.
     + In **Tipo di istanza EC2**, scegli t2.medium o t2.micro.

1. Scegli **Create** (Crea).

## Fase 6: creazione di un'istanza Amazon EC2 ottimizzata per Amazon ECS
<a name="wfsx-create-instance"></a>

Creazione di un'istanza di container Windows di Amazon ECS

**Creazione di un'istanza Amazon ECS**

1. Usa il comando `aws ssm get-parameters` per recuperare il nome dell'AMI per la regione che ospita il VPC. Per ulteriori informazioni, consulta [Retrieving Amazon ECS-Optimized AMI metadata](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/retrieve-ecs-optimized_windows_AMI.html).

1. Utilizza la console di Amazon EC2 per avviare l'istanza.

   1. Apri la console Amazon EC2 all'indirizzo [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

   1. Seleziona la Regione da utilizzare nella barra di navigazione.

   1. Da **Pannello di controllo EC2**, scegli **Avvia istanza**.

   1. Per **Name (Nome)**, inserisci un nome univoco.

   1. Per **Immagini di applicazioni e sistema operativo (Amazon Machine Image)**, nel campo **cerca**, inserisci il nome dell'AMI recuperata.

   1. In **Tipo di istanza**, scegli t2.medium o t2.micro.

   1. Per **Key pair (login)** (Coppia di chiavi [accesso]), scegli una coppia di chiavi. Se non specifici una coppia di chiavi, 

   1. In **Impostazioni di rete**, per **VPC** e **Sottorete**, scegli il VPC e una sottorete pubblica.

   1. In **Network settings** (Impostazioni di rete), per **Security group** (Gruppo di sicurezza), scegli un gruppo di sicurezza esistente o creane uno nuovo. Assicurati che il gruppo di sicurezza scelto disponga delle regole in entrata e in uscita definite in [Prerequisiti per il tutorial](#wfsx-prerequisites)

   1. In **Network settings** (Impostazioni di rete), per **Auto-assign Public IP** (Assegna automaticamente un IP pubblico), seleziona **Enable** (Abilita). 

   1. Espandi **Dettagli avanzati** e in **Directory aggiunta dominio**, seleziona l'ID dell'Active Directory creata. Questo dominio si unisce all'AD quando viene avviata l'istanza EC2.

   1. In **Dettagli avanzati**, per il **profilo dell'istanza IAM**, scegli. **ecsInstanceRole**

   1. Configura la tua istanza di container Amazon ECS con i seguenti dati utente. In **Dettagli avanzati**, incolla lo script seguente nel campo **Dati utente**, sostituendolo *cluster\$1name* con il nome del cluster.

      ```
      <powershell>
      Initialize-ECSAgent -Cluster windows-fsx-cluster -EnableTaskIAMRole
      </powershell>
      ```

   1. Quando sei pronto, seleziona il campo di conferma e scegli **Launch Instances** (Avvia istanze). 

   1. Una pagina di conferma indicherà che l'istanza si sta avviando. Scegliere **View Instances (Visualizza istanze)** per chiudere la pagina di conferma e tornare alla console.

1. Apri la console nella [https://console.aws.amazon.com/ecs/versione 2](https://console.aws.amazon.com/ecs/v2).

1. Nel riquadro di navigazione, scegli **Cluster**, quindi scegli. **windows-fsx-cluster**

1. Scegli la scheda **Infrastruttura** e verifica che l'istanza sia stata registrata nel **windows-fsx-cluster**cluster.

## Fase 7: Registrazione di una definizione di attività di Windows
<a name="register_windows_task_def"></a>

Prima di eseguire i container Windows nel cluster Amazon ECS, devi registrare una definizione di attività. Il seguente esempio di definizione di attività mostra una pagina Web semplice. L'attività avvia due contenitori che hanno accesso al FSx file system. Il primo container scrive un file HTML nel file system. Il secondo container scarica il file HTML dal file system e serve la pagina Web.

1. [Apri la console nella versione 2https://console.aws.amazon.com/ecs/.](https://console.aws.amazon.com/ecs/v2)

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Scegli **Create new task definition** (Crea nuova definizione di attività), **Create new task definition with JSON** (Crea nuova definizione di attività con JSON).

1. **Nella casella dell'editor JSON, sostituisci i valori per il tuo ruolo di esecuzione delle attività e i dettagli sul tuo FSx file system, quindi scegli Salva.**

   ```
   {
       "containerDefinitions": [
           {
               "entryPoint": [
                   "powershell",
                   "-Command"
               ],
               "portMappings": [],
               "command": ["New-Item -Path C:\\fsx-windows-dir\\index.html -ItemType file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>It Works!</h2> <p>You are using Amazon FSx for Windows File Server file system for persistent container storage.</p>' -Force"],
               "cpu": 512,
               "memory": 256,
               "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
               "essential": false,
               "name": "container1",
               "mountPoints": [
                   {
                       "sourceVolume": "fsx-windows-dir",
                       "containerPath": "C:\\fsx-windows-dir",
                       "readOnly": false
                   }
               ]
           },
           {
               "entryPoint": [
                   "powershell",
                   "-Command"
               ],
               "portMappings": [
                   {
                       "hostPort": 443,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ],
               "command": ["Remove-Item -Recurse C:\\inetpub\\wwwroot\\* -Force; Start-Sleep -Seconds 120; Move-Item -Path C:\\fsx-windows-dir\\index.html -Destination C:\\inetpub\\wwwroot\\index.html -Force; C:\\ServiceMonitor.exe w3svc"],
               "mountPoints": [
                   {
                       "sourceVolume": "fsx-windows-dir",
                       "containerPath": "C:\\fsx-windows-dir",
                       "readOnly": false
                   }
               ],
               "cpu": 512,
               "memory": 256,
               "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
               "essential": true,
               "name": "container2"
           }
       ],
       "family": "fsx-windows",
       "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole",
       "volumes": [
           {
               "name": "fsx-windows-dir",
               "fsxWindowsFileServerVolumeConfiguration": {
                   "fileSystemId": "fs-0eeb5730b2EXAMPLE",
                   "authorizationConfig": {
                       "domain": "example.com",
                       "credentialsParameter": "arn:arn-1234"
                   },
                   "rootDirectory": "share"
               }
           }
       ]
   }
   ```

## Fase 8: Esecuzione di un processo e visualizzazione dei risultati
<a name="wfsx-run-task"></a>

Prima di eseguire l'operazione, verificate che lo stato del file system FSx per Windows File Server sia **Disponibile**. Una volta disponibile, è possibile eseguire un processo utilizzando la definizione di attività creata. Il processo inizia creando container che mescolano un file HTML utilizzando il file system. Dopo il mescolamento, un server Web serve la pagina HTML semplice.

**Nota**  
Potresti non essere in grado di connetterti al sito Web da una VPN.

**Esegui un'attività e visualizza i risultati tramite la console Amazon ECS.**

1. Apri la console nella [https://console.aws.amazon.com/ecs/versione 2](https://console.aws.amazon.com/ecs/v2).

1. Nel riquadro di navigazione, scegli **Cluster**, quindi scegli. **windows-fsx-cluster**

1. Seleziona la scheda **Attività**, quindi **Esegui nuova attività**.

1. In **Tipo di avvio**, selezionare **EC2**.

1. In Configurazione dell'implementazione, per **Definizione dell'attività**, scegli **fsx-windows**, quindi scegli **Crea**.

1. Quando lo stato dell'attività è **IN ESECUZIONE**, scegli l'ID attività.

1. In **Container**, quando lo stato di container1 è **ARRESTATO**, seleziona container2 per visualizzarne i dettagli.

1.  In **Dettagli del container per container2**, seleziona **Associazioni di rete** e fai clic sull'indirizzo IP esterno associato al container. Si aprirà il browser e sarà visualizzato il seguente messaggio.

   ```
   Amazon ECS Sample App
   It Works! 
   You are using Amazon FSx for Windows File Server file system for persistent container storage.
   ```
**Nota**  
Possono essere necessari alcuni minuti per visualizzare il messaggio. Se dopo qualche minuto non viene visualizzato il messaggio, assicurati che non stai utilizzando una VPN e che il gruppo di sicurezza per l'istanza di container consenta il traffico di rete in entrata sulla porta 443.

## Fase 9: Pulizia
<a name="wfsx-cleanup"></a>

**Nota**  
Sono necessari dai 20 ai 45 minuti per eliminare il file system FSx per Windows File Server o l'AD. È necessario attendere il completamento delle operazioni di eliminazione del file system FSx for Windows File Server prima di iniziare le operazioni di eliminazione di AD.

**Elimina FSx per il file system Windows File Server.**

1. Apri la [ FSx console Amazon](https://console.aws.amazon.com//fsx/)

1. Scegli il pulsante di opzione a sinistra del file system FSx per Windows File Server che hai appena creato.

1. Scegli **Azioni**.

1. Seleziona **Elimina file system**.

**Elimina l'AD.**

1. Apri la [Directory Service console](https://console.aws.amazon.com//directoryservicev2/).

1. Scegli il pulsante di opzione a sinistra dell'AD appena creato.

1. Scegli **Azioni**.

1. Seleziona **Elimina directory**.

**Elimina il cluster.**

1. Apri la console alla [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Nel riquadro di navigazione, scegli **Cluster**, quindi scegli. **windows-fsx-cluster**

1. Scegli **Delete cluster (Elimina cluster)**.

1. Inserisci la frase, quindi scegli **Elimina**.

**Termina l'istanza EC2.**

1. Aprire la [console di Amazon EC2](https://console.aws.amazon.com//ec2/).

1. Nel menu a sinistra, seleziona **Istanze**.

1. Seleziona la casella a sinistra dell'istanza EC2 creata.

1. Fai clic su **Stato istanza**, **Termina istanza**.

**Elimina il segreto.**

1. Apri la [console Secrets Manager](https://console.aws.amazon.com//secretsmanager/).

1. Seleziona il segreto creato per questa procedura.

1. Fai clic su **Operazioni**.

1. Seleziona **Elimina segreto**.

# Utilizzo dei volumi Docker con Amazon ECS
<a name="docker-volumes"></a>

Quando utilizzi i volumi Docker, puoi usare il driver `local` integrato o un driver di volumi di terze parti. I volumi Docker sono gestiti da Docker e viene creata una directory in `/var/lib/docker/volumes` sull'istanza di container che contiene i dati del volume.

Per usare i volumi Docker, specifica `dockerVolumeConfiguration` nella definizione di attività. Per ulteriori informazioni, consultare [Volumes](https://docs.docker.com/engine/storage/volumes/) nella documentazione di Docker.

Alcuni casi d’uso comune per i volumi Docker sono i seguenti:
+ Offrire volumi di dati persistenti per l’utilizzo con i container
+ Condividere un volume di dati definito in diverse posizioni su differenti container nella stessa istanza di container
+ Definire un volume di dati vuoto, non persistente e montarlo su più container all’interno della stessa attività
+ Per fornire un volume di dati per l’attività gestita da un driver di terze parti

## Considerazioni sull'utilizzo dei volumi Docker
<a name="docker-volume-considerations"></a>

Quando usi volumi Docker, tieni presenti le considerazioni seguenti:
+ I volumi Docker sono supportati solo se si utilizza il tipo di avvio EC2 o istanze esterne.
+ I container Windows supportano solo l'uso del driver `local`.
+ Se viene utilizzato un driver di terze parti, assicurati che sia installato e attivo sull'istanza di container prima dell'avvio dell'agente del container. Se il driver di terze parti non è attivo prima dell'avvio dell'agente, puoi riavviare l'agente del container utilizzando uno dei seguenti comandi:
  + Per l'AMI Amazon Linux 2 ottimizzata per Amazon ECS:

    ```
    sudo systemctl restart ecs
    ```
  + Per l'AMI Amazon Linux ottimizzata per Amazon ECS:

    ```
    sudo stop ecs && sudo start ecs
    ```

Per informazioni su come specificare un volume Docker in una definizione dell'attività, consultare [Specifica un volume Docker in una definizione dell'attività Amazon ECS](specify-volume-config.md).

# Specifica un volume Docker in una definizione dell'attività Amazon ECS
<a name="specify-volume-config"></a>

Prima che i container possano utilizzare i volumi di dati, è necessario specificare le configurazioni del punto di montaggio e del volume nella definizione di attività. Questa sezione descrive la configurazione del volume per un container. Per le attività che usano un volume Docker, specifica `dockerVolumeConfiguration`. Per le attività che usano un volume host di montaggio vincolato, specifica `host` e facoltativamente `sourcePath`.

Il seguente JSON della definizione di attività illustra la sintassi degli oggetti `volumes` e `mountPoints` per un container.

```
{
    "containerDefinitions": [
        {
            "mountPoints": [
                {
                    "sourceVolume": "string",
                    "containerPath": "/path/to/mount_volume",
                    "readOnly": boolean
                }
            ]
        }
    ],
    "volumes": [
        {
            "name": "string",
            "dockerVolumeConfiguration": {
                "scope": "string",
                "autoprovision": boolean,
                "driver": "string",
                "driverOpts": {
                    "key": "value"
                },
                "labels": {
                    "key": "value"
                }
            }
        }
    ]
}
```

`name`  
▬Tipo: stringa  
Obbligatorio: no  
Nome del volume. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini (`-`) e trattini bassi (`_`). Nel parametro `sourceVolume` dell'oggetto `mountPoints` della definizione del container viene fatto riferimento a questo nome.

`dockerVolumeConfiguration`  
Tipo: oggetto [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizzano volumi docker. I volumi Docker sono supportati solo se i processi vengono eseguiti su istanze EC2. I container Windows supportano solo l’uso del driver `local`. Per utilizzare i montaggi vincolati, specifica invece un `host`.    
`scope`  
Tipo: String  
Valori validi: `task` \$1 `shared`  
Obbligatorio: no  
L'ambito del volume Docker che determina il suo ciclo di vita. I volumi Docker che rientrano nell'ambito `task` vengono automaticamente assegnati all'avvio del processo e distrutti quando il processo viene arrestato. I volumi Docker che vengono definiti come `shared` vengono mantenuti dopo l'arresto del processo.  
`autoprovision`  
Tipo: Booleano  
Valore predefinito: `false`  
Obbligatorio: no  
Se questo valore è `true`, viene creato il volume Docker, se non è già presente. Questo campo è utilizzato solo se `scope` è `shared`. Se `scope` è `task`, questo parametro deve essere omesso.  
`driver`  
▬Tipo: stringa  
Obbligatorio: no  
Il driver del volume Docker da utilizzare. Il valore del driver deve corrispondere al nome del driver fornito da Docker perché questo nome è utilizzato per il posizionamento dell'attività. Se il driver è stato installato utilizzando la CLI del plugin Docker, utilizzare `docker plugin ls` per richiamare il nome del driver dall'istanza di container. Se il driver è stato installato utilizzando un altro metodo, utilizzare il rilevamento del plugin Docker per richiamare il nome del driver.  
`driverOpts`  
▬Tipo: stringa  
Obbligatorio: no  
Una mappa delle opzioni specifiche del driver Docker da inviare. Questo parametro fa riferimento a `DriverOpts` nella sezione Crea un volume di Docker.  
`labels`  
▬Tipo: stringa  
Obbligatorio: no  
Metadati personalizzati da aggiungere al volume Docker.

`mountPoints`  
Tipo: array di oggetti  
Obbligatorio: no  
I punti di montaggio per i volumi di dati nel container. Questo parametro è mappato ai `Volumes` nella creazione container dell'API Docker e l'opzione `--volume` per docker run.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`. I container Windows non possono montare le directory su un'unità diversa e i punti di montaggio non possono essere utilizzati tra le unità. È necessario specificare i punti di montaggio per collegare un volume Amazon EBS direttamente a un'attività Amazon ECS.    
`sourceVolume`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il nome del volume da montare.  
`containerPath`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il percorso nel container in cui verrà montato il volume.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.  
Per le attività su istanze EC2 che eseguono il sistema operativo Windows, lasciare il valore predefinito di `false`.

# Esempi di volumi Docker per Amazon ECS
<a name="docker-volume-examples"></a>

Gli esempi seguenti mostrano come fornire uno storage temporaneo per un contenitore e come fornire un volume condiviso per più contenitori e come fornire uno storage persistente NFS per un contenitore.

**Fornire un archivio temporaneo per un container utilizzando un volume Docker**

In questo esempio, un container utilizza un volume di dati vuoto che viene smaltito al termine dell'attività. Ad esempio, potresti avere un container che deve accedere alla posizione di storage di alcuni file temporanei durante un'attività. Questa attività può essere eseguita utilizzando un volume Docker.

1. Nella sezione `volumes` della definizione di attività, definisci un volume di dati con i valori `name` e `DockerVolumeConfiguration`. In questo esempio, specifichiamo l'ambito come `task` in modo che il volume venga eliminato dopo l'arresto dell'attività e venga utilizzato il driver `local` incorporato.

   ```
   "volumes": [
       {
           "name": "scratch",
           "dockerVolumeConfiguration" : {
               "scope": "task",
               "driver": "local",
               "labels": {
                   "scratch": "space"
               }
           }
       }
   ]
   ```

1. Nella sezione `containerDefinitions`, definisci un container con valori `mountPoints` che faccia riferimento al nome del volume definito e al valore `containerPath` per montare il volume sul container.

   ```
   "containerDefinitions": [
       {
           "name": "container-1",
           "mountPoints": [
               {
                 "sourceVolume": "scratch",
                 "containerPath": "/var/scratch"
               }
           ]
       }
   ]
   ```

**Fornire un archivio persistente per più container utilizzando un volume Docker**

In questo esempio, desideri un volume condiviso per più container da utilizzare e che persista dopo l'interruzione di qualsiasi singola attività che lo utilizza. Il driver `local` integrato è in uso. Per questo motivo, il volume è ancora legato al ciclo di vita dell'istanza di container.

1. Nella sezione `volumes` della definizione di attività, definisci un volume di dati con i valori `name` e `DockerVolumeConfiguration`. In questo esempio, specificare un ambito `shared` in modo che il volume persista, imposta il provisioning automatico su `true`. In questo modo il volume viene creato per l'uso. Quindi, utilizza anche il driver `local` integrato.

   ```
   "volumes": [
       {
           "name": "database",
           "dockerVolumeConfiguration" : {
               "scope": "shared",
               "autoprovision": true,
               "driver": "local",
               "labels": {
                   "database": "database_name"
               }
           }
       }
   ]
   ```

1. Nella sezione `containerDefinitions`, definisci un container con valori `mountPoints` che faccia riferimento al nome del volume definito e al valore `containerPath` per montare il volume sul container.

   ```
   "containerDefinitions": [
       {
           "name": "container-1",
           "mountPoints": [
           {
             "sourceVolume": "database",
             "containerPath": "/var/database"
           }
         ]
       },
       {
         "name": "container-2",
         "mountPoints": [
           {
             "sourceVolume": "database",
             "containerPath": "/var/database"
           }
         ]
       }
     ]
   ```

**Fornire lo spazio di archiviazione persistente per un container utilizzando un volume Docker**

 In questo esempio, un container utilizza un volume di dati NFS che viene montato automaticamente all'avvio dell'attività e viene smontato al termine. Questo utilizza il driver `local` integrato in Docker. Un esempio di caso d'uso potrebbe essere quello in cui hai un'archiviazione NFS locale e hai la necessità di accedervi attraverso un'attività ECS Anywhere. Ciò può essere ottenuto utilizzando un volume Docker con opzione driver NFS.

1. Nella sezione `volumes` della definizione di attività, definisci un volume di dati con i valori `name` e `DockerVolumeConfiguration`. In questo esempio, specifica un ambito `task` in modo che il volume venga smontato al termine dell'attività. Usa il driver `local` e configura le `driverOpts` con le opzioni `type`, `device` e `o` di conseguenza. Sostituisci `NFS_SERVER` con l'endpoint del server NFS.

   ```
   "volumes": [
          {
              "name": "NFS",
              "dockerVolumeConfiguration" : {
                  "scope": "task",
                  "driver": "local",
                  "driverOpts": {
                      "type": "nfs",
                      "device": "$NFS_SERVER:/mnt/nfs",
                      "o": "addr=$NFS_SERVER"
                  }
              }
          }
      ]
   ```

1. Nella sezione `containerDefinitions`, definisci un container con valori di `mountPoints` che facciano riferimento al nome del volume definito e al valore di `containerPath` per montare il volume sul container.

   ```
   "containerDefinitions": [
          {
              "name": "container-1",
              "mountPoints": [
                  {
                    "sourceVolume": "NFS",
                    "containerPath": "/var/nfsmount"
                  }
              ]
          }
      ]
   ```

# Utilizzo di montaggio vincolato con Amazon ECS
<a name="bind-mounts"></a>

Con i montaggi vincolati, un file o una directory su un host, ad esempio un'istanza Amazon EC2, sono montati in un container. I montaggi vincolati sono supportati per le attività ospitate su istanze Fargate o Amazon EC2. I montaggi vincolati sono legati al ciclo di vita del container che li utilizza. Una volta arrestati tutti i container che utilizzano un montaggio vincolato, ad esempio quando viene arrestata un'attività, i dati vengono rimossi. Per le attività ospitate su istanze Amazon EC2, i dati possono essere legati al ciclo di vita dell'istanza Amazon EC2 host specificando un `host` e un valore `sourcePath` facoltativo nella definizione di attività. Per ulteriori informazioni, consultare [Bind mounts](https://docs.docker.com/engine/storage/bind-mounts/) nella documentazione Docker.

I seguenti sono casi d'uso comune dei montaggi vincolati.
+ Per fornire un volume di dati vuoto da montare in uno o più container.
+ Per fornire un volume di dati host in uno o più container.
+ Per condividere un volume di dati da un container di origine con altri container nello stesso processo.
+ Per esporre un percorso e il relativo contenuto da un Dockerfile a uno o più container.

## Considerazioni su quando utilizzare i montaggi vincolati
<a name="bind-mount-considerations"></a>

Quando usi i montaggi vincolati, tieni presente le seguenti considerazioni.
+ Per impostazione predefinita, le attività ospitate AWS Fargate utilizzando una versione della piattaforma `1.4.0` o successiva (Linux) `1.0.0` o successiva (Windows) ricevono un minimo di 20 GiB di storage temporaneo per i bind mount. Puoi aumentare la quantità totale di archiviazione temporanea fino a un massimo di 200 GiB, specificando il parametro `ephemeralStorage` nella definizione di attività.
+ Per esporre i file da un Dockerfile a un volume di dati quando viene eseguito un processo, il piano dati di Amazon ECS cerca una direttiva `VOLUME`. Se il percorso assoluto specificato nella direttiva `VOLUME` è lo stesso presente nel `containerPath` specificato nella definizione di attività, i dati nel percorso della direttiva `VOLUME` vengono copiati sul volume di dati. Nell'esempio Dockerfile seguente, un file denominato `examplefile` nella directory `/var/log/exported` viene scritto sull'host e quindi montato all'interno del container.

  ```
  FROM public.ecr.aws/amazonlinux/amazonlinux:latest
  RUN mkdir -p /var/log/exported
  RUN touch /var/log/exported/examplefile
  VOLUME ["/var/log/exported"]
  ```

  Di default, le autorizzazioni dei volumi sono impostate su `0755` e il proprietario è `root`. Queste autorizzazioni possono essere personalizzate nel Dockerfile. L'esempio seguente definisce il proprietario della directory come `node`.

  ```
  FROM public.ecr.aws/amazonlinux/amazonlinux:latest
  RUN yum install -y shadow-utils && yum clean all
  RUN useradd node
  RUN mkdir -p /var/log/exported && chown node:node /var/log/exported
  RUN touch /var/log/exported/examplefile
  USER node
  VOLUME ["/var/log/exported"]
  ```
+ Per le attività ospitate su istanze Amazon EC2, quando non sono specificati i valori `host` e `sourcePath`, il daemon Docker gestisce il montaggio vincolato per tuo conto. Quando nessun container fa riferimento a questo montaggio vincolato, viene alla fine eliminato dal servizio di pulizia dell'attività dell'agente del container Amazon ECS. Per impostazione predefinita, ciò avviene tre ore dopo la chiusura del container. Tuttavia, puoi configurare questa durata con la variabile dell'agente `ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION`. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md). Se è necessario che questi dati vengano conservati oltre il ciclo di vita del container, specifica un valore `sourcePath` per il montaggio vincolato.
+ Per le attività ospitate su Amazon ECS Managed Instances, parti del filesystem root sono di sola lettura. Read/write i bind mount devono utilizzare directory scrivibili, ad esempio per dati persistenti o temporanei. `/var` `/tmp` Il tentativo di creare read/write bind mount su altre directory comporta l'impossibilità di avviare l'attività con un errore simile al seguente:

  ```
  error creating empty volume: error while creating volume path '/path': mkdir /path: read-only file system
  ```

  I bind mount di sola lettura (configurati nel `mountPoints` parametro) possono puntare `"readOnly": true` a qualsiasi directory accessibile sull'host.

  Per visualizzare un elenco completo di percorsi scrivibili, puoi eseguire un'attività su un'istanza gestita di Amazon ECS e utilizzarla per ispezionare la tabella di montaggio dell'istanza. Crea una definizione di attività con le seguenti impostazioni per accedere al filesystem host:

  ```
  {
      "pidMode": "host",
      "containerDefinitions": [{
          "privileged": true,
          ...
      }]
  }
  ```

  Quindi esegui i seguenti comandi dall'interno del contenitore:

  ```
  # List writable mounts
  cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^rw,/ || $4 == "rw" {print $2}' | sort
  
  # List read-only mounts
  cat /proc/1/root/proc/1/mounts | awk '$4 ~ /^ro,/ || $4 == "ro" {print $2}' | sort
  ```
**Importante**  
L'`privileged`impostazione concede al contenitore funzionalità estese sull'host, equivalenti all'accesso root. In questo esempio, viene utilizzata per ispezionare la tabella di montaggio dell'host a fini diagnostici. Per ulteriori informazioni, consulta [Evitare l'esecuzione di container con privilegi (Amazon EC2)](security-tasks-containers.md#security-tasks-containers-recommendations-avoid-privileged-containers).

  Per ulteriori informazioni sull'esecuzione interattiva dei comandi nei contenitori, vedere. [Monitora i container Amazon ECS con ECS Exec](ecs-exec.md)

# Specificare un montaggio vincolato in una definizione dell'attività Amazon ECS
<a name="specify-bind-mount-config"></a>

Per le attività Amazon ECS ospitate sull'istanza Fargate oppure sulle istanze Amazon EC2, il seguente frammento JSON della definizione di attività illustra la sintassi degli oggetti `volumes`, `mountPoints` e `ephemeralStorage` per una definizione di attività.

```
{
   "family": "",
   ...
   "containerDefinitions" : [
      {
         "mountPoints" : [
            {
               "containerPath" : "/path/to/mount_volume",
               "sourceVolume" : "string"
            }
          ],
          "name" : "string"
       }
    ],
    ...
    "volumes" : [
       {
          "name" : "string"
       }
    ],
    "ephemeralStorage": {
	   "sizeInGiB": integer
    }
}
```

Per le attività Amazon ECS ospitate su istanze Amazon EC2, puoi utilizzare il parametro `host` opzionale e un `sourcePath` quando specifichi i dettagli del volume dell'attività. Quando viene specificato, lega il montaggio vincolato al ciclo di vita dell'attività anziché al container.

```
"volumes" : [
    {
        "host" : {
            "sourcePath" : "string"
        },
        "name" : "string"
    }
]
```

Di seguito sono riportate descrizioni più dettagliate per ogni parametro di definizione di attività.

`name`  
▬Tipo: stringa  
Obbligatorio: no  
Nome del volume. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini (`-`) e trattini bassi (`_`). Nel parametro `sourceVolume` dell'oggetto `mountPoints` della definizione del container viene fatto riferimento a questo nome.

`host`  
Obbligatorio: no  
Il parametro `host` viene utilizzato per legare il ciclo di vita del montaggio vincolato all'istanza host di Amazon EC2 anziché al processo, dove invece è archiviato. Se il parametro `host` è vuoto, il daemon Docker assegna un percorso host per il tuo volume di dati, ma non è garantito che i dati vengano mantenuti dopo che viene interrotta l'esecuzione del container a essi associato.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`.  
Il `sourcePath` parametro è supportato solo quando si utilizzano attività ospitate su istanze Amazon EC2 o Amazon ECS Managed Instances.  
`sourcePath`  
▬Tipo: stringa  
Obbligatorio: no  
Quando viene utilizzato il parametro `host`, specifica un `sourcePath` per dichiarare il percorso sull'istanza Amazon EC2 dell'host presentata al container. Se questo parametro è vuoto, il daemon Docker assegna automaticamente un percorso host. Se il parametro `host` contiene una posizione del file `sourcePath`, il volume di dati rimane nella posizione specificata sull'istanza Amazon EC2 dell'host finché non viene eliminato manualmente. Se il valore `sourcePath` non esiste nell'istanza Amazon EC2 dell'host, viene creato automaticamente dal daemon Docker. Se la posizione è presente, i contenuti della cartella del percorso di origine vengono esportati.

`mountPoints`  
Tipo: array di oggetti  
Obbligatorio: no  
I punti di montaggio per i volumi di dati nel container. Questo parametro è mappato ai `Volumes` nella creazione container dell'API Docker e l'opzione `--volume` per docker run.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`. I container Windows non possono montare le directory su un'unità diversa e i punti di montaggio non possono essere utilizzati tra le unità. È necessario specificare i punti di montaggio per collegare un volume Amazon EBS direttamente a un'attività Amazon ECS.    
`sourceVolume`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il nome del volume da montare.  
`containerPath`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il percorso nel container in cui verrà montato il volume.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.  
Per le attività su istanze EC2 che eseguono il sistema operativo Windows, lasciare il valore predefinito di `false`.

`ephemeralStorage`  
Tipo: oggetto  
Obbligatorio: no  
La quantità di archiviazione temporanea da allocare per il processo. Questo parametro viene utilizzato per espandere la quantità totale di storage temporaneo disponibile, oltre la quantità predefinita, per le attività ospitate AWS Fargate utilizzando una versione della piattaforma `1.4.0` o successiva (Linux) o successiva (Windows). `1.0.0`  
È possibile utilizzare la CLI di Copilot CloudFormation, l' AWS SDK o la CLI per specificare lo storage temporaneo per un bind mount.

# Esempi di montaggio vincolato per Amazon ECS
<a name="bind-mount-examples"></a>

Gli esempi seguenti riguardano i casi d'uso comuni per l'utilizzo di un montaggio vincolato per i container.

**Come allocare una maggiore quantità di spazio di archiviazione temporanea per un processo Fargate**

Per le attività Amazon ECS ospitate su Fargate che utilizzano la versione della piattaforma `1.4.0` o successiva (Linux) o `1.0.0` o successiva (Windows), è possibile allocare più della quantità predefinita di storage temporaneo per i container nell'attività da utilizzare. Questo esempio può essere incorporato negli altri esempi per allocare più spazio di archiviazione temporanea per i processi Fargate.
+ Nella definizione di attività, definisci un oggetto `ephemeralStorage`. La `sizeInGiB` deve essere un numero intero compreso tra i valori di `21` e `200` ed è espresso in GiB.

  ```
  "ephemeralStorage": {
      "sizeInGiB": integer
  }
  ```

**Come fornire un volume di dati vuoto per uno o più container**

In alcuni casi, si può fornire ai container in un processo un po' di spazio scratch. Ad esempio, potresti avere due container di database che devono accedere alla stessa posizione di storage dei file temporanei durante un'attività. Questo può essere ottenuto utilizzando un montaggio vincolato.

1. Nella sezione `volumes` della definizione di attività, definisci un montaggio vincolato con il nome `database_scratch`.

   ```
     "volumes": [
       {
         "name": "database_scratch"
       }
     ]
   ```

1. Nella sezione `containerDefinitions`, crea le definizioni di container del database. in modo che montino il volume.

   ```
   "containerDefinitions": [
       {
         "name": "database1",
         "image": "my-repo/database",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "database_scratch",
             "containerPath": "/var/scratch"
           }
         ]
       },
       {
         "name": "database2",
         "image": "my-repo/database",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "database_scratch",
             "containerPath": "/var/scratch"
           }
         ]
       }
     ]
   ```

**Come utilizzare un percorso e il relativo contenuto in un Dockerfile in un container**

In questo esempio, hai un Dockerfile che scrive i dati che si desidera montare all'interno di un container. Questo esempio funziona per le attività ospitate su istanze di Fargate o Amazon EC2.

1. Crea un Dockerfile. L'esempio seguente utilizza l'immagine del container Amazon Linux 2 e crea un file denominato `examplefile` nella directory `/var/log/exported` che vogliamo montare all'interno del container. La direttiva `VOLUME` dovrebbe specificare un percorso assoluto.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   RUN mkdir -p /var/log/exported
   RUN touch /var/log/exported/examplefile
   VOLUME ["/var/log/exported"]
   ```

   Di default, le autorizzazioni dei volumi sono impostate su `0755` e il proprietario è `root`. Queste autorizzazioni possono essere modificate nel Dockerfile. Nell'esempio seguente il proprietario della directory `/var/log/exported`è impostato su `node`.

   ```
   FROM public.ecr.aws/amazonlinux/amazonlinux:latest
   RUN yum install -y shadow-utils && yum clean all
   RUN useradd node
   RUN mkdir -p /var/log/exported && chown node:node /var/log/exported					    
   USER node
   RUN touch /var/log/exported/examplefile
   VOLUME ["/var/log/exported"]
   ```

1. Nella sezione `volumes` della definizione di attività, definire un volume con il nome `application_logs`.

   ```
     "volumes": [
       {
         "name": "application_logs"
       }
     ]
   ```

1. Nella sezione `containerDefinitions`, crea le definizioni di container dell'applicazione. in modo che montino lo storage. Il valore `containerPath` deve corrispondere al percorso assoluto specificato nella direttiva `VOLUME` dal Dockerfile.

   ```
     "containerDefinitions": [
       {
         "name": "application1",
         "image": "my-repo/application",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "application_logs",
             "containerPath": "/var/log/exported"
           }
         ]
       },
       {
         "name": "application2",
         "image": "my-repo/application",
         "cpu": 100,
         "memory": 100,
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "application_logs",
             "containerPath": "/var/log/exported"
           }
         ]
       }
     ]
   ```

**Come fornire un volume di dati vuoto per un container legato al ciclo di vita dell'istanza host di Amazon EC2**

Per le attività ospitate su istanze Amazon EC2, puoi utilizzare i montaggi vincolati e avere i dati legati al ciclo di vita dell'istanza host di Amazon EC2. Puoi farlo utilizzando il parametro `host` e specificando un valore `sourcePath`. Tutti i file esistenti nel `sourcePath` vengono presentati ai container con il valore `containerPath`. Qualsiasi file scritto con il valore `containerPath` viene scritto con il valore `sourcePath`sull'istanza host di Amazon EC2.
**Importante**  
Amazon ECS non sincronizza il tuo spazio di archiviazione tra le istanze Amazon EC2. I processi che utilizzano archiviazione persistente possono essere posizionati su qualsiasi istanza Amazon EC2 nel cluster che abbia capacità disponibile. [Se le tue attività richiedono uno storage persistente dopo l'arresto e il riavvio, specifica sempre la stessa istanza Amazon EC2 al momento dell'avvio dell'attività con il comando start-task. AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/ecs/start-task.html) Puoi utilizzare anche volumi Amazon EFS per l'archiviazione persistente. Per ulteriori informazioni, consulta [Usare i volumi Amazon EFS con Amazon ECS](efs-volumes.md).

1. Nella sezione `volumes` della definizione di attività, definisci un montaggio vincolato con i valori `name` e `sourcePath`. Nell'esempio seguente, l'istanza host di Amazon EC2 contiene dati in `/ecs/webdata` che desideri montare all'interno del container.

   ```
     "volumes": [
       {
         "name": "webdata",
         "host": {
           "sourcePath": "/ecs/webdata"
         }
       }
     ]
   ```

1. Nella sezione `containerDefinitions`, definisci un container con i valori `mountPoints` che faccia riferimento al nome del montaggio vincolato definito e al valore `containerPath` per montare il montaggio vincolato sul container.

   ```
     "containerDefinitions": [
       {
         "name": "web",
         "image": "public.ecr.aws/docker/library/nginx:latest",
         "cpu": 99,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webdata",
             "containerPath": "/usr/share/nginx/html"
           }
         ]
       }
     ]
   ```

**Per montare un volume definito su più container in diverse posizioni**

Puoi definire un volume di dati in una definizione di attività e montarlo in posizioni diverse su container diversi. Ad esempio, il container host ha una cartella di dati del sito Web in `/data/webroot`. Si potrebbe voler montare il volume di dati in sola lettura su due server Web diversi che hanno radici di documenti diverse.

1. Nella sezione `volumes` della definizione di attività, definisci un volume di dati con il nome `webroot` e il percorso di origine `/data/webroot`.

   ```
     "volumes": [
       {
         "name": "webroot",
         "host": {
           "sourcePath": "/data/webroot"
         }
       }
     ]
   ```

1. Nella sezione `containerDefinitions`, definisci un container per ciascun server Web con i valori `mountPoints` che associano il volume `webroot` al valore `containerPath` puntando alla radice documento per tale container.

   ```
     "containerDefinitions": [
       {
         "name": "web-server-1",
         "image": "my-repo/ubuntu-apache",
         "cpu": 100,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webroot",
             "containerPath": "/var/www/html",
             "readOnly": true
           }
         ]
       },
       {
         "name": "web-server-2",
         "image": "my-repo/sles11-apache",
         "cpu": 100,
         "memory": 100,
         "portMappings": [
           {
             "containerPort": 8080,
             "hostPort": 8080
           }
         ],
         "essential": true,
         "mountPoints": [
           {
             "sourceVolume": "webroot",
             "containerPath": "/srv/www/htdocs",
             "readOnly": true
           }
         ]
       }
     ]
   ```

**Per montare i volumi da un altro container mediante `volumesFrom`**

Per le attività ospitate su istanze Amazon EC2, puoi definire uno o più volumi su un container e quindi utilizzare il parametro `volumesFrom` in un'altra definizione del container (all'interno della stessa attività) per montare tutti i volumi da `sourceContainer` sui relativi punti di montaggio definiti originariamente. Il parametro `volumesFrom` si applica ai volumi configurati nella definizione di attività e a quelli integrati nell'immagine con un Dockerfile.

1. (Opzionale) Per condividere un volume incorporato in un'immagine, usa l'istruzione `VOLUME` nel Dockerfile. Il seguente Dockerfile di esempio utilizza un'immagine `httpd` e quindi aggiunge un volume e lo monta su `dockerfile_volume` nella radice del documento Apache. È la cartella utilizzata dal server Web `httpd`.

   ```
   FROM httpd
   VOLUME ["/usr/local/apache2/htdocs/dockerfile_volume"]
   ```

   Puoi creare un'immagine con questo Dockerfile ed eseguirne il push a un repository, ad esempio Docker Hub, e utilizzarla nella definizione di attività. L'immagine `my-repo/httpd_dockerfile_volume` di esempio utilizzata nelle seguenti fasi è stata creata con il Dockerfile precedente.

1. Crea una definizione di attività che definisca gli altri volumi e punti di montaggio per i container. In questa sezione `volumes` di esempio, devi creare un volume vuoto denominato `empty`, gestito dal daemon Docker. Esiste anche un volume host definito che viene chiamato `host_etc`. Esporta la cartella `/etc` sull'istanza di container dell'host.

   ```
   {
     "family": "test-volumes-from",
     "volumes": [
       {
         "name": "empty",
         "host": {}
       },
       {
         "name": "host_etc",
         "host": {
           "sourcePath": "/etc"
         }
       }
     ],
   ```

   Nella sezione delle definizioni del container, crea un container che monti i volumi definiti in precedenza. In questo esempio, il container `web` monta i volumi `empty` e `host_etc`. Questo è il container che utilizza l'immagine creata con un volume nel Dockerfile.

   ```
   "containerDefinitions": [
       {
         "name": "web",
         "image": "my-repo/httpd_dockerfile_volume",
         "cpu": 100,
         "memory": 500,
         "portMappings": [
           {
             "containerPort": 80,
             "hostPort": 80
           }
         ],
         "mountPoints": [
           {
             "sourceVolume": "empty",
             "containerPath": "/usr/local/apache2/htdocs/empty_volume"
           },
           {
             "sourceVolume": "host_etc",
             "containerPath": "/usr/local/apache2/htdocs/host_etc"
           }
         ],
         "essential": true
       },
   ```

   Crea un altro container che utilizzi `volumesFrom` per montare tutti i volumi associati al container `web`. Tutti i volumi sul container `web` sono montati anche sul container `busybox`. È incluso il volume specificato nel Dockerfile utilizzato per creare l'immagine `my-repo/httpd_dockerfile_volume`.

   ```
       {
         "name": "busybox",
         "image": "busybox",
         "volumesFrom": [
           {
             "sourceContainer": "web"
           }
         ],
         "cpu": 100,
         "memory": 500,
         "entryPoint": [
           "sh",
           "-c"
         ],
         "command": [
           "echo $(date) > /usr/local/apache2/htdocs/empty_volume/date && echo $(date) > /usr/local/apache2/htdocs/host_etc/date && echo $(date) > /usr/local/apache2/htdocs/dockerfile_volume/date"
         ],
         "essential": false
       }
     ]
   }
   ```

   Quando questa attività viene eseguita, i volumi vengono montati dai due container e il `command` nel container `busybox` scrive la data e l'ora su un file. Questo file è chiamato `date` in ciascuna cartella dei volumi. che diventano quindi visibili sul sito Web visualizzato dal container `web`.
**Nota**  
Il container `busybox` esegue un comando rapido e poi si chiude, quindi deve essere impostato come `"essential": false` nella definizione del container. In caso contrario, l'intera attività viene interrotta quando si chiude.

# Gestione dello spazio di memoria di swap dei container su Amazon ECS
<a name="container-swap"></a>

Amazon ECS ti permette di controllare l'utilizzo dello spazio di memoria swap sulle istanze Amazon EC2 basate su Linux a livello di container. Utilizzando una configurazione swap per container, ogni container all'interno di una definizione di attività può avere lo swap abilitato o disabilitato. Per chi lo ha abilitato, la quantità massima di spazio di swap utilizzato può essere limitata. Ad esempio, i container critici per la latenza possono avere lo swap disabilitato. Al contrario, i contenitori con elevate richieste di memoria transitoria possono avere lo swap attivato per ridurre le possibilità di errori quando il contenitore è sotto carico. out-of-memory

La configurazione di swap per un container viene gestita dai seguenti parametri di definizione del container.

`maxSwap`  
La quantità totale di memoria di swap (in MiB) che un container può utilizzare. Questo parametro viene convertito nell'opzione `--memory-swap` in docker run dove il valore sarebbe la somma della memoria del container più il valore `maxSwap`.  
Se viene specificato il valore `maxSwap` di `0`, il container non utilizzerà lo swap. I valori accettati sono `0` o qualsiasi numero intero positivo. Se il parametro `maxSwap` viene omesso, il container utilizza la configurazione di swap per l'istanza di container su cui è in esecuzione. È necessario impostare un valore `maxSwap` per il parametro `swappiness` da utilizzare.

`swappiness`  
In questo modo è possibile ottimizzare il comportamento swappiness di memoria di un container. Un valore `swappiness` di `0` fa sì che swap non si verifichi se non richiesto. Un valore `swappiness` di `100` produrrà lo swap delle pagine in modo aggressivo. I valori accettati sono numeri interi compresi tra `0` e `100`. Se il parametro `swappiness` non è specificato, viene utilizzato un valore predefinito `60`. Se non viene specificato un valore per `maxSwap`, questo parametro verrà ignorato. Questo parametro è mappato all'opzione `--memory-swappiness` su docker run.

Nell'esempio seguente viene fornita la sintassi JSON.

```
"containerDefinitions": [{
        ...
        "linuxParameters": {
            "maxSwap": integer,
            "swappiness": integer
        },
        ...
}]
```

## Considerazioni
<a name="container-swap-considerations"></a>

Quando utilizzi una configurazione swap container, considera quanto segue:
+ Lo spazio di swap deve essere abilitato e allocato sull'istanza di Amazon EC2 che ospita le attività per consentire ai container di utilizzarlo. Per impostazione predefinita, gli Amazon ECS ottimizzati AMIs non hanno lo swap abilitato. È necessario abilitare lo swap sull'istanza per utilizzare questa funzionalità. Per maggiori informazioni, consultare [Instance Store Swap Volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html) nelle documentazioni *Guida per l'utente di Amazon EC2* o [Come posso allocare memoria da utilizzare come spazio di swap in un'istanza Amazon EC2 tramite un file di swap?](https://repost.aws/knowledge-center/ec2-memory-swap-file).
+ I parametri di definizione del container dello spazio di swap sono supportati solo per le definizioni di attività che specificano EC2. Questi parametri non sono supportati per le definizioni di attività destinate esclusivamente all'utilizzo di Amazon ECS su Fargate.
+ Questa caratteristica è supportata solo per i container Linux. Al momento i container Windows non sono supportati.
+ Se i parametri `maxSwap` e `swappiness` di definizione del container vengono omessi da una definizione di attività, ogni container avrà un valore `swappiness` predefinito di `60`. Inoltre, l'utilizzo totale dello swap è limitato a due volte la memoria del container.
+ Se utilizzi le attività su Amazon Linux 2023, il parametro `swappiness` non è supportato.

# Differenze nella definizione dell'attività di Amazon ECS per istanze gestite da Amazon ECS
<a name="managed-instances-tasks-services"></a>

Per utilizzare Istanze gestite da Amazon ECS, bisogna configurare la definizione dell'attività per utilizzare il tipo di avvio di istanze gestite da Amazon ECS. Sono possibili ulteriori considerazioni quando si utilizza Istanze gestite da Amazon ECS.

## Parametri di definizione di attività
<a name="managed-instances-task-parameters"></a>

I processi che utilizzano Istanze gestite da Amazon ECS supportano la maggior parte dei parametri di definizione delle attività Amazon ECS disponibili. Tuttavia, alcuni parametri presentano comportamenti o limitazioni specifici se utilizzati con attività di Istanze gestite da Amazon ECS.

I parametri di definizione delle attività seguenti non sono validi per le attività di Istanze gestite da Amazon ECS:
+ `disableNetworking`
+ `dnsSearchDomains`
+ `dnsServers`
+ `dockerLabels`
+ `dockerSecurityOptions`
+ `dockerVolumeConfiguration`
+ `ephemeralStorage`
+ `extraHosts`
+ `fsxWindowsFileServerVolumeConfiguration`
+ `hostname`
+ `inferenceAccelerator`
+ `ipcMode`
+ `links`
+ `maxSwap`
+ `proxyConfiguration`
+ `sharedMemorySize`
+ Volumi `sourcepath`
+ `swappiness`
+ `tmpfs`

I seguenti parametri di definizione delle attività sono validi in Istanze gestite da Amazon ECS, ma hanno delle limitazioni da considerare:
+ `networkConfiguration`: le attività di Istanze gestite da Amazon ECS utilizzano la modalità di rete `awsvpc` o `host`.
+ `placementConstraints`: sono supportati gli attributi di vincolo seguenti.
  + `ecs.subnet-id`
  + `ecs.availability-zone`
  + `ecs.instance-type`
  + `ecs.cpu-architecture`
+ `requiresCompatibilities`: è necessario includere `MANAGED_INSTANCES` per garantire che la definizione dell'attività sia compatibile con le istanze gestite da Amazon ECS.
+ `resourceRequirement`: `InferenceAccelerator` non è supportato.
+ `operatingSystemFamily`: Istanze gestite da Amazon ECS utilizza `LINUX`.
+ `volumes`- Quando si utilizzano bind mount con a`sourcePath`, il percorso deve puntare a una directory scrivibile sull'host. Parti del file system Amazon ECS Managed Instance sono di sola lettura. Le `/var` `/tmp` directory scrivibili includono e. Per ulteriori informazioni, consulta [Utilizzo di montaggio vincolato con Amazon ECS](bind-mounts.md).

Per assicurarsi che la definizione di attività sia valida per l'utilizzo con Istanze gestite da Amazon ECS, è possibile specificare quanto riportato di seguito quando si registra la definizione dell'attività: 
+ Nel campo Console di gestione AWS**Requires Compatibilities**, specificare. `MANAGED_INSTANCES`
+ Nel AWS CLI, specificare l'opzione. `--requires-compatibilities`
+ Nell'API Amazon ECS, specifica il flag `requiresCompatibilities`.

# Differenze nelle definizioni di attività Amazon ECS per Fargate
<a name="fargate-tasks-services"></a>

Per utilizzare Fargate, è necessario configurare la definizione dell'attività in modo da utilizzare il tipo di avvio Fargate. Ci sono ulteriori considerazioni quando si utilizza Fargate.

## Parametri di definizione di attività
<a name="fargate-task-parameters"></a>

I processi che utilizzano Fargate non supportano tutti i parametri di definizione dei processi di Amazon ECS disponibili. Alcuni parametri non sono supportati, mentre altri si comportano diversamente con i processi Fargate.

I parametri di definizione dei processi seguenti non sono validi nei processi Fargate:
+ `disableNetworking`
+ `dnsSearchDomains`
+ `dnsServers`
+ `dockerSecurityOptions`
+ `extraHosts`
+ `gpu`
+ `ipcMode`
+ `links`
+ `placementConstraints`
+ `privileged`
+ `maxSwap`
+ `swappiness`

I seguenti parametri di definizione dei processi sono validi in Fargate, ma hanno delle limitazioni da considerare:
+ `linuxParameters`: quando si indicano opzioni specifiche di Linux che vengono applicate al container, in `capabilities` l'unica capacità che puoi aggiungere è `CAP_SYS_PTRACE`. I parametri `devices`, `sharedMemorySize` e `tmpfs` non sono supportati. Per ulteriori informazioni, consulta [Parametri Linux](task_definition_parameters.md#container_definition_linuxparameters).
+ `volumes`: I processi Fargate supportano solo volumi host di montaggi vincolati, quindi il parametro `dockerVolumeConfiguration` non è supportato. Per ulteriori informazioni, consulta [Volumi](task_definition_parameters.md#volumes).
+ `cpu`: per container Windows su AWS Fargate, il valore non può essere inferiore a 1 vCPU.
+ `networkConfiguration`: le attività Fargate utilizzano sempre la modalità di rete `awsvpc`.

Per assicurarti che la definizione di attività sia valida per l'utilizzo con Fargate, puoi specificare quanto riportato di seguito quando registri la definizione di attività: 
+ Nel campo Console di gestione AWS, per il campo **Richiede compatibilità**, specificare. `FARGATE`
+ Nel AWS CLI, specificare l'opzione. `--requires-compatibilities`
+ Nell'API Amazon ECS, specifica il flag `requiresCompatibilities`.

## Sistemi operativi e architetture
<a name="fargate-task-os"></a>

Quando si configura una definizione di attività e container per AWS Fargate, è necessario specificare il sistema operativo eseguito dal container. Sono supportati i seguenti sistemi operativi per AWS Fargate:
+ Amazon Linux 2
**Nota**  
I container Linux utilizzano solo il kernel e la relativa configurazione del sistema operativo host. Ad esempio, la configurazione del kernel include i controlli di sistema `sysctl`. Un'immagine di container Linux può essere creata a partire da un'immagine di base che contiene i file e i programmi di qualsiasi distribuzione Linux. Se l'architettura della CPU corrisponde, puoi eseguire i container da qualsiasi immagine di container Linux e su qualsiasi sistema operativo.
+ Windows Server 2019 Full
+ Windows Server 2019 Core
+ Windows Server 2022 Full
+ Windows Server 2022 Core

Quando si eseguono container Windows su AWS Fargate, è necessario disporre di un'architettura CPU X86\$164.

Quando si eseguono contenitori Linux suAWS Fargate, è possibile utilizzare l'architettura della CPU X86\$164 o l' ARM64 architettura per le applicazioni basate su ARM. Per ulteriori informazioni, consulta [Definizioni di attività Amazon ECS per carichi di lavoro ARM a 64 bit](ecs-arm64.md).

## CPU e memoria del processo
<a name="fargate-tasks-size"></a>

Le definizioni di attività di Amazon ECS per AWS Fargate richiedono che la CPU e la memoria vengano specificate a livello di processo. Per la maggior parte dei casi d'uso è necessario specificare queste risorse solo a livello di processo. La tabella seguente illustra le combinazioni valide di CPU e memoria a livello di attività. È possibile specificare i valori di memoria nella definizione dell'attività come stringa in MiB o GB. Ad esempio, è possibile specificare un valore di memoria pari a `3072` in MiB o `3 GB` in GB. È possibile specificare i valori della CPU nel file JSON come stringa in unità CPU o in modalità virtuale (v). CPUs CPUs Ad esempio, è possibile specificare un valore di CPU come `1024` in unità CPU o `1 vCPU` in vCPUs.


|  Valore CPU  |  Valore memoria  |  Sistemi operativi supportati per AWS Fargate  | 
| --- | --- | --- | 
|  256 (0,25 vCPU)  |  512 MiB, 1 GB, 2 GB  |  Linux  | 
|  512 (0,5 vCPU)  |  1 GB, 2 GB, 3 GB, 4 GB  |  Linux  | 
|  1024 (1 vCPU)  |  2 GB, 3 GB, 4 GB, 5 GB, 6 GB, 7 GB, 8 GB  |  Linux, Windows  | 
|  2048 (2 vCPU)  |  Tra 4 GB e 16 GB in incrementi di 1 GB  |  Linux, Windows  | 
|  4096 (4 vCPU)  |  Tra 8 GB e 30 GB in incrementi di 1 GB  |  Linux, Windows  | 
|  8192 (8 vCPU)  Questa opzione richiede la piattaforma Linux `1.4.0` o successiva.   |  Tra 16 GB e 60 GB in incrementi di 4 GB  |  Linux  | 
|  16384 (16vCPU)  Questa opzione richiede la piattaforma Linux `1.4.0` o successiva.   |  Tra 32 GB e 120 GB in incrementi di 8 GB  |  Linux  | 

## Reti di attività
<a name="fargate-tasks-services-networking"></a>

I processi di Amazon ECS per AWS Fargate richiedono la modalità di rete `awsvpc`, la quale fornisce un'interfaccia di rete elastica a ciascun processo. Quando esegui un'attività o crei un servizio con questa modalità di rete, è necessario specificare una o più sottoreti per collegare l'interfaccia di rete e uno o più gruppi di sicurezza da applicare all'interfaccia di rete. 

Se usi sottoreti pubbliche, decidi se fornire un indirizzo IP pubblico per l'interfaccia di rete. Affinché un processo Fargate in una sottorete pubblica estragga le immagini del container, è necessario che un indirizzo IP pubblico sia assegnato all'interfaccia di rete elastica del processo con un routing a Internet o a un gateway NAT in grado di instradare le richieste a Internet. Affinché un processo Fargate in una sottorete privata estragga le immagini del container, è necessario un gateway NAT nella sottorete per instradare le richieste a Internet. Quando ospiti le immagini del container in Amazon ECR, puoi configurare Amazon ECR per utilizzare un endpoint VPC dell'interfaccia. In questo caso, l' IPv4 indirizzo privato dell'attività viene utilizzato per il pull dell'immagine. Per ulteriori informazioni sugli endpoint di interfaccia Amazon ECR, consulta [Endpoint VPC dell'interfaccia Amazon ECR (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html) nella *Guida per l'utente di Amazon Elastic Container Registry*.

Di seguito è riportato un esempio della sezione `networkConfiguration` per un servizio Fargate:

```
"networkConfiguration": { 
   "awsvpcConfiguration": { 
      "assignPublicIp": "ENABLED",
      "securityGroups": [ "sg-12345678" ],
      "subnets": [ "subnet-12345678" ]
   }
}
```

## Limiti delle risorse dei processi
<a name="fargate-resource-limits"></a>

Le definizioni di attività di Amazon ECS per container Linux su AWS Fargate supportano il parametro `ulimits` per definire i limiti di risorse da impostare per un container.

Le definizioni di attività di Amazon ECS per Windows su AWS Fargate non supportano il parametro `ulimits` per definire i limiti di risorse da impostare per un container.

I processi di Amazon ECS ospitati su Fargate utilizzano i valori del limite di risorse predefinito impostato dal sistema operativo, ad eccezione del parametro del limite di risorse `nofile`. Il limite di risorse `nofile` imposta una restrizione sul numero di file aperti che un container può utilizzare. Su Fargate, il limite flessibile `nofile` predefinito è ` 65535` mentre il limite rigido è `65535`. Puoi impostare i valori di entrambi i limiti fino a `1048576`.

Di seguito è riportato uno snippet di definizione di attività di esempio che mostra come definire un`nofile`limite che è stato raddoppiato:

```
"ulimits": [
    {
       "name": "nofile",
       "softLimit": 2048,
       "hardLimit": 8192
    }
]
```

Per ulteriori informazioni sugli altri limiti di risorse che possono essere modificati, consulta [Limiti delle risorse](task_definition_parameters.md#container_definition_limits).

## Registrazione dei log
<a name="fargate-tasks-logging"></a>

### Registrazione degli eventi
<a name="fargate-event-logging"></a>

Amazon ECS registra le azioni eseguite. EventBridge Puoi utilizzare Amazon ECS Events per EventBridge ricevere notifiche quasi in tempo reale sullo stato corrente dei tuoi cluster, servizi e attività Amazon ECS. Inoltre, puoi automatizzare le operazioni per rispondere a questi eventi. Per ulteriori informazioni, consulta [Automatizza le risposte agli errori di Amazon ECS utilizzando EventBridge](cloudwatch_event_stream.md).

### Registrazione del ciclo di vita delle attività
<a name="fargate-task-status"></a>

Le attività eseguite su Fargate pubblicano i timestamp per monitorare l'attività attraverso gli stati del ciclo di vita. Puoi visualizzare i timestamp nei dettagli dell'attività nel e descrivendo l'attività nella Console di gestione AWS e. AWS CLI SDKs Ad esempio, puoi utilizzare i timestamp per valutare il tempo impiegato dall'attività per scaricare le immagini di container e decidere se ottimizzare le dimensioni dell'immagine o utilizzare gli indici Seekable OCI. Per ulteriori informazioni sulle pratiche delle immagini di container, consulta [Best practice per le immagini dei container Amazon ECS](container-considerations.md).

### Registrazione dell'applicazione
<a name="fargate-app-logging"></a>

Le definizioni di attività di Amazon ECS per AWS Fargate supportano i driver di log `awslogs`, `splunk` e `awsfirelens` per la configurazione dei log.

Il driver di `awslogs` registro configura le attività di Fargate per inviare informazioni di registro ad Amazon CloudWatch Logs. È riportato di seguito un frammento di una definizione di attività in cui è configurato il driver di log `awslogs`:

```
"logConfiguration": { 
   "logDriver": "awslogs",
   "options": { 
      "awslogs-group" : "/ecs/fargate-task-definition",
      "awslogs-region": "us-east-1",
      "awslogs-stream-prefix": "ecs"
   }
}
```

Per ulteriori informazioni sull'utilizzo del driver di `awslogs` registro in una definizione di attività per inviare i log dei contenitori a Logs, consulta. CloudWatch [Invia i log di Amazon ECS a CloudWatch](using_awslogs.md)

Per ulteriori informazioni sul driver di log `awsfirelens`, consulta [Inviare i log di Amazon ECS a un servizio o AWS AWS Partner](using_firelens.md).

Per ulteriori informazioni su come utilizzare il driver di log `splunk`, consulta [Driver di log `splunk`](example_task_definitions.md#example_task_definition-splunk).

## Archiviazione dei processi
<a name="fargate-tasks-storage"></a>

Per i processi Amazon ECS ospitati su Fargate, sono supportati i seguenti tipi di archiviazione:
+ I volumi Amazon EBS forniscono un'archiviazione a blocchi conveniente, durevole e ad alte prestazioni per carichi di lavoro containerizzati a uso intensivo di dati. Per ulteriori informazioni, consulta [Usare i volumi Amazon EBS con Amazon ECS](ebs-volumes.md).
+ Volumi Amazon EFS per l'archiviazione persistente. Per ulteriori informazioni, consulta [Usare i volumi Amazon EFS con Amazon ECS](efs-volumes.md).
+ Montaggi vincolati per l'archiviazione temporanea. Per ulteriori informazioni, consulta [Utilizzo di montaggio vincolato con Amazon ECS](bind-mounts.md).

## Caricamento lento delle immagini di container utilizzando Seekable OCI (SOCI)
<a name="fargate-tasks-soci-images"></a>

Le attività di Amazon ECS su Fargate che utilizzano la versione della piattaforma Linux `1.4.0` possono utilizzare Seekable OCI (SOCI) per avviare le attività più velocemente. Con SOCI, i container trascorrono solo pochi secondi sul recupero dell'immagine prima di avviarsi, lasciando così il tempo necessario per la configurazione dell'ambiente e la creazione di istanze dell'applicazione mentre l'immagine viene scaricata in background. Questo processo si chiama *caricamento lento*. Quando Fargate avvia un'attività Amazon ECS, rileva automaticamente se esiste un indice SOCI per un'immagine nell'operazione e avvia il container senza attendere che l'intera immagine venga scaricata.

Per i container che funzionano senza indici SOCI, le immagini di container vengono scaricate completamente prima dell'avvio di quest'ultimo. Questo comportamento avviene su tutte le altre versione della piattaforma di Fargate e sull'AMI ottimizzata per Amazon ECS sulle istanze Amazon EC2.

Seekable OCI (SOCI) è una tecnologia open source sviluppata da Seekable OCI AWS che può avviare i container più velocemente caricando pigramente l'immagine del contenitore. SOCI funziona creando un indice (indice SOCI) dei file all'interno di un'immagine di container esistente. Questo indice aiuta ad avviare i container più velocemente, offrendo la possibilità di estrarre un singolo file da un'immagine di container prima di scaricare l'intera immagine. L'indice SOCI deve essere archiviato come artefatto nello stesso repository dell'immagine all'interno del registro dei container. Devi utilizzare solo indici SOCI provenienti da fonti attendibili, poiché l'indice è la fonte autorevole per il contenuto dell'immagine. Per ulteriori informazioni, consulta [Introduzione a Seekable OCI per il caricamento lento delle immagini di container](https://aws.amazon.com/about-aws/whats-new/2022/09/introducing-seekable-oci-lazy-loading-container-images/).

I clienti che desiderano utilizzare SOCI potranno usare solo il manifesto dell'indice SOCI v2. I clienti esistenti che hanno già utilizzato SOCI su Fargate possono continuare a usare il manifesto dell'indice SOCI v1, tuttavia consigliamo vivamente di migrare al manifesto dell'indice SOCI v2. Il manifesto dell'indice SOCI v2 crea una relazione esplicita tra le immagini dei container e i relativi indici SOCI per garantire implementazioni coerenti.
<a name="fargate-soci-considerations"></a>
**Considerazioni**  
Se desideri che Fargate utilizzi un indice SOCI per caricare lentamente le immagini di container in un'attività, considera le seguenti informazioni:
+ Solo le attività eseguite sulla versione della piattaforma Linux `1.4.0` possono utilizzare gli indici SOCI. Le attività che eseguono i container Windows su Fargate non sono supportate.
+ Sono supportate le attività eseguite sull'architettura della CPU X86\$164 o ARM64.
+ Le immagini di container nella definizione delle attività devono essere archiviate in un registro di immagini compatibile. Di seguito sono elencati i registri compatibili:
  + Registri privati Amazon ECR.
+ Sono supportate solo le immagini di container che utilizzano la compressione gzip o non sono compresse. Le immagini di container che utilizzano la compressione zstd non sono supportate.
+ Per il manifesto dell'indice SOCI v2, la generazione di un manifesto dell'indice SOCI modifica il manifesto dell'immagine del container in quanto viene aggiunta un'annotazione per tale indice. Ciò si traduce in un nuovo digest di immagini del container. Il contenuto dei livelli del filesystem delle immagini del container non cambia.
+ Per il manifesto dell'indice SOCI v2, quando l'immagine del container è già stata archiviata nel repository di immagini del container, dopo aver generato un indice SOCI, è necessario ripristinare l'immagine del container. Il reinserimento dell'immagine del container non aumenterà i costi di archiviazione duplicando i livelli del filesystem, ma caricherà solo un nuovo file manifesto.
+ Consigliamo di provare il caricamento lento con immagini di container con dimensioni della compressione superiori a 250 MiB. È meno probabile che si verifichi una riduzione del tempo necessario per caricare immagini più piccole.
+ Poiché il caricamento lento può modificare il tempo di avvio delle attività, potrebbe essere necessario modificare diversi timeout, ad esempio il periodo di tolleranza del controllo dell'integrità per Elastic Load Balancing.
+ Se si desidera evitare che un'immagine di container venga caricata lentamente, sarà necessario eseguire di nuovo il push dell'immagine di container senza un indice SOCI allegato.
<a name="create-soci"></a>
**Creazione di un indice Seekable OCI**  
Affinché un'immagine del container venga caricata lentamente, è necessario un indice SOCI (un file di metadati) creato e archiviato nel repository di immagini del container insieme all'immagine del container. Per creare e inviare un indice SOCI puoi utilizzare lo strumento CLI [soci-snapshotter](https://github.com/awslabs/soci-snapshotter) open source. GitHub In alternativa, puoi implementare SOCI Index Builder. CloudFormation AWS Si tratta di una soluzione serverless che crea e invia automaticamente un indice SOCI quando un'immagine del container viene inviata ad Amazon ECR. Per ulteriori informazioni sulla soluzione e sui passaggi di installazione, consulta [CloudFormation AWS SOCI Index](https://awslabs.github.io/cfn-ecr-aws-soci-index-builder/) Builder su. GitHub CloudFormation AWS SOCI Index Builder è un modo per automatizzare l'avvio a usare SOCI, mentre lo strumento open source soci offre una maggiore flessibilità nella generazione di indici e la capacità di integrare la generazione di indici nelle pipeline di integrazione continua e distribuzione continua (CI/CD).

**Nota**  
Affinché l'indice SOCI possa essere creato per un'immagine, l'immagine deve esistere nell'archivio di immagini containerd sul computer che esegue `soci-snapshotter`. Se l'immagine è nell'archivio di immagini Docker, non può essere trovata.
<a name="verify-soci"></a>
**Verificare che un'attività abbia utilizzato il caricamento lento**  
Per verificare che sia stato utilizzato il caricamento lento per un'attività tramite SOCI, controlla l'endpoint dei metadati dell'operazione dall'interno dell'attività. Quando esegui query sulla versione 4 dell'endpoint metadati delle attività, viene visualizzato un campo `Snapshotter` nel percorso predefinito per il container da cui esegui la query. Inoltre, vengono visualizzati campi `Snapshotter` per ogni container nel percorso `/task`. Il valore predefinito per questo campo è `overlayfs`, e questo campo è impostato su `soci` se viene utilizzato SOCI. Per verificare che un manifesto dell'indice SOCI v2 sia allegato a un'immagine del container, è possibile recuperare l'indice delle immagini da Amazon ECR utilizzando AWS CLI.

```
IMAGE_REPOSITORY=r
IMAGE_TAG=latest

aws ecr batch-get-image \
    --repository-name=$IMAGE_REPOSITORY \
    --image-ids imageTag=$IMAGE_TAG \
    --query 'images[0].imageManifest' --output text | jq -r '.manifests[] | select(.artifactType=="application/vnd.amazon.soci.index.v2+json")'
```

Per verificare che un manifesto dell'indice SOCI v1 sia allegato a un'immagine del container, puoi utilizzare l'API OCI Referrers.

```
ACCOUNT_ID=111222333444
AWS_REGION=us-east-1
IMAGE_REPOSITORY=nginx-demo
IMAGE_TAG=latest
IMAGE_DIGEST=$(aws ecr describe-images --repository-name $IMAGE_REPOSITORY --image-ids imageTag=$IMAGE_TAG --query 'imageDetails[0].imageDigest' --output text)
ECR_PASSWORD=$(aws ecr get-login-password)

curl \
    --silent \
    --user AWS:$ECR_PASSWORD \
    https://$ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/v2/$IMAGE_REPOSITORY/referrers/$IMAGE_DIGEST?artifactType=application%2Fvnd.amazon.soci.index.v1%2Bjson | jq -r '.'
```

# Differenze nella definizione dell'attività di Amazon ECS per istanze EC2 eseguite su Windows
<a name="windows_task_definitions"></a>

Le attività che vengono eseguire su istanze Windows EC2 non supportano tutti i parametri di definizione dei processi di Amazon ECS disponibili. Alcuni parametri non sono supportati, mentre altri si comportano diversamente.

Le definizioni di attività seguenti non sono supportate per le definizioni di attività Windows di Amazon EC2:
+ `containerDefinitions`
  + `disableNetworking`
  + `dnsServers`
  + `dnsSearchDomains`
  + `extraHosts`
  + `links`
  + `linuxParameters`
  + `privileged`
  + `readonlyRootFilesystem`
  + `user`
  + `ulimits`
+ `volumes`
  + `dockerVolumeConfiguration`
+ `cpu`

  Consigliamo di specificare la CPU a livello di container per i container Windows.
+ `memory`

  Consigliamo di specificare la memoria a livello di container per i container Windows.
+ `proxyConfiguration`
+ `ipcMode`
+ `pidMode`
+ `taskRoleArn`

  I ruoli IAM per le attività sulle istanze Windows EC2 richiedono una configurazione aggiuntiva, ma gran parte di questa configurazione è analoga alla configurazione dei ruoli IAM per le attività nelle istanze di container Linux. Per ulteriori informazioni, consulta [Configurazione aggiuntiva delle istanze Windows di Amazon EC2](task-iam-roles.md#windows_task_IAM_roles).

# Creazione di una definizione di attività di Amazon ECS attraverso la nuova console
<a name="create-task-definition"></a>

Creare una definizione di attività in modo da poter definire l'applicazione che si esegue come attività o servizio.

Quando si crea una definizione di attività per il tipo di avvio esterno, è necessario creare la definizione dell'attività utilizzando l'editor JSON e impostare il parametro `requireCapabilities` su `EXTERNAL`.

È possibile creare una definizione di attività utilizzando l'esperienza della console o specificando un file JSON. È possibile fare in modo che Amazon Q fornisca consigli quando si usa l'editor JSON. Per ulteriori informazioni, consulta [Utilizzo di Amazon Q Developer per fornire i suggerimenti sulla definizione delle attività nella console Amazon ECS](using-amazon-q.md)

## Convalida JSON
<a name="json-validate-for-create"></a>

L'editor JSON della console Amazon ECS verifica quanto segue nel file JSON:
+ Il file è un file JSON valido.
+ Il file non contiene chiavi esterne.
+ Il file contiene il parametro `familyName`.
+ C'è almeno una voce sotto. `containerDefinitions`

## CloudFormation pile
<a name="cloudformation-stack"></a>

Il comportamento seguente si applica alle definizioni di attività che sono state create nella nuova console Amazon ECS prima del 12 gennaio 2023.

Quando crei una definizione di attività, la console Amazon ECS crea automaticamente uno CloudFormation stack con un nome che inizia con. `ECS-Console-V2-TaskDefinition-` Se hai utilizzato AWS CLI o un AWS SDK per annullare la registrazione della definizione dell'attività, devi eliminare manualmente lo stack di definizione dell'attività. Per ulteriori informazioni, consultare [Deleting a stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) nella *Guida per l'utente di CloudFormation *.

Per le definizioni delle attività create dopo il 12 gennaio 2023 non viene creato automaticamente uno CloudFormation stack per esse.

## Procedura
<a name="create-task-procedure"></a>

------
#### [ Amazon ECS console ]

1. [Apri la console nella versione 2https://console.aws.amazon.com/ecs/.](https://console.aws.amazon.com/ecs/v2)

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Nel menu **Creare nuova definizione di attività**, scegliere **Crea nuova definizione attività**.

1. Per **Task definition family** (Famiglia della definizione di attività) specifica un nome univoco per la definizione di attività.

1. Per **Tipo di avvio**, scegli l'ambiente dell'applicazione. L'impostazione predefinita della console è **AWS Fargate** (che è serverless). Amazon ECS utilizza questo valore per eseguire la convalida così da garantire che i parametri di definizione di attività siano validi per il tipo di infrastruttura.

1. In **Operating system/Architecture** (Sistema operativo/Architettura), scegli il sistema operativo e l'architettura della CPU per il processo. 

   Per eseguire l'attività su un'architettura ARM a 64 bit, scegli **ARM64Linux/**. Per ulteriori informazioni, consulta [Piattaforma di runtime](task_definition_parameters.md#runtime-platform).

   Per eseguire le attività **AWS Fargate** sui container Windows, scegli un sistema operativo Windows supportato. Per ulteriori informazioni, consulta [Sistemi operativi e architetture](fargate-tasks-services.md#fargate-task-os).

1. Per **Task size** (Dimensioni attività), specifica i valori di CPU e memoria da riservare per l'attività. Il valore della CPU è specificato come v CPUs e la memoria è specificata come GB.

   Per i processi ospitati su Fargate, nella tabella seguente sono riportate le combinazioni valide di CPU e memoria.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/create-task-definition.html)

   Per le attività che utilizzano istanze EC2 o istanze esterne, i valori della CPU delle attività supportate sono compresi tra 128 unità CPU (0,125 vCPUs) e 196608 unità CPU (192 v). CPUs

   Per specificare il valore di memoria in GB, immetti **GB** dopo il valore. Ad esempio, per impostare il **valore di memoria** su 3 GB, immetti **3 GB**.
**Nota**  
I parametri della CPU e della memoria a livello di processo vengono ignorati per i container Windows.

1. In **Network mode** (Modalità di rete), scegli la modalità di rete da utilizzare. L'impostazione di default è la modalità **awsvpc**. Per maggiori informazioni, consulta [Networking attività Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html).

   Se si sceglie **bridge**, in **Mappature delle porte**, per **Porta host**, specificare il numero di porta nell'istanza di container per prenotare per il container.

1. (Facoltativo) Espandi la sezione **Task roles** per configurare i ruoli AWS Identity and Access Management (IAM) per l'attività:

   1. Per **Task role** (Ruolo attività), scegli il ruolo IAM da assegnare all'attività. Un ruolo IAM di task fornisce le autorizzazioni per i contenitori di un'attività per richiamare le operazioni AWS API.

   1. Per **Ruolo di esecuzione attività**, scegli il ruolo.

      Per informazioni sui casi in cui utilizzare il ruolo di esecuzione di attività, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md). Se non serve il ruolo, scegliere **Nessuno**.

1. (Facoltativo) Espandere la sezione **Posizionamento delle attività** per aggiungere vincoli di posizionamento. I vincoli di posizionamento dell'attività consentono di filtrare le istanze di container utilizzate per il posizionamento delle attività tramite attributi integrati o personalizzati.

1. (Facoltativo) Espandere la sezione **iniezione di guasti** per abilitarla. L'iniezione di guasti consente di testare la risposta dell'applicazione a determinati scenari di compromissione.

1. Per ogni container da definire nella tua definizione di attività, completa la procedura seguente.

   1. In **Name** (Nome) immetti un nome per il container.

   1. Per **Image URI** (URI immagine), specifica l'immagine da utilizzare per avviare un container. Le immagini nel registro Galleria pubblica di Amazon ECR possono essere specificate utilizzando solo il nome del registro pubblico di Amazon ECR. Ad esempio, se è specificato `public.ecr.aws/ecs/amazon-ecs-agent:latest`, viene utilizzato il container Amazon Linux ospitato su Galleria pubblica di Amazon ECR. Per tutti gli altri repository, specificare il repository utilizzando i formati `repository-url/image:tag` o `repository-url/image@digest`.

   1. Se l'immagine si trova in un registro privato esterno ad Amazon ECR, in **Registro privato**, attiva **Autenticazione del registro privato**. Quindi, in **ARN o nome di Gestione dei segreti**, inserisci il nome della risorsa Amazon (ARN) del segreto.

   1. In **Container essenziale**, se la definizione del processo ha due o più container definiti, è possibile specificare se il container deve essere considerato essenziale. Quando un container è contrassegnato come **Essenziale**, in caso di arresto, il processo viene interrotto. Ogni definizione di attività deve contenere almeno un container essenziale.

   1. La mappatura delle porte consente ai container di accedere alle porte sull'host per inviare o ricevere traffico. In **Port mappings** (Mappature di porte), esegui una delle operazioni seguenti: 
      + Quando utilizzi la modalità di rete **awsvpc**, in **Container port** (Porta del container) e **Protocol** (Protocollo), specifica la mappatura delle porte da utilizzare per il container.
      + Quando utilizzi la modalità di rete **bridge**, in **Container port** (Porta del container) e **Protocol** (Protocollo), specifica la mappatura delle porte da utilizzare per il container.

      Scegli **Add more port mappings** (Aggiungi altre mappature porta) per specificare mappature aggiuntive delle porte del container.

   1. Per consentire al container l'accesso in sola lettura al file system root, per **File system root di sola lettura**, seleziona **Sola lettura**.

   1. (Facoltativo) Per definire dei limiti di CPU, GPU e memoria a livello di container diversi dai valori a livello di attività, in **Limiti di allocazione delle risorse**, procedere come segue:
      + Per **CPU**, inserire il numero di unità di CPU che l'agente di container di Amazon ECS deve riservare per il container.
      + Per **GPU**, inserisci il numero di unità di GPU per l'istanza di container. 

        Un'istanza Amazon EC2 con supporto GPU dispone di 1 unità di GPU per ogni GPU. Per ulteriori informazioni, consulta [Definizioni di attività Amazon ECS per carichi di lavoro GPU](ecs-gpu.md).
      + Per **Limite di memoria rigido**, inserire la quantità di memoria, in GB, da prenotare per il container. Se il container tenta di superare il limite rigido, si arresta.
      + Il Docker 20.10.0 o daemon successivo prenota un minimo di 6 mebibytes (MiB) di memoria per un container, perciò non specificarne di meno per i container.

        Il Docker 19.03.13-ce o daemon precedente prenota un minimo di 4 MiB di memoria per un container, perciò non specificare meno di 4 MiB di memoria per i container.
      + Per **Limite di memoria flessibile**, inserisci il limite flessibile (in GB) di memoria da prenotare per il container. 

        Quando la memoria di sistema è in conflitto, Docker tenta di conservare la memoria del container entro questo limite flessibile. Se non specifichi la memoria a livello di attività, devi indicare un numero intero diverso da zero per uno o entrambi i parametri **Limite di memoria rigido** e **Limite di memoria flessibile**. Se specifichi entrambi, **Limite di memoria rigido** deve essere maggiore di **Limite di memoria flessibile**. 

        Questa funzionalità non è supportata per i container Windows.

   1. (Facoltativo) Espandi la sezione **Variabili di ambiente** per specificare le variabili di ambiente da inserire nel container. È possibile specificare variabili di ambiente singolarmente utilizzando coppie chiave-valore o in blocco specificando un file variabile di ambiente ospitato in un bucket Amazon S3. Per informazioni su come formattare un file di variabile di ambiente, consultare [Passare una singola variabile di ambiente a un container Amazon ECS](taskdef-envfiles.md).

      Quando si specifica una variabile di ambiente per l'archiviazione segreta, immettere il nome segreto in **Chiave**. Quindi **ValueFrom**, inserisci l'ARN completo del segreto di Systems Manager Parameter Store o del segreto di Secrets Manager 

   1. (Facoltativo) Seleziona l'opzione **Usa raccolta di log** per specificare una configurazione di log. Per ogni driver di log disponibile, sono disponibili opzioni del driver di log da specificare. L'opzione predefinita invia i log dei contenitori ad Amazon CloudWatch Logs. Le altre opzioni del driver di registro vengono configurate utilizzando. AWS FireLens Per ulteriori informazioni, consulta [Inviare i log di Amazon ECS a un servizio o AWS AWS Partner](using_firelens.md).

      Di seguito sono riportate descrizioni più dettagliate per ogni destinazione di log di container.
      + **Amazon CloudWatch**: configura l'attività per inviare i log dei container a CloudWatch Logs. Vengono fornite le opzioni predefinite dei driver di registro, che creano un gruppo di CloudWatch log per tuo conto. Per specificare un nome del gruppo di log diverso, modifica i valori dell'opzione del driver.
      + **Esporta i log in Splunk**: configura l'attività per inviare i log del container al driver Splunk che a sua volta li invia a un servizio remoto. È necessario immettere l'URL al servizio Web Splunk. Il token Splunk è specificato come opzione segreta perché può essere trattato come dati sensibili.
      + **Esporta i log in Amazon Data Firehose**: configura l'attività per inviare i log del container a Firehose. Vengono fornite le opzioni di driver di log predefinite che inviano i log a un flusso di consegna Firehose. Per specificare un nome del flusso di consegna diverso, modifica i valori dell'opzione del driver.
      + **Esporta i log in Flusso di dati Amazon Kinesis**: configura l'attività per inviare i log del container a Flusso di dati Kinesis. Vengono fornite le opzioni di driver di log predefinite che inviano i log a un flusso di consegna Kinesis Data Streams. Per specificare un nome del flusso diverso, modifica i valori dell'opzione del driver.
      + **Esporta i log su Amazon OpenSearch Service**: configura l'attività per inviare i log dei container a un dominio di OpenSearch servizio. Devono essere fornite le opzioni del driver di log.
      + **Esporta i log in Amazon S3**: configura l'attività per inviare i log del container a un bucket Amazon S3. Vengono fornite le opzioni del driver di log predefinito, ma è necessario specificare un nome del bucket Amazon S3 valido.

   1. (Facoltativo) Configura i parametri del container aggiuntivi.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/create-task-definition.html)

   1. (Facoltativo) Scegli **Add more containers** (Aggiungi altri container) per aggiungere altri container alla definizione del processo. 

1. (Facoltativo) La sezione **Archiviazione** viene utilizzata per espandere la quantità di archiviazione temporanea per i processi ospitati su Fargate. È inoltre possibile utilizzare questa sezione per aggiungere una configurazione del volume di dati per l'attività.

   1. Per espandere lo spazio di archiviazione temporaneo disponibile oltre il valore predefinito di 20 gibibytes (GiB) per le attività Fargate, in **Quantità**, immetti un valore massimo di 200 GiB.

1. (Facoltativo) Per aggiungere una configurazione del volume di dati per la definizione di attività, scegliere **Aggiungi volume**, quindi seguire questi passaggi.

   1. Per **Nome volume**, immetti un nome per il volume di dati. Il nome del volume di dati viene utilizzato quando si crea un punto di montaggio del container.

   1. Per **Configurazione del volume**, selezionare se si desideri configurare il volume durante la creazione della definizione dell'attività o durante l'implementazione.
**Nota**  
I volumi che possono essere configurati durante la creazione di una definizione di attività includono Bind mountDocker, Amazon EFS e Amazon FSx for Windows File Server. Volumi che possono essere configurati al momento dell'implementazione durante l'esecuzione di un'attività o durante la creazione o l'aggiornamento di un servizio includono Amazon EBS.

   1. Per **Tipo di volume**, selezionare un tipo di volume compatibile con il tipo di configurazione selezionato, quindi configurarlo.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/create-task-definition.html)

1. Per aggiungere un volume da un altro container, scegli **Aggiungi volume da**, quindi configura gli elementi seguenti:
   + Per **Container**, seleziona il container.
   + Per **Origine**, scegli il container contenente il volume da montare.
   + Per **Sola lettura**, seleziona se il container ha accesso in sola lettura al volume.

1. (Facoltativo) Per configurare le impostazioni di tracciamento e raccolta delle metriche dell'applicazione utilizzando l' AWS Distro for OpenTelemetryintegrazione, espandi **Monitoraggio**, quindi seleziona **Usa la raccolta** dei parametri per raccogliere e inviare i parametri per le tue attività ad Amazon o CloudWatch Amazon Managed Service for Prometheus. Quando questa opzione è selezionata, Amazon ECS crea un AWS Distro for OpenTelemetry container sidecar preconfigurato per inviare i parametri dell'applicazione. Per ulteriori informazioni, consulta [Correla le prestazioni delle applicazioni Amazon ECS utilizzando i parametri delle applicazioni](metrics-data.md).

   1. Quando **Amazon CloudWatch** è selezionato, i parametri delle tue applicazioni personalizzate vengono indirizzati a CloudWatch come metriche personalizzate. Per ulteriori informazioni, consulta [Esportazione dei parametri delle applicazioni su Amazon CloudWatch](application-metrics-cloudwatch.md).
**Importante**  
Quando si esportano i parametri delle applicazioni in Amazon CloudWatch, la definizione dell'attività richiede un ruolo IAM dell'attività con le autorizzazioni richieste. Per ulteriori informazioni, consulta [Autorizzazioni IAM richieste per AWS Distro per OpenTelemetry l'integrazione con Amazon CloudWatch](application-metrics-cloudwatch.md#application-metrics-cloudwatch-iam). 

   1. Quando selezioni **Amazon Managed Service for Prometheus (Prometheus libraries instrumentation)** (Amazon Managed Service for Prometheus [strumentazione delle librerie Prometheus]), la CPU, la memoria, la rete e i parametri di archiviazione a livello di processo e i parametri delle applicazioni personalizzati vengono instradati ad Amazon Managed Service for Prometheus. Per **Endpoint di scrittura remota dell'area di lavoro**, specificare l'URL dell'endpoint di scrittura remota per l'area di lavoro Prometheus. Per **Destinazione di scraping**, specificare l'host e la porta che il raccoglitore AWS Distro for OpenTelemetry può utilizzare per lo scraping dei dati delle metriche. Per ulteriori informazioni, consulta [Esportazione di parametri delle applicazioni in Amazon Managed Service for Prometheus](application-metrics-prometheus.md).
**Importante**  
Quando si esportano i parametri delle applicazioni in Amazon Managed Service for Prometheus, la definizione di attività richiede un ruolo IAM del processo con le autorizzazioni richieste. Per ulteriori informazioni, consulta [Autorizzazioni IAM richieste per AWS Distro per OpenTelemetry l'integrazione con Amazon Managed Service for Prometheus](application-metrics-prometheus.md#application-metrics-prometheus-iam). 

   1. Quando selezioni **Amazon Managed Service for Prometheus OpenTelemetry (strumentazione**), i parametri di CPU, memoria, rete e storage a livello di attività e i parametri delle applicazioni personalizzate vengono indirizzati ad Amazon Managed Service for Prometheus. Per **Endpoint di scrittura remota dell'area di lavoro**, specificare l'URL dell'endpoint di scrittura remota per l'area di lavoro Prometheus. Per ulteriori informazioni, consulta [Esportazione di parametri delle applicazioni in Amazon Managed Service for Prometheus](application-metrics-prometheus.md).
**Importante**  
Quando si esportano i parametri delle applicazioni in Amazon Managed Service for Prometheus, la definizione di attività richiede un ruolo IAM del processo con le autorizzazioni richieste. Per ulteriori informazioni, consulta [Autorizzazioni IAM richieste per AWS Distro per OpenTelemetry l'integrazione con Amazon Managed Service for Prometheus](application-metrics-prometheus.md#application-metrics-prometheus-iam). 

1. (Facoltativo) Espandi la sezione **Tags** (Tag) per aggiungere tag, come coppie chiave-valore, alla definizione di attività.
   + [Aggiungi un tag] Scegli **Add tag** (Aggiungi tag), quindi effettuare le seguenti operazioni:
     + In **Chiave**, immetti il nome della chiave.
     + In **Valore**, immetti il valore della chiave.
   + [Rimuovere un tag] Accanto al tag, scegliere **Remove tag (Rimuovi tag)**.

1. Scegli **Crea** per registrare la definizione di attività.

------
#### [ Amazon ECS console JSON editor ]

1. [https://console.aws.amazon.com/ecs/Apri](https://console.aws.amazon.com/ecs/v2) la console nella versione 2.

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Nel menu **Crea nuova definizione di attività**, scegliere **Crea nuova definizione attività con JSON**.

1. Nella casella dell'editor JSON, modifica il tuo file JSON,

   Il JSON deve superare i controlli di convalida specificati in [Convalida JSON](#json-validate-for-create).

1. Scegli **Create** (Crea).

------

# Utilizzo di Amazon Q Developer per fornire i suggerimenti sulla definizione delle attività nella console Amazon ECS
<a name="using-amazon-q"></a>

Quando utilizzi l'editor JSON nella console Amazon ECS per creare una definizione di attività, puoi utilizzare Amazon Q Developer per fornire suggerimenti di codice generati dall'intelligenza artificiale per le definizioni delle attività. 

Puoi utilizzare la funzionalità di chat in linea per chiedere ad Amazon Q Developer di generare, spiegare o rifattorizzare la definizione delle attività in formato JSON con un'interfaccia conversazionale. È possibile inserire in qualsiasi momento suggerimenti generati nella definizione dell'attività e accettare o rifiutare le modifiche proposte. Inoltre, Amazon ECS ha migliorato la funzionalità di suggerimenti in linea esistente per utilizzare Amazon Q Developer.

Quando si crea una definizione di attività utilizzando l'editor JSON, è possibile fare in modo che Amazon Q Developer fornisca consigli per creare più in fretta una definizione di attività. È possibile avere suggerimenti in linea basati sulle proprietà o utilizzare i suggerimenti di Amazon Q Developer per completare automaticamente interi blocchi di codice di esempio.

È possibile utilizzare questa funzionalità nelle regioni in cui è supportato Amazon Q Developer. Per ulteriori informazioni, consultare [Servizi AWS per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).

## Prerequisiti
<a name="amazon-q-prerequisites"></a>

Di seguito sono indicati i prerequisiti:
+ Oltre alle autorizzazioni della console, l'utente che crea la definizione dell'attività nella console deve disporre dell'autorizzazione `codewhisperer:GenerateRecommendations` per i consigli e `q:SendMessage` per utilizzare la chat in linea. Per ulteriori informazioni, consulta [Autorizzazioni necessarie per usare Amazon Q Developer per fornire consigli nella console](console-permissions.md#amazon-q-permission).

## Procedura
<a name="amazon-q-procedure"></a>

1. [Apri la console nella versione 2https://console.aws.amazon.com/ecs/.](https://console.aws.amazon.com/ecs/v2)

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Nel menu **Crea nuova definizione di attività**, scegliere **Crea nuova definizione attività con JSON**.

   Si apre la pagina **Crea nuova definizione di attività**.

   La console offre il seguente modello predefinito.

   ```
   {
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "family": "",
       "containerDefinitions": [
           {
               "name": "",
               "image": "",
               "essential": true
           }
       ],
       "volumes": [],
       "networkMode": "awsvpc",
       "memory": "3 GB",
       "cpu": "1 vCPU",
       "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
   }
   ```

1. Nel pop-up dei suggerimenti in linea di Amazon Q, scegli **Consenti**.

   Se si chiude il pop-up, è possibile abilitare Amazon Q sotto l'icona a forma di ingranaggio.

1. Nella casella dell'editor JSON, modifica il documento JSON.

   Per fare in modo che Amazon Q crei e compili i parametri, inserire un commento con ciò che si desidera aggiungere. Nell'esempio seguente, il commento fa sì che Amazon Q generi le righe in grassetto.

   ```
   {
       "requiresCompatibilities": [
           "FARGATE"
       ],
       "family": "",
       "containerDefinitions": [
           {
               "name": "",
               "image": "",
               "essential": true
           },
           // add an nginx container using an image from Public ECR, with port 80 open, and send logs to CloudWatch log group "myproxy"
           {
               "name": "nginx",
               "image": "public.ecr.aws/nginx/nginx:latest",
               "essential": true,
               "portMappings": [
                   {
                       "containerPort": 80,
                       "hostPort": 80,
                       "protocol": "tcp"
                   }
               ],
               "logConfiguration": {
                   "logDriver": "awslogs",
                   "options": {
                       "awslogs-group": "myproxy",
                       "awslogs-region": "us-east-1",
                       "awslogs-stream-prefix": "nginx"
                   }
               }
           }
           
       ],
       "volumes": [],
       "networkMode": "awsvpc",
       "memory": "3 GB",
       "cpu": "1 vCPU",
       "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
   }
   ```

1. Per utilizzare la funzionalità di chat in linea, è possibile evidenziare le linee e quindi scegliere l'icona a forma di stella. 

   Viene visualizzata la finestra di chat di Amazon Q Developer.

   Inserire la richiesta.

   Amazon Q Developer genera e quindi aggiorna il codice JSON.

   Per accettare le modifiche, scegliere **Accetta tutto**

1. Scegliere **Crea**.

# Aggiornamento di una definizione di attività Amazon ECS attraverso la console
<a name="update-task-definition-console-v2"></a>

Una *revisione della definizione di attività* è una copia della definizione di attività corrente con i nuovi valori dei parametri che sostituiscono quelli esistenti. Tutti i parametri che non si modificano sono nella nuova revisione.

Per aggiornare una definizione di attività, devi creare una revisione della definizione di attività. Se la definizione di attività viene utilizzata all'interno di un servizio, devi aggiornare quest'ultimo per poter utilizzare la definizione di attività aggiornata.

Quando si crea una revisione, è possibile modificare le seguenti proprietà del container e le proprietà dell'ambiente.
+ URI dell'immagine del container
+ Mappature di porte
+ Variabili di ambiente
+ Requisiti di infrastruttura
+ Dimensioni processo
+ Dimensioni del contenitore
+ Ruolo del processo
+ Ruolo di esecuzione di attività
+ Volumi e punti di montaggio dei container
+ Registro privato

È possibile fare in modo che Amazon Q fornisca consigli quando si usa l'editor JSON. Per ulteriori informazioni, consulta [Utilizzo di Amazon Q Developer per fornire i suggerimenti sulla definizione delle attività nella console Amazon ECS](using-amazon-q.md)

## Convalida JSON
<a name="json-validate-for-update"></a>

L'editor JSON della console Amazon ECS verifica quanto segue nel file JSON:
+ Il file è un file JSON valido
+ Il file non contiene chiavi esterne
+ Il file contiene il parametro `familyName`
+ È presente almeno una voce in `containerDefinitions`

## Procedura
<a name="update-task-definition-console-v2-procedure"></a>

------
#### [ Amazon ECS console ]

1. [Apri la console nella versione 2https://console.aws.amazon.com/ecs/.](https://console.aws.amazon.com/ecs/v2)

1. Dalla barra di navigazione, scegli la Regione in cui si trova la definizione di attività.

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Scegli la definizione di attività.

1. Seleziona la revisione della definizione di attività, quindi scegli **Crea nuova revisione**, **Crea nuova revisione**.

1. Nella pagina **Create new task definition revision** (Crea nuova revisione della definizione di attività), apporta le modifiche desiderate. Ad esempio, per modificare le definizioni del container esistenti (ad esempio l'immagine del container, i limiti di memoria o le mappature delle porte), seleziona il container e apporta le modifiche desiderate. È possibile aggiornare la compatibilità delle definizioni delle attività a una di **AWS Fargate **, **Managed Instances**, **istanze Amazon EC2**.

1. Verifica le informazioni e scegli **Aggiorna**.

1. Se la definizione dell'attività viene utilizzata in un servizio, aggiorna il servizio con la definizione dell'attività aggiornata. Per ulteriori informazioni, consulta [Aggiornamento di un servizio Amazon ECS](update-service-console-v2.md).

------
#### [ Amazon ECS console JSON editor ]

1. Apri la console nella [https://console.aws.amazon.com/ecs/versione 2](https://console.aws.amazon.com/ecs/v2).

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Scegli **Create new revision** (Crea nuova revisione), **Create new revision with JSON** (Crea nuova revisione con JSON).

1. Nella casella dell'editor JSON, modifica il tuo file JSON,

   Il JSON deve superare i controlli di convalida specificati in [Convalida JSON](#json-validate-for-update).

1. Scegli **Create** (Crea).

------

# Annullamento della registrazione di una revisione di definizione dell'attività con la console
<a name="deregister-task-definition-v2"></a>

È possibile annullare la registrazione di una definizione di attività in modo che non venga più visualizzata nelle chiamate API `ListTaskDefinition` o nella console quando si esegue un'attività o si aggiorna un servizio.

Quando revochi la registrazione della revisione di una definizione di attività, questa viene immediatamente contrassegnata come `INACTIVE`. Processi e servizi esistenti che fanno riferimento alla revisione di una definizione di attività `INACTIVE` continuano a essere eseguiti senza interruzioni. I servizi esistenti che fanno riferimento a una revisione di definizione di attività `INACTIVE` possono ancora essere ridotti o dimensionati orizzontalmente modificando il conteggio di servizi desiderato.

Non è possibile utilizzare una revisione di definizione di attività `INACTIVE` per eseguire nuovi processi o creare nuovi servizi. Non potrai aggiornare un servizio esistente per fare riferimento a una revisione della definizione di attività `INACTIVE` (anche se sono necessari circa 10 minuti dopo la revoca della registrazione affinché queste restrizioni vengano applicate).

**Nota**  
Quando annulli la registrazione di tutte le revisioni, la famiglia di definizioni delle attività viene spostata nell'elenco `INACTIVE`. L'aggiunta di una nuova revisione di una definizione dell'attività `INACTIVE` riporta la famiglia di definizioni delle attività nell'elenco `ACTIVE`.  
In questo momento, le revisioni delle definizioni di processi `INACTIVE` rimangono individuabili nel tuo account a tempo indeterminato. Tuttavia, questo comportamento è soggetto a modifiche in futuro. Pertanto, non fare affidamento a revisioni delle definizioni di processo `INACTIVE` che vanno oltre il ciclo di vita dei processi e dei servizi associati.

## CloudFormation pile
<a name="cloudformation-stack"></a>

Il comportamento seguente si applica alle definizioni di attività che sono state create nella nuova console Amazon ECS prima del 12 gennaio 2023.

Quando crei una definizione di attività, la console Amazon ECS crea automaticamente uno CloudFormation stack con un nome che inizia con. `ECS-Console-V2-TaskDefinition-` Se hai utilizzato AWS CLI o un AWS SDK per annullare la registrazione della definizione dell'attività, devi eliminare manualmente lo stack di definizione dell'attività. Per ulteriori informazioni, consultare [Deleting a stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html) nella *Guida per l'utente di CloudFormation *.

Per le definizioni delle attività create dopo il 12 gennaio 2023 non viene creato automaticamente uno CloudFormation stack per esse.

## Procedura
<a name="deregister-task-definition-v2-procedure"></a>

**Per annullare la registrazione di una nuova definizione di attività (console Amazon ECS)**

1. [Apri la console nella versione 2https://console.aws.amazon.com/ecs/.](https://console.aws.amazon.com/ecs/v2)

1. Dalla barra di navigazione, scegli la regione in cui si trova la definizione di attività.

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Nella pagina **Task definitions** (Definizioni di processi), scegli la famiglia di definizioni di attività contenente una o più revisioni per cui desideri annullare la registrazione.

1. Nella pagina **Nome definizione di attività**, seleziona le revisioni da eliminare, quindi seleziona **Operazioni**, **Annulla registrazione**.

1. Verifica le informazioni riportate nella finestra **Deregister** (Annulla registrazione), quindi scegli **Deregister** (Annulla registrazione) per terminare.

# Eliminazione di una revisione di definizione di attività Amazon ECS attraverso la console
<a name="delete-task-definition-v2"></a>

Quando non è più necessaria una revisione specifica della definizione dell'attività in Amazon ECS, è possibile eliminarne la revisione.

Quando elimini una revisione di definizione di attività, questa passa immediatamente da `INACTIVE` a `DELETE_IN_PROGRESS`. L'esecuzione delle attività e dei servizi esistenti che fanno riferimento a una revisione di definizione di attività `DELETE_IN_PROGRESS` prosegue senza interruzioni. 

Non è possibile utilizzare una revisione di definizione dell'attività `DELETE_IN_PROGRESS` per eseguire nuove attività o creare nuovi servizi. Inoltre, non è possibile aggiornare un servizio esistente per fare riferimento a una revisione di definizione di attività `DELETE_IN_PROGRESS`.

Quando elimini tutte le revisioni delle definizioni di attività nello stato `INACTIVE`, il nome della definizione di attività non viene visualizzato nella console e non viene restituito nell'API. Se lo stato della revisione delle definizioni di attività è `DELETE_IN_PROGRESS`, il nome della definizione di attività viene visualizzato nella console e restituito nell'API. Il nome della definizione di attività viene mantenuto da Amazon ECS e la revisione viene incrementata durante la prossima creazione di una definizione di attività con tale nome.

## Risorse Amazon ECS in grado di bloccare un'eliminazione
<a name="resource-block-delete"></a>

La richiesta di eliminazione di una definizione di attività non verrà completata quando sono presenti risorse Amazon ECS che dipendono dalla revisione della definizione di attività. Le seguenti risorse potrebbero impedire l'eliminazione di una definizione di attività:
+ Attività autonome di Amazon ECS: la definizione di attività è necessaria affinché quest'ultima rimanga integra.
+ Attività di servizio di Amazon ECS: la definizione di attività è necessaria affinché quest'ultima rimanga integra.
+ Implementazioni e set di attività di servizio di Amazon ECS: la definizione di attività è necessaria quando si avvia un evento di dimensionamento per un'implementazione o un set di attività di Amazon ECS.

Se la definizione dell'`DELETE_IN_PROGRESS`attività rimane invariata, è possibile utilizzare la console o AWS CLI identificare e quindi interrompere le risorse che bloccano l'eliminazione della definizione dell'attività.

### Eliminazione della definizione di attività dopo la rimozione della risorsa bloccata
<a name="resource-block-remove"></a>

Le seguenti regole si applicano dopo aver rimosso le risorse che bloccano l'eliminazione della definizione di attività:
+ Attività Amazon ECS: dopo l'interruzione dell'attività, l'eliminazione della definizione di attività può richiedere fino a 1 ora.
+ Implementazioni e set di attività di servizio di Amazon ECS: dopo l'eliminazione dell'implementazione o del set di attività, l'eliminazione della definizione di attività può richiedere fino a 24 ore.

## Procedura
<a name="delete-task-def-procedure"></a>

**Per annullare le definizioni di attività (console Amazon ECS)**

Prima di eliminare una revisione di definizione di attività, è necessario annullarne la registrazione. Per ulteriori informazioni, consulta [Annullamento della registrazione di una revisione di definizione dell'attività con la console](deregister-task-definition-v2.md).

1. Apri la console nella [https://console.aws.amazon.com/ecs/versione 2](https://console.aws.amazon.com/ecs/v2).

1. Dalla barra di navigazione, scegli la regione in cui si trova la definizione di attività.

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Nella pagina **Definizioni di attività**, seleziona la famiglia di definizioni di attività contenente una o più revisioni che desideri eliminare.

1. Nella pagina **Nome definizione di attività**, selezionare le revisioni da eliminare, quindi selezionare **Operazioni**, **Elimina**.

   Se **Elimina** non è disponibile, è necessario annullare la registrazione della definizione dell'attività.

1. Verificare le informazioni riportate nella casella di conferma **Elimina**, quindi selezionare **Elimina** per terminare.

# Casi d'uso della definizione dell'attività di Amazon ECS
<a name="use-cases"></a>

Scopri di più su come scrivere le definizioni delle attività per vari AWS servizi e funzionalità.

A seconda del carico di lavoro, è necessario impostare determinati parametri di definizione delle attività. Inoltre, per EC2, è necessario scegliere istanze specifiche progettate per il carico di lavoro.

**Topics**
+ [

# Definizioni di attività Amazon ECS per carichi di lavoro GPU
](ecs-gpu.md)
+ [

# Definizioni di attività Amazon ECS per carichi di lavoro di transcodifica video
](ecs-vt1.md)
+ [

# Definizioni delle attività di Amazon ECS per i carichi di lavoro di machine learning di AWS Neuron
](ecs-inference.md)
+ [

# Definizioni delle attività di Amazon ECS per le istanze di deep learning
](ecs-dl1.md)
+ [

# Definizioni di attività Amazon ECS per carichi di lavoro ARM a 64 bit
](ecs-arm64.md)
+ [

# Invia i log di Amazon ECS a CloudWatch
](using_awslogs.md)
+ [

# Inviare i log di Amazon ECS a un servizio o AWS AWS Partner
](using_firelens.md)
+ [

# Utilizzo di immagini non AWS containerizzate in Amazon ECS
](private-auth.md)
+ [

# Riavviare singoli container nelle attività Amazon ECS con policy di riavvio dei container
](container-restart-policy.md)
+ [

# Trasferimento di dati sensibili a un container Amazon ECS
](specifying-sensitive-data.md)

# Definizioni di attività Amazon ECS per carichi di lavoro GPU
<a name="ecs-gpu"></a>

Amazon ECS supporta carichi di lavoro che utilizzano le GPU, quando crei cluster con istanze di container che supportano le GPU. Le istanze di container basate su GPU di Amazon EC2 che utilizzano i tipi di istanze p2, p3, p5, g3, g4 e g5 forniscono l'accesso a NVIDIA. GPUs Per maggiori informazioni, consultare [Linux Accelerated Computing Instances](https://docs.aws.amazon.com/ec2/latest/instancetypes/ac.html) nella *Guida ai tipi di istanze Amazon EC2*.

Amazon ECS fornisce un'AMI ottimizzata per GPU che dispone di driver del kernel NVIDIA pre-configurati e un runtime del GPU Docker. Per ulteriori informazioni, consulta [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md).

Nella definizione delle attività è possibile designarne alcune da prendere GPUs in considerazione a livello di contenitore. Amazon ECS pianifica le istanze di container disponibili che supportano GPUs e collegano contenitori fisici GPUs a contenitori appropriati per prestazioni ottimali. 

Sono supportati i seguenti tipi di istanza Amazon EC2 basati su GPU. Per ulteriori informazioni, consultare [Istanze Amazon EC2 P2](https://aws.amazon.com/ec2/instance-types/p2/), [Istanze Amazon EC2 P3](https://aws.amazon.com/ec2/instance-types/p3/), [Istanze Amazon EC2 P4d](https://aws.amazon.com/ec2/instance-types/p4/), [Istanze Amazon EC2 P5](https://aws.amazon.com/ec2/instance-types/p5/), [Istanze Amazon EC2 G3](https://aws.amazon.com/ec2/instance-types/g3/), [Amazon EC2 G4 Instances](https://aws.amazon.com/ec2/instance-types/g4/), [Istanze Amazon EC2 G5](https://aws.amazon.com/ec2/instance-types/g5/), [Amazon EC2 G6 Instances](https://aws.amazon.com/ec2/instance-types/g6/) e [Amazon EC2 G6e Instances](https://aws.amazon.com/ec2/instance-types/g6e/).


|  Tipo di istanza  |  GPUs  |  Memoria GPU (GiB)  |  v CPUs  |  Memoria (GiB)  | 
| --- | --- | --- | --- | --- | 
|  p3.2xlarge  |  1  |  16  |  8  |  61  | 
|  p3.8xlarge  |  4  |  64  |  32  |  244  | 
|  p3.16xlarge  |  8  |  128  |  64  |  488  | 
|  p3dn.24xlarge  |  8  |  256  |  96  |  768  | 
|  p4d.24xlarge  | 8 | 320 | 96 | 1152 | 
| p5.48xlarge | 8 | 640 | 192 | 2048 | 
|  g3s.xlarge  |  1  |  8  |  4  |  30,5  | 
|  g3.4xlarge  |  1  |  8  |  16  |  122  | 
|  g3.8xlarge  |  2  |  16  |  32  |  244  | 
|  g3.16xlarge  |  4  |  32  |  64  |  488  | 
|  g4dn.xlarge  |  1  |  16  |  4  |  16  | 
|  g4dn.2xlarge  |  1  |  16  |  8  |  32  | 
|  g4dn.4xlarge  |  1  |  16  |  16  |  64  | 
|  g4dn.8xlarge  |  1  |  16  |  32  |  128  | 
|  g4dn.12xlarge  |  4  |  64  |  48  |  192  | 
|  g4dn.16xlarge  |  1  |  16  |  64  |  256  | 
|  g5.xlarge  |  1  |  24  |  4  |  16  | 
|  g5.2xlarge  |  1  |  24  |  8  |  32  | 
|  g5.4xlarge  |  1  |  24  |  16  |  64  | 
|  g5.8xlarge  |  1  |  24  |  32  |  128  | 
|  g5.16xlarge  |  1  |  24  |  64  |  256  | 
|  g5.12xlarge  |  4  |  96  |  48  |  192  | 
|  g5.24xlarge  |  4  |  96  |  96  |  384  | 
|  g5.48xlarge  |  8  |  192  |  192  |  768  | 
| g6.xlarge | 1 | 24 | 4 | 16 | 
| g6.2xlarge | 1 | 24 | 8 | 32 | 
| g6.4xlarge | 1 | 24 | 16 | 64 | 
| g6.8xlarge | 1 | 24 | 32 | 128 | 
| g6.16.x grande | 1 | 24 | 64 | 256 | 
| g6.12xlarge | 4 | 96 | 48 | 192 | 
| g6.24xlarge | 4 | 96 | 96 | 384 | 
| g6.48xlarge | 8 | 192 | 192 | 768 | 
| g6.metal | 8 | 192 | 192 | 768 | 
| gr6.4xlarge | 1 | 24 | 16 | 128 | 
| g6e.xlarge | 1 | 48 | 4 | 32 | 
| g6e.2xlarge | 1 | 48 | 8 | 64 | 
| g6e.4xlarge | 1 | 48 | 16 | 128 | 
| g6e.8xlarge | 1 | 48 | 32 | 256 | 
| g6e16.xlarge | 1 | 48 | 64 | 512 | 
| g6e12.xlarge | 4 | 192 | 48 | 384 | 
| g6e24.xlarge | 4 | 192 | 96 | 768 | 
| g6e48.xlarge | 8 | 384 | 192 | 1536 | 
| gr6.8xlarge | 1 | 24 | 32 | 256 | 

Puoi recuperare l'ID Amazon Machine Image (AMI) per Amazon ECS ottimizzato per Amazon ECS AMIs interrogando l' AWS Systems Manager API Parameter Store. Utilizzando questo parametro, non è necessario cercare manualmente le AMI ottimizzate per Amazon ECS. IDs Per ulteriori informazioni sull'API Systems Manager Parameter Store, vedere [GetParameter](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html). Il principale IAM che utilizzi deve disporre dell'autorizzazione IAM `ssm:GetParameter` per recuperare i metadati dell'AMI ottimizzata per Amazon ECS.

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region us-east-1
```

# Utilizzo GPUs con Amazon ECS Managed Instances
<a name="managed-instances-gpu"></a>

Istanze gestite da Amazon ECS supporta l'elaborazione accelerata da GPU per carichi di lavoro come machine learning, elaborazione ad alte prestazioni ed elaborazione video tramite i seguenti tipi di istanze Amazon EC2. Per ulteriori informazioni sui tipi di istanza supportati da Istanze gestite da Amazon ECS, consultare [Tipi di Istanze gestite da Amazon ECS](managed-instances-instance-types.md).

Di seguito è riportato un sottoinsieme di tipi di istanze basate su GPU supportato su istanze gestite da Amazon ECS:
+ `g4dn`: con tecnologia NVIDIA T4 GPUs, adatto per inferenza di machine learning, visione artificiale e applicazioni a uso intensivo di grafica.
+ `g5`: con tecnologia NVIDIA A10G GPUs, offre prestazioni più elevate per applicazioni a uso intensivo di grafica e carichi di lavoro di machine learning.
+ `p3`: con tecnologia NVIDIA V100 GPUs, progettato per l'elaborazione ad alte prestazioni e l'apprendimento deep learning.
+ `p4d`: con tecnologia NVIDIA A100 GPUs, offre le massime prestazioni per l'apprendimento di machine learning e l'elaborazione ad alte prestazioni.

Quando utilizzi tipi di istanze abilitati per GPU con Istanze gestite da Amazon ECS, i driver NVIDIA e il toolkit CUDA sono preinstallati sull'istanza, semplificando l'esecuzione di carichi di lavoro accelerati da GPU.

## Selezione di istanze abilitate per GPU
<a name="managed-instances-gpu-instance-selection"></a>

Per selezionare i tipi di istanza abilitati alla GPU per i carichi di lavoro di Istanze gestite da Amazon ECS, utilizzare l'oggetto `instanceRequirements` nel modello di lancio del provider di capacità. Il seguente frammento mostra gli attributi che possono essere utilizzati per selezionare istanze abilitate per GPU.

```
{
  "instanceRequirements": {
    "acceleratorTypes": "gpu",
    "acceleratorCount": 1,
    "acceleratorManufacturers": ["nvidia"]
  }
}
```

Il seguente frammento mostra gli attributi che possono essere utilizzati per specificare i tipi di istanza abilitati per GPU nel modello di avvio.

```
{
  "instanceRequirements": {
    "allowedInstanceTypes": ["g4dn.xlarge", "p4de.24xlarge"]
  }
}
```

## Immagini di container abilitati per GPU
<a name="managed-instances-gpu-container-images"></a>

Per utilizzarle GPUs nei contenitori, è necessario utilizzare immagini di container che contengano le librerie e gli strumenti GPU necessari. NVIDIAfornisce diverse immagini di container predefinite che puoi utilizzare come base per i carichi di lavoro della GPU, tra cui:
+ `nvidia:cuda`: immagini di base con il toolkit CUDA per l'elaborazione tramite GPU.
+ `tensorflow/tensorflow:latest-gpu`: TensorFlow con supporto GPU.
+ `pytorch/pytorch:latest-cuda`: PyTorch con supporto GPU.

Per un esempio di definizione di attività per Amazon ECS su Amazon ECS Managed Instances che prevede l'uso di GPUs, consulta. [Specificazione GPUs in una definizione di attività Amazon ECS](ecs-gpu-specifying.md)

## Considerazioni
<a name="gpu-considerations"></a>

**Nota**  
Il supporto per il tipo di famiglia di istanze g2 è obsoleto.  
La famiglia di istanze p2 è supportata solo nelle versioni precedenti a `20230912` dell'AMI Amazon ECS ottimizzata per GPU. Per continuare a utilizzare le istanze p2, consulta [Operazioni da eseguire per utilizzare un'istanza P2](#p2-instance).  
Gli aggiornamenti immediati dei NVIDIA/CUDA driver su entrambi questi tipi di famiglie di istanze causeranno potenziali guasti del carico di lavoro della GPU.

Ti consigliamo di considerare quanto segue prima di iniziare a lavorare GPUs su Amazon ECS.
+ I cluster possono contenere una combinazione di istanze di container GPU e non GPU.
+ Puoi eseguire carichi di lavoro GPU su istanze esterne. Durante la registrazione di un'istanza esterna nel tuo cluster, assicurati che il flag `--enable-gpu` sia incluso nello script di installazione. Per ulteriori informazioni, consulta [Registrazione di un'istanza esterna in un cluster Amazon ECS](ecs-anywhere-registration.md).
+ È necessario impostare `ECS_ENABLE_GPU_SUPPORT` su `true` nel file di configurazione dell'agente. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).
+ Durante l'esecuzione di un'attività o la creazione di un servizio, puoi utilizzare gli attributi del tipo di istanza quando configuri i vincoli di posizionamento delle attività per garantire su quali istanze di container verrà avviata l'attività. In questo modo, puoi utilizzare in modo più efficiente le risorse. Per ulteriori informazioni, consulta [In che modo Amazon ECS colloca le attività sulle istanze dei container](task-placement.md).

  L'esempio seguente avvia un'attività su un'istanza di container `g4dn.xlarge` nel cluster predefinito.

  ```
  aws ecs run-task --cluster default --task-definition ecs-gpu-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type ==  g4dn.xlarge" --region us-east-2
  ```
+ Per ogni container che ha un requisito di risorsa GPU specificato nella definizione di container, Amazon ECS imposta il runtime del container in modo che sia il runtime del container NVIDIA.
+ Il runtime del container NVIDIA richiede per poter funzionare l'impostazione di alcune variabili di ambiente nel container. Per un elenco di queste variabili di ambiente, consultare [Specialized Configurations with Docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html?highlight=environment%20variable). Amazon ECS imposta il valore della variabile di `NVIDIA_VISIBLE_DEVICES` ambiente in modo che sia un elenco dei dispositivi GPU assegnati da IDs Amazon ECS al contenitore. Le altre variabili di ambiente richieste non vengono impostate da, Amazon ECS. Quindi, assicurati che siano impostate dall'immagine del container o nella definizione di quest'ultimo.
+ La famiglia del tipo di istanza p5 è supportata nella versione `20230929` e successive dell'AMI Amazon ECS ottimizzata per GPU. 
+ La famiglia del tipo di istanza g4 è supportata nella versione `20230913` e successive dell'AMI Amazon ECS ottimizzata per GPU. Per ulteriori informazioni, consulta [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md). Non è supportata nel flusso di lavoro Crea cluster nella console Amazon ECS. Per utilizzare questi tipi di istanze, devi utilizzare la console o l'API di Amazon EC2 e registrare manualmente le istanze nel cluster. AWS CLI
+ Il tipo di istanza p4d.24xlarge funziona solo con CUDA 11 o versioni successive.
+ L'AMI Amazon ECS ottimizzata per GPU IPv6 è abilitata, il che causa problemi durante l'utilizzo. `yum` Questo problema può essere risolto configurandolo per l'uso IPv4 con `yum` il seguente comando.

  ```
  echo "ip_resolve=4" >> /etc/yum.conf
  ```
+  Quando create un'immagine del contenitore che non utilizza le immagini di NVIDIA/CUDA base, dovete impostare la variabile di runtime del `NVIDIA_DRIVER_CAPABILITIES` contenitore su uno dei seguenti valori:
  + `utility,compute`
  + `all`

  Per informazioni su come impostare la variabile, consulta [Controllo del runtime del container NVIDIA](https://sarus.readthedocs.io/en/stable/user/custom-cuda-images.html#controlling-the-nvidia-container-runtime) sul sito Web di NVIDIA.
+ GPUs non sono supportati nei contenitori Windows.

# Avvio di un'istanza di container GPU per Amazon ECS
<a name="gpu-launch"></a>

Per utilizzare un'istanza GPU su Amazon ECS su Amazon EC2, è necessario creare un modello di avvio, un file di dati utente e avviare l'istanza.

È quindi possibile eseguire un'attività che utilizza una definizione di attività configurata per la GPU.

## Utilizzo di un modello di avvio
<a name="gpu-launch-template"></a>

È possibile creare un modello di avvio.
+ Creare un modello di avvio che utilizzi l'ID AMI GPU ottimizzato per Amazon ECS per l'AMI. Per informazioni su come creare un modello di avvio, consultare [Create a new launch template using parameters you define](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#create-launch-template-define-parameters) nella *Guida dell'utente di Amazon EC2*.

  Utilizzare l'ID AMI ottenuto nel passaggio precedente per l'**immagine Amazon Machine**. Per informazioni su come specificare l'ID AMI con il parametro Systems Manager, consultare [Specify a Systems Manager parameter in a launch template](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id) nella *Guida dell'utente di Amazon EC2*.

  Aggiungere quanto segue ai **dati utente** nel modello di avvio. Sostituisci *cluster-name* con il nome del cluster.

  ```
  #!/bin/bash
  echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config;
  echo ECS_ENABLE_GPU_SUPPORT=true >> /etc/ecs/ecs.config
  ```

## Usa il AWS CLI
<a name="gpu-launch-cli"></a>

È possibile utilizzare il AWS CLI per avviare l'istanza del contenitore.

1. Crea un file denominato `userdata.toml`. Questo file viene utilizzato per i dati utente dell'istanza. Sostituisci *cluster-name* con il nome del cluster.

   ```
   #!/bin/bash
   echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config;
   echo ECS_ENABLE_GPU_SUPPORT=true >> /etc/ecs/ecs.config
   ```

1. Eseguire questo comando per ottenere l'ID AMI GPU. Ti servirà per la fase successiva.

   ```
   aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/gpu/recommended --region us-east-1
   ```

1. Eseguire il comando seguente per avviare l'istanza GPU. Ricordati di sostituire i seguenti parametri:
   + Sostituiscilo *subnet* con l'ID della sottorete privata o pubblica in cui verrà avviata l'istanza.
   + Sostituisci *gpu\$1ami* con l'ID AMI del passaggio precedente.
   + Sostituisci *t3.large* con il tipo di istanza che desideri utilizzare.
   + Sostituisci *region* con il codice regionale.

   ```
   aws ec2 run-instances --key-name ecs-gpu-example \
      --subnet-id subnet \
      --image-id gpu_ami \
      --instance-type t3.large \
      --region region \
      --tag-specifications 'ResourceType=instance,Tags=[{Key=GPU,Value=example}]' \
      --user-data file://userdata.toml \
      --iam-instance-profile Name=ecsInstanceRole
   ```

1. Esegui il comando seguente per verificare che l'istanza di container sia registrata nel cluster. Quando esegui questo comando, ricordati di sostituire i parametri seguenti:
   + Sostituisci *cluster* con il nome del cluster.
   + Sostituisci *region* con il tuo codice regionale.

   ```
   aws ecs list-container-instances --cluster cluster-name --region region
   ```

# Specificazione GPUs in una definizione di attività Amazon ECS
<a name="ecs-gpu-specifying"></a>

Per utilizzare l'istanza GPUs on a container e il runtime Docker GPU, assicurati di aver indicato il numero di componenti richiesti dal contenitore nella definizione dell' GPUs attività. Man mano che GPUs vengono posizionati i contenitori che supportano il supporto, l'agente container di Amazon ECS aggiunge il numero desiderato di elementi fisici GPUs al contenitore appropriato. Il numero di contenitori GPUs riservati per tutti i contenitori di un'attività non può superare il numero di quelli disponibili GPUs sull'istanza del contenitore su cui viene avviata l'attività. Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

**Importante**  
Se i requisiti della GPU non sono specificati nella definizione di attività, il processo utilizzerà il runtime del Docker di default.

Di seguito viene visualizzato il formato JSON per i requisiti GPU in una definizione di attività:

```
{
  "containerDefinitions": [
     {
        ...
        "resourceRequirements" : [
            {
               "type" : "GPU", 
               "value" : "2"
            }
        ],
     },
...
}
```

L'esempio seguente mostra la sintassi per un container Docker che specifica un requisito GPU. Questo contenitore ne utilizza due GPUs, esegue l'`nvidia-smi`utilità e quindi esce.

```
{
  "containerDefinitions": [
    {
      "memory": 80,
      "essential": true,
      "name": "gpu",
      "image": "nvidia/cuda:11.0.3-base",
      "resourceRequirements": [
         {
           "type":"GPU",
           "value": "2"
         }
      ],
      "command": [
        "sh",
        "-c",
        "nvidia-smi"
      ],
      "cpu": 100
    }
  ],
  "family": "example-ecs-gpu"
}
```

La seguente definizione di attività di esempio mostra un TensorFlow contenitore che stampa il numero di elementi disponibili GPUs. L'attività viene eseguita su Istanze gestite da Amazon ECS, richiede una GPU e utilizza un'istanza `g4dn.xlarge`.

```
{
  "family": "tensorflow-gpu",
  "networkMode": "awsvpc",
  "executionRoleArn": "arn:aws:iam::account-id:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "tensorflow",
      "image": "tensorflow/tensorflow:latest-gpu",
      "essential": true,
      "command": [
        "python",
        "-c",
        "import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.list_physical_devices('GPU')))"
      ],
      "resourceRequirements": [
        {
          "type": "GPU",
          "value": "1"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/tensorflow-gpu",
          "awslogs-region": "region",
          "awslogs-stream-prefix": "ecs"
        }
      }
    }
  ],
  "requiresCompatibilities": [
    "MANAGED_INSTANCES"
  ],
  "cpu": "4096",
  "memory": "8192",
}
```

## Condividi GPUs
<a name="share-gpu"></a>

Quando vuoi condividere GPUs, devi configurare quanto segue.

1. Rimuovi i requisiti di risorse GPU dalle definizioni delle tue attività in modo che Amazon ECS non riservi quelle GPUs che devono essere condivise.

1. Aggiungi i seguenti dati utente alle tue istanze quando desideri condividerli. GPUs Ciò renderà nvidia il runtime del contenitore Docker predefinito sull'istanza del contenitore in modo che tutti i contenitori Amazon ECS possano utilizzare il. GPUs Per ulteriori informazioni, consultare [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) nella *Guida per l'utente di Amazon EC2*.

   ```
   const userData = ec2.UserData.forLinux();
    userData.addCommands(
    'sudo rm /etc/sysconfig/docker',
    'echo DAEMON_MAXFILES=1048576 | sudo tee -a /etc/sysconfig/docker',
    'echo OPTIONS="--default-ulimit nofile=32768:65536 --default-runtime nvidia" | sudo tee -a /etc/sysconfig/docker',
    'echo DAEMON_PIDFILE_TIMEOUT=10 | sudo tee -a /etc/sysconfig/docker',
    'sudo systemctl restart docker',
   );
   ```

1. Impostare la variabile di ambiente `NVIDIA_VISIBLE_DEVICES` sul container. È possibile eseguire questa operazione specificando la variabile di ambiente nella definizione dell'attività. Per informazioni sui valori validi, consultare [GPU Enumeration](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/docker-specialized.html#gpu-enumeration) sul sito di documentazione di NVIDIA.

## Operazioni da eseguire per utilizzare un'istanza P2
<a name="p2-instance"></a>

Per continuare a lavorare con le istanze P2, puoi utilizzare una delle seguenti opzioni.

È necessario modificare i dati utente dell'istanza per entrambe le opzioni. Per ulteriori informazioni, consultare [Run commands when you launch an EC2 instance with user data input](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html) nella *Guida per l'utente di Amazon EC2*.

**Usa l'ultima AMI ottimizzata per GPU supportata**

Puoi utilizzare la versione `20230906` dell'AMI ottimizzata per GPU e aggiungere quanto segue ai dati utente dell'istanza.

Sostituire cluster-name con il nome del cluster.

```
#!/bin/bash
echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf
echo "ECS_CLUSTER=cluster-name" >> /etc/ecs/ecs.config
```

**Usa l'AMI ottimizzata per GPU più recente e aggiorna i dati utente**

Puoi aggiungere i comandi seguenti ai dati utente dell'istanza. Questa operazione consente di disinstallare i driver Nvidia 535/Cuda12.2 e installare i driver Nvidia 470/Cuda11.4, correggendo la versione.

```
#!/bin/bash
yum remove -y cuda-toolkit* nvidia-driver-latest-dkms*
tmpfile=$(mktemp)
cat >$tmpfile <<EOF
[amzn2-nvidia]
name=Amazon Linux 2 Nvidia repository
mirrorlist=\$awsproto://\$amazonlinux.\$awsregion.\$awsdomain/\$releasever/amzn2-nvidia/latest/\$basearch/mirror.list
priority=20
gpgcheck=1
gpgkey=https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub
enabled=1
exclude=libglvnd-*
EOF

mv $tmpfile /etc/yum.repos.d/amzn2-nvidia-tmp.repo
yum install -y system-release-nvidia cuda-toolkit-11-4 nvidia-driver-latest-dkms-470.182.03
yum install -y libnvidia-container-1.4.0 libnvidia-container-tools-1.4.0 nvidia-container-runtime-hook-1.4.0 docker-runtime-nvidia-1

echo "exclude=*nvidia* *cuda*" >> /etc/yum.conf
nvidia-smi
```

**Crea la tua AMI ottimizzata per GPU compatibile con P2**

Puoi creare un'AMI Amazon ECS ottimizzata per GPU personalizzata e compatibile con le istanze P2, quindi avviare le istanze P2 utilizzando l'AMI.

1. Esegui il comando seguente per clonare `amazon-ecs-ami repo`.

   ```
   git clone https://github.com/aws/amazon-ecs-ami
   ```

1. Imposta l'agente Amazon ECS richiesto e le versioni dell'AMI Amazon Linux di origine in `release.auto.pkrvars.hcl` o `overrides.auto.pkrvars.hcl`.

1. Esegui il comando seguente per creare un'AMI EC2 privata compatibile con P2.

   Sostituisci la regione con la regione dell'istanza.

   ```
   REGION=region make al2keplergpu
   ```

1. Utilizza l'AMI con i seguenti dati utente dell'istanza per connetterti al cluster Amazon ECS.

   Sostituire cluster-name con il nome del cluster.

   ```
   #!/bin/bash
   echo "ECS_CLUSTER=cluster-name" >> /etc/ecs/ecs.config
   ```

# Definizioni di attività Amazon ECS per carichi di lavoro di transcodifica video
<a name="ecs-vt1"></a>

[Per utilizzare i carichi di lavoro di transcodifica video su Amazon ECS, registra le istanze Amazon EC2. VT1](https://aws.amazon.com/ec2/instance-types/vt1/) Dopo aver registrato queste istanze, puoi eseguire carichi di lavoro di transcodifica video live e pre-renderizzati come attività su Amazon ECS. VT1 Le istanze Amazon EC2 utilizzano schede di transcodifica multimediale Xilinx U30 per accelerare i carichi di lavoro di transcodifica video live e pre-renderizzati.

**Nota**  
Per istruzioni su come eseguire carichi di lavoro di transcodifica video in container diversi da Amazon ECS, consulta la [documentazione di Xilinx](https://xilinx.github.io/video-sdk/v1.5/container_setup.html#working-with-docker-vt1).

## Considerazioni
<a name="ecs-vt1-considerations"></a>

Prima di iniziare la distribuzione VT1 su Amazon ECS, considera quanto segue:
+ I tuoi cluster possono contenere un mix di VT1 e non istanze. VT1 
+ Hai bisogno di un'applicazione Linux che utilizzi schede di transcodifica multimediale Xilinx U30 con codec accelerati AVC (H.264) e HEVC (H.265).
**Importante**  
Le applicazioni che utilizzano altri codec potrebbero non avere prestazioni migliorate sulle istanze. VT1 
+ Solo un'attività di transcodifica può essere eseguita su una scheda U30. Ogni scheda ha due dispositivi ad essa associati. È possibile eseguire tante attività di transcodifica quante sono le schede disponibili per ciascuna istanza. VT1 
+ Durante l'esecuzione di un servizio o di un'attività autonoma, puoi utilizzare gli attributi del tipo di istanza quando configuri i vincoli di posizionamento delle attività. Ciò garantisce che l'attività venga avviata sull'istanza di container specificata. In questo modo è possibile utilizzare le risorse in modo efficace e che le attività relative ai carichi di lavoro di transcodifica video siano affidate alle istanze. VT1 Per ulteriori informazioni, consulta [In che modo Amazon ECS colloca le attività sulle istanze dei container](task-placement.md).

  Nell'esempio seguente viene eseguita un'attività su una istanza `vt1.3xlarge` sul cluster `default`.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition vt1-3xlarge-xffmpeg-processor \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == vt1.3xlarge"
  ```
+ Puoi configurare un container per utilizzare la scheda U30 specifica disponibile nell'istanza di container host. Puoi farlo usando il parametro `linuxParameters` e specificando i dettagli del dispositivo. Per ulteriori informazioni, consulta [Requisiti di definizione di attività](#ecs-vt1-requirements).

## Utilizzo di un VT1 AMI
<a name="ecs-vt1-ami"></a>

Sono disponibili due opzioni per l'esecuzione di un'AMI su Amazon EC2 per istanze di container Amazon ECS. La prima opzione è quella di utilizzare l'AMI ufficiale Xilinx su Marketplace AWS. La seconda opzione è quella di creare la propria AMI dal repository di esempio.
+ [Offerte AMIs Xilinx](https://aws.amazon.com/marketplace/pp/prodview-phvk6d4mq3hh6) su. Marketplace AWS
+ Amazon ECS fornisce un repository di esempio che è possibile utilizzare per creare un'AMI per carichi di lavoro di transcodifica video. Questa AMI è dotata di driver Xilinx U30. Puoi trovare il repository che contiene gli script di Packer su. [GitHub](https://github.com/aws-samples/aws-vt-baseami-pipeline) Per ulteriori informazioni su Packer, consulta la [documentazione di Packer](https://developer.hashicorp.com/packer/docs).

## Requisiti di definizione di attività
<a name="ecs-vt1-requirements"></a>

Per eseguire container di transcodifica video su Amazon ECS, la definizione di attività deve contenere un'applicazione di transcodifica video che utilizza i codec accelerati H.264/AVC e H.265/HEVC. [È possibile creare un'immagine del contenitore seguendo i passaggi su Xilinx. GitHub](https://xilinx.github.io/video-sdk/v1.5/container_setup.html#creating-a-docker-image-for-vt1-usage)

La definizione dell'attività deve essere specifica per il tipo di istanza. I tipi di istanza sono 3xlarge, 6xlarge e 24xlarge. Per utilizzare i dispositivi Xilinx U30 specifici disponibili nell'istanza di container host, è necessario configurare un container. Puoi farlo usando il parametro `linuxParameters`. La tabella seguente descrive in dettaglio le schede e i dispositivi SoCs specifici per ogni tipo di istanza.


| Tipo di istanza | v CPUs | RAM (GiB) | Schede acceleratore U30 | Dispositivi SoC indirizzabili XCU30  | Percorsi dispositivi | 
| --- | --- | --- | --- | --- | --- | 
| vt1.3xlarge | 12 | 24 | 1 | 2 | /dev/dri/renderD128,/dev/dri/renderD129 | 
| vt1.6xlarge | 24 | 48 | 2 | 4 | /dev/dri/renderD128,/dev/dri/renderD129,/dev/dri/renderD130,/dev/dri/renderD131 | 
| vt1.24xlarge | 96 | 182 | 8 | 16 | /dev/dri/renderD128,/dev/dri/renderD129,/dev/dri/renderD130,/dev/dri/renderD131,/dev/dri/renderD132,/dev/dri/renderD133,/dev/dri/renderD134,/dev/dri/renderD135,/dev/dri/renderD136,/dev/dri/renderD137,/dev/dri/renderD138,/dev/dri/renderD139,/dev/dri/renderD140,/dev/dri/renderD141,/dev/dri/renderD142,/dev/dri/renderD143 | 

**Importante**  
Se la definizione di attività elenca dispositivi di cui l'istanza EC2 non dispone, l'attività non viene eseguita. Quando l'attività ha esito negativo, viene visualizzato il seguente messaggio di errore in `stoppedReason`: `CannotStartContainerError: Error response from daemon: error gathering device information while adding custom device "/dev/dri/renderD130": no such file or directory`.

# Specifica della transcodifica video in una definizione attività Amazon ECS
<a name="task-def-video-transcode"></a>

Nell'esempio seguente viene fornita la sintassi utilizzata per una definizione di attività di un container Linux su Amazon EC2. Questa definizione di attività viene utilizzata per le immagini del container create seguendo la procedura fornita nella [documentazione di Xilinx](https://xilinx.github.io/video-sdk/v1.5/container_setup.html#creating-a-docker-image-for-vt1-usage). Se utilizzi questo esempio, sostituisci `image` con la tua immagine e copia i tuoi file video nell'istanza della directory `/home/ec2-user`.

------
#### [ vt1.3xlarge ]

1. Crea un file di testo denominato `vt1-3xlarge-ffmpeg-linux.json` con il seguente contenuto.

   ```
   {
       "family": "vt1-3xlarge-xffmpeg-processor",
       "requiresCompatibilities": ["EC2"],
       "placementConstraints": [
           {
               "type": "memberOf",
               "expression": "attribute:ecs.os-type == linux"
           },
           {
               "type": "memberOf",
               "expression": "attribute:ecs.instance-type == vt1.3xlarge"
           }
       ],
       "containerDefinitions": [
           {
               "entryPoint": [
                   "/bin/bash",
                   "-c"
               ],
               "command": ["/video/ecs_ffmpeg_wrapper.sh"],
               "linuxParameters": {
                   "devices": [
                       {
                           "containerPath": "/dev/dri/renderD128",
                           "hostPath": "/dev/dri/renderD128",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD129",
                           "hostPath": "/dev/dri/renderD129",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       }
                   ]
               },
               "mountPoints": [
                   {
                       "containerPath": "/video",
                       "sourceVolume": "video_file"
                   }
               ],
               "cpu": 0,
               "memory": 12000,
               "image": "0123456789012.dkr.ecr.us-west-2.amazonaws.com/aws/xilinx-xffmpeg",
               "essential": true,
               "name": "xilinix-xffmpeg"
           }
       ],
       "volumes": [
           {
               "name": "video_file",
               "host": {"sourcePath": "/home/ec2-user"}
           }
       ]
   }
   ```

1. Registra la definizione dell'attività.

   ```
   aws ecs register-task-definition --family vt1-3xlarge-xffmpeg-processor --cli-input-json file://vt1-3xlarge-xffmpeg-linux.json --region us-east-1
   ```

------
#### [ vt1.6xlarge ]

1. Crea un file di testo denominato `vt1-6xlarge-ffmpeg-linux.json` con il seguente contenuto.

   ```
   {
       "family": "vt1-6xlarge-xffmpeg-processor",
       "requiresCompatibilities": ["EC2"],
       "placementConstraints": [
           {
               "type": "memberOf",
               "expression": "attribute:ecs.os-type == linux"
           },
           {
               "type": "memberOf",
               "expression": "attribute:ecs.instance-type == vt1.6xlarge"
           }
       ],
       "containerDefinitions": [
           {
               "entryPoint": [
                   "/bin/bash",
                   "-c"
               ],
               "command": ["/video/ecs_ffmpeg_wrapper.sh"],
               "linuxParameters": {
                   "devices": [
                       {
                           "containerPath": "/dev/dri/renderD128",
                           "hostPath": "/dev/dri/renderD128",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD129",
                           "hostPath": "/dev/dri/renderD129",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD130",
                           "hostPath": "/dev/dri/renderD130",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD131",
                           "hostPath": "/dev/dri/renderD131",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       }
                   ]
               },
               "mountPoints": [
                   {
                       "containerPath": "/video",
                       "sourceVolume": "video_file"
                   }
               ],
               "cpu": 0,
               "memory": 12000,
               "image": "0123456789012.dkr.ecr.us-west-2.amazonaws.com/aws/xilinx-xffmpeg",
               "essential": true,
               "name": "xilinix-xffmpeg"
           }
       ],
       "volumes": [
           {
               "name": "video_file",
               "host": {"sourcePath": "/home/ec2-user"}
           }
       ]
   }
   ```

1. Registra la definizione dell'attività.

   ```
   aws ecs register-task-definition --family vt1-6xlarge-xffmpeg-processor --cli-input-json file://vt1-6xlarge-xffmpeg-linux.json --region us-east-1
   ```

------
#### [ vt1.24xlarge ]

1. Crea un file di testo denominato `vt1-24xlarge-ffmpeg-linux.json` con il seguente contenuto.

   ```
   {
       "family": "vt1-24xlarge-xffmpeg-processor",
       "requiresCompatibilities": ["EC2"],
       "placementConstraints": [
           {
               "type": "memberOf",
               "expression": "attribute:ecs.os-type == linux"
           },
           {
               "type": "memberOf",
               "expression": "attribute:ecs.instance-type == vt1.24xlarge"
           }
       ],
       "containerDefinitions": [
           {
               "entryPoint": [
                   "/bin/bash",
                   "-c"
               ],
               "command": ["/video/ecs_ffmpeg_wrapper.sh"],
               "linuxParameters": {
                   "devices": [
                       {
                           "containerPath": "/dev/dri/renderD128",
                           "hostPath": "/dev/dri/renderD128",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD129",
                           "hostPath": "/dev/dri/renderD129",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD130",
                           "hostPath": "/dev/dri/renderD130",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD131",
                           "hostPath": "/dev/dri/renderD131",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD132",
                           "hostPath": "/dev/dri/renderD132",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD133",
                           "hostPath": "/dev/dri/renderD133",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD134",
                           "hostPath": "/dev/dri/renderD134",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD135",
                           "hostPath": "/dev/dri/renderD135",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD136",
                           "hostPath": "/dev/dri/renderD136",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD137",
                           "hostPath": "/dev/dri/renderD137",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD138",
                           "hostPath": "/dev/dri/renderD138",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD139",
                           "hostPath": "/dev/dri/renderD139",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD140",
                           "hostPath": "/dev/dri/renderD140",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD141",
                           "hostPath": "/dev/dri/renderD141",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD142",
                           "hostPath": "/dev/dri/renderD142",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       },
                       {
                           "containerPath": "/dev/dri/renderD143",
                           "hostPath": "/dev/dri/renderD143",
                           "permissions": [
                               "read",
                               "write"
                           ]
                       }
                   ]
               },
               "mountPoints": [
                   {
                       "containerPath": "/video",
                       "sourceVolume": "video_file"
                   }
               ],
               "cpu": 0,
               "memory": 12000,
               "image": "0123456789012.dkr.ecr.us-west-2.amazonaws.com/aws/xilinx-xffmpeg",
               "essential": true,
               "name": "xilinix-xffmpeg"
           }
       ],
       "volumes": [
           {
               "name": "video_file",
               "host": {"sourcePath": "/home/ec2-user"}
           }
       ]
   }
   ```

1. Registra la definizione dell'attività.

   ```
   aws ecs register-task-definition --family vt1-24xlarge-xffmpeg-processor --cli-input-json file://vt1-24xlarge-xffmpeg-linux.json --region us-east-1
   ```

------

# Definizioni delle attività di Amazon ECS per i carichi di lavoro di machine learning di AWS Neuron
<a name="ecs-inference"></a>

Puoi registrare istanze [Amazon EC2 Trn1, Amazon EC2 Trn2](https://aws.amazon.com/ec2/instance-types/trn1/)[, Amazon EC2](https://aws.amazon.com/ec2/instance-types/trn2/) [Inf1 e [Amazon EC2](https://aws.amazon.com/ec2/instance-types/inf2/) Inf2 nei](https://aws.amazon.com/ec2/instance-types/inf1/) tuoi cluster per carichi di lavoro di machine learning.

[Le istanze Amazon EC2 Trn1 e Trn2 sono alimentate da chip Trainium.AWS](https://aws.amazon.com/ai/machine-learning/trainium/) Queste istanze offrono addestramento ad alte prestazioni e a basso costo per il machine learning nel cloud. Puoi addestrare un modello di inferenza di machine learning utilizzando un framework di machine learning con AWS Neuron su un'istanza Trn1 o Trn2. Quindi, puoi eseguire il modello su un'istanza Inf1 o un'istanza Inf2 per utilizzare l'accelerazione dei chip Inferentia. AWS 

Le istanze Inf1 e Inf2 di Amazon EC2 si basano sui chip [AWS Inferentia](https://aws.amazon.com/ai/machine-learning/inferentia/), che offrono prestazioni elevate e inferenze a costi contenuti nel cloud.

I modelli di machine learning vengono implementati in container utilizzando [AWS Neuron](https://aws.amazon.com/ai/machine-learning/neuron/), ovvero un Software Developer Kit (SDK) specializzato. L'SDK è composto da un compilatore, un runtime e strumenti di profilazione che ottimizzano le prestazioni di apprendimento automatico dei chip di apprendimento automatico. AWS AWS Neuron supporta i più diffusi framework di machine learning come, e Apache. TensorFlow PyTorch MXNet

## Considerazioni
<a name="ecs-inference-considerations"></a>

Prima di iniziare a implementare Neuron su Amazon ECS, tieni presente quanto segue:
+ I tuoi cluster possono contenere un mix di Trn1, Trn2, Inf1, Inf2 e altre istanze.
+ È necessaria un'applicazione Linux in un contenitore che utilizzi un framework di apprendimento automatico che supporti Neuron. AWS 
**Importante**  
Le applicazioni che utilizzano altri framework potrebbero non avere prestazioni migliorate sulle istanze Trn1, Trn2, Inf1 e Inf2.
+ Puoi eseguire soltanto un'attività di inferenza o di addestramento all'inferenza su ogni chip [AWS Trainium](https://aws.amazon.com/ai/machine-learning/trainium/) o [AWS Inferentia](https://aws.amazon.com/ai/machine-learning/inferentia/). Per Inf1, ogni chip ne ha 4. NeuronCores Per Trn1, Trn2 e Inf2 ogni chip ne ha 2. NeuronCores Puoi eseguire tante attività quanti sono i chip disponibili per ciascuna delle tue istanze Trn1, Trn2, Inf1 e Inf2.
+ Durante l'esecuzione di un servizio o di un'attività autonoma, puoi utilizzare gli attributi del tipo di istanza quando configuri i vincoli di posizionamento dell'attività. Ciò garantisce che l'attività venga avviata sull'istanza di container specificata. In questo modo è possibile ottimizzare l'utilizzo complessivo delle risorse e garantire che le attività per i carichi di lavoro di inferenza si trovino sulle istanze Trn1, Trn2, Inf1 e Inf2. Per ulteriori informazioni, consulta [In che modo Amazon ECS colloca le attività sulle istanze dei container](task-placement.md).

  Nell'esempio seguente viene eseguita un'attività su una istanza `Inf1.xlarge` sul cluster `default`.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition ecs-inference-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge"
  ```
+ I requisiti di risorse Neuron non possono essere definiti in una definizione di attività. Invece, configurate un contenitore per utilizzare chip AWS Trainium o Inferentia specifici disponibili sull'istanza del contenitore host. AWS Puoi farlo usando il parametro `linuxParameters` e specificando i dettagli del dispositivo. Per ulteriori informazioni, consulta [Requisiti di definizione di attività](#ecs-inference-requirements).

## Utilizzare l'AMI Amazon Linux 2023 (Neuron) ottimizzata per Amazon ECS
<a name="ecs-inference-ami2023"></a>

Amazon ECS fornisce un'AMI ottimizzata per Amazon ECS basata su Amazon Linux 2023 per carichi di lavoro AWS Trainium e AWS Inferentia. Viene fornito con i driver AWS Neuron e il runtime per Docker. Questa AMI semplifica l'esecuzione dei carichi di lavoro di inferenza di machine learning su Amazon ECS.

Consigliamo di utilizzare l'AMI Amazon Linux 2023 (Neuron) ottimizzata per Amazon ECS quando si avviano le istanze Trn1, Inf1 e Inf2 di Amazon EC2. 

Puoi recuperare l'attuale AMI Amazon Linux 2023 (Neuron) ottimizzata per Amazon ECS AWS CLI utilizzando il comando seguente.

```
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended
```

## Requisiti di definizione di attività
<a name="ecs-inference-requirements"></a>

Per distribuire Neuron su Amazon ECS, la definizione dell'attività deve contenere la definizione del contenitore per un contenitore predefinito che serve il modello di inferenza per. TensorFlow È fornito da AWS Deep Learning Containers. Questo contenitore contiene il runtime AWS Neuron e l'applicazione TensorFlow Serving. All'avvio, questo contenitore recupera il modello da Amazon S3, avvia TensorFlow Neuron Serving con il modello salvato e attende le richieste di previsione. Nell'esempio seguente, l'immagine del contenitore ha 1.15 e Ubuntu 18.04. TensorFlow È disponibile un elenco completo di Deep Learning Containers predefiniti ottimizzati per Neuron. GitHub Per ulteriori informazioni, consulta [Using AWS TensorFlow Neuron](https://docs.aws.amazon.com/dlami/latest/devguide/tutorial-inferentia-tf-neuron-serving.html) Serving.

```
763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04
```

In alternativa, puoi creare la tua immagine di container sidecar di Neuron. Per ulteriori informazioni, vedere [Tutorial: Neuron TensorFlow Serving](https://github.com/aws-neuron/aws-neuron-sdk/blob/master/frameworks/tensorflow/tensorflow-neuron/tutorials/tutorials-tensorflow-utilizing-neuron-capabilities.rst) nella Guida per gli *AWS Deep Learning AMIs sviluppatori*.

La definizione di attività deve essere specifica per il tipo di istanza. È necessario configurare un contenitore per utilizzare dispositivi AWS Trainium o AWS Inferentia specifici disponibili sull'istanza del contenitore host. Puoi farlo usando il parametro `linuxParameters`. Per una definizione di attività di esempio, vedere. [Specificare l'apprendimento automatico di AWS Neuron in una definizione di attività Amazon ECS](ecs-inference-task-def.md) Nella tabella seguente vengono descritti in dettaglio i chip specifici per ogni tipo di istanza.


| Tipo di istanza | v CPUs | RAM (GiB) | AWS chip acceleratori ML | Percorsi dispositivi | 
| --- | --- | --- | --- | --- | 
| trn1.2xlarge | 8 | 32 | 1 | /dev/neuron0 | 
| trn1.32xlarge | 128 | 512 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| trn2.48xlarge | 192 | 1536 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| inf1.xlarge | 4 | 8 | 1 | /dev/neuron0 | 
| inf1.2xlarge | 8 | 16 | 1 | /dev/neuron0 | 
| inf1.6xlarge | 24 | 48 | 4 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3 | 
| inf1.24xlarge | 96 | 192 | 16 |  /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15  | 
| inf2.xlarge | 8 | 16 | 1 | /dev/neuron0 | 
| inf2.8xlarge | 32 | 64 | 1 | /dev/neuron0 | 
| inf2.24xlarge | 96 | 384 | 6 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5,  | 
| inf2.48xlarge | 192 | 768 | 12 | /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11 | 

# Specificare l'apprendimento automatico di AWS Neuron in una definizione di attività Amazon ECS
<a name="ecs-inference-task-def"></a>

Di seguito è riportato un esempio di definizione di attività Linux per `inf1.xlarge` che riporta la sintassi da utilizzare.

```
{
    "family": "ecs-neuron",
    "requiresCompatibilities": ["EC2"],
    "placementConstraints": [
        {
            "type": "memberOf",
            "expression": "attribute:ecs.os-type == linux"
        },
        {
            "type": "memberOf",
            "expression": "attribute:ecs.instance-type == inf1.xlarge"
        }
    ],
    "executionRoleArn": "${YOUR_EXECUTION_ROLE}",
    "containerDefinitions": [
        {
            "entryPoint": [
                "/usr/local/bin/entrypoint.sh",
                "--port=8500",
                "--rest_api_port=9000",
                "--model_name=resnet50_neuron",
                "--model_base_path=s3://amzn-s3-demo-bucket/resnet50_neuron/"
            ],
            "portMappings": [
                {
                    "hostPort": 8500,
                    "protocol": "tcp",
                    "containerPort": 8500
                },
                {
                    "hostPort": 8501,
                    "protocol": "tcp",
                    "containerPort": 8501
                },
                {
                    "hostPort": 0,
                    "protocol": "tcp",
                    "containerPort": 80
                }
            ],
            "linuxParameters": {
                "devices": [
                    {
                        "containerPath": "/dev/neuron0",
                        "hostPath": "/dev/neuron0",
                        "permissions": [
                            "read",
                            "write"
                        ]
                    }
                ],
                "capabilities": {
                    "add": [
                        "IPC_LOCK"
                    ]
                }
            },
            "cpu": 0,
            "memoryReservation": 1000,
            "image": "763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04",
            "essential": true,
            "name": "resnet50"
        }
    ]
}
```

# Definizioni delle attività di Amazon ECS per le istanze di deep learning
<a name="ecs-dl1"></a>

Per utilizzare carichi di lavoro di deep learning su Amazon ECS, registra le istanze [Amazon DL1 EC2](https://aws.amazon.com/ec2/instance-types/dl1/) nei tuoi cluster. Le DL1 istanze Amazon EC2 sono alimentate dagli acceleratori Gaudi di Habana Labs (una società Intel). Usa l'SDK Habana SynapseAI per connetterti agli acceleratori Habana Gaudi. L'SDK supporta i più diffusi framework di machine learning e. TensorFlow PyTorch

## Considerazioni
<a name="ecs-dl1-considerations"></a>

Prima di iniziare la distribuzione DL1 su Amazon ECS, considera quanto segue:
+ I tuoi cluster possono contenere un mix di DL1 e non istanze. DL1 
+ Durante la creazione di un servizio o l'esecuzione di un'attività autonoma, puoi utilizzare gli attributi del tipo di istanza quando configuri i vincoli di posizionamento delle attività per assicurarti che l'attività venga avviata sull'istanza di container specificata. In questo modo si garantisce che le risorse vengano utilizzate in modo efficace e che le attività per i carichi di lavoro di deep learning si svolgano sulle istanze. DL1 Per ulteriori informazioni, consulta [In che modo Amazon ECS colloca le attività sulle istanze dei container](task-placement.md).

  Nell'esempio seguente viene eseguito un processo su una istanza `dl1.24xlarge` sul cluster `default`.

  ```
  aws ecs run-task \
       --cluster default \
       --task-definition ecs-dl1-task-def \
       --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == dl1.24xlarge"
  ```

## Utilizzo di un DL1 AMI
<a name="ecs-dl1-ami"></a>

Sono disponibili tre opzioni per eseguire un'AMI su DL1 istanze Amazon EC2 per Amazon ECS:
+ Marketplace AWS AMIs [che sono fornite da Habana qui.](https://aws.amazon.com/marketplace/pp/prodview-h24gzbgqu75zq)
+ Habana Deep Learning AMIs fornito da Amazon Web Services. Poiché non è incluso, è necessario installare l'agente container Amazon ECS separatamente.
+ Usa Packer per creare un'AMI personalizzata fornita dal [GitHubrepository](https://github.com/aws-samples/aws-habana-baseami-pipeline). Per ulteriori informazioni, consulta [la documentazione di Packer](https://developer.hashicorp.com/packer/docs).

# Specifica del deep learning in una definizione di attività Amazon ECS
<a name="ecs-dl1-requirements"></a>

Per eseguire i contenitori di deep learning accelerato di Habana Gaudi su Amazon ECS, la definizione dell'attività deve contenere la definizione del contenitore per un contenitore predefinito che serve il modello di deep learning per TensorFlow o che PyTorch utilizza Habana SynapseAI fornito da Deep Learning Containers. AWS 

L'immagine seguente del contenitore ha 2.7.0 e Ubuntu 20.04. TensorFlow Viene mantenuto un elenco completo di Deep Learning Containers predefiniti ottimizzati per gli acceleratori Habana Gaudi. GitHub Per ulteriori informazioni, consulta [Habana Training Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#habana-training-containers) (Container di training Habana).

```
763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training-habana:2.7.0-hpu-py38-synapseai1.2.0-ubuntu20.04
```

Di seguito è riportata una definizione di attività di esempio per container Linux su Amazon EC2, che riporta la sintassi da utilizzare. In questo esempio viene utilizzata un'immagine contenente l'Habana Labs System Management Interface Tool (HL-SMI) che trovi qui: `vault.habana.ai/gaudi-docker/1.1.0/ubuntu20.04/habanalabs/tensorflow-installer-tf-cpu-2.6.0:1.1.0-614`

```
{
    "family": "dl-test",
    "requiresCompatibilities": ["EC2"],
    "placementConstraints": [
        {
            "type": "memberOf",
            "expression": "attribute:ecs.os-type == linux"
        },
        {
            "type": "memberOf",
            "expression": "attribute:ecs.instance-type == dl1.24xlarge"
        }
    ],
    "networkMode": "host",
    "cpu": "10240",
    "memory": "1024",
    "containerDefinitions": [
        {
            "entryPoint": [
                "sh",
                "-c"
            ],
            "command": ["hl-smi"],
            "cpu": 8192,
            "environment": [
                {
                    "name": "HABANA_VISIBLE_DEVICES",
                    "value": "all"
                }
            ],
            "image": "vault.habana.ai/gaudi-docker/1.1.0/ubuntu20.04/habanalabs/tensorflow-installer-tf-cpu-2.6.0:1.1.0-614",
            "essential": true,
            "name": "tensorflow-installer-tf-hpu"
        }
    ]
}
```

# Definizioni di attività Amazon ECS per carichi di lavoro ARM a 64 bit
<a name="ecs-arm64"></a>

Amazon ECS supporta l'utilizzo di applicazioni ARM a 64 bit. È possibile eseguire le applicazioni sulla piattaforma con tecnologia [Processori AWS Graviton](https://aws.amazon.com/ec2/graviton/). adatti per un'ampia varietà di carichi di lavoro, tra cui server applicativi, micro-servizi, elaborazione ad alte prestazioni, inferenza di machine learning basata su CPU, codifica video, automazione della progettazione elettronica, giochi, database open-source e cache in memoria.

## Considerazioni
<a name="ecs-arm64-considerations"></a>

Prima di iniziare a implementare le definizioni di attività che utilizzano l'architettura ARM a 64 bit, tieni in considerazione quanto segue:
+ Le applicazioni possono utilizzare Fargate o. EC2s
+ Le applicazioni possono utilizzare solo il sistema operativo Linux.
+ Per il tipo Fargate, le applicazioni devono utilizzare la versione `1.4.0` o versione successiva della piattaforma Fargate.
+ Le applicazioni possono essere utilizzate Fluent Bit o CloudWatch per il monitoraggio.
+ Per Fargate, quanto segue Regioni AWS non supporta i carichi di lavoro ARM a 64 bit:
  + Stati Uniti orientali (Virginia settentrionale), la zona di disponibilità `use1-az3`
+  Per EC2, consultare quanto segue per verificare che la propria regione supporti il tipo di istanza che si desidera utilizzare:
  + [Istanze Amazon EC2 M6g](https://aws.amazon.com/ec2/instance-types/m6)
  +  [Istanze Amazon EC2 T4g](https://aws.amazon.com/ec2/instance-types/t4/)
  +  [Istanze Amazon EC2 C6g](https://aws.amazon.com/ec2/instance-types/c6g/)
  +  [Istanze Amazon EC2 R6gd](https://aws.amazon.com/ec2/instance-types/r6/)
  +  [Istanze Amazon EC2 X2gd](https://aws.amazon.com/ec2/instance-types/x2/)

  Puoi anche utilizzare il comando `describe-instance-type-offerings` di Amazon EC2 con un filtro per visualizzare l'offerta di istanze per la tua regione. 

  ```
  aws ec2 describe-instance-type-offerings --filters Name=instance-type,Values=instance-type --region region
  ```

  Nell'esempio seguente viene verificata la disponibilità del tipo di istanza M6 nella regione Stati Uniti orientali (Virginia settentrionale) (us-east-1).

  ```
  aws ec2 describe-instance-type-offerings --filters "Name=instance-type,Values=m6*" --region us-east-1
  ```

  Per ulteriori informazioni, consulta [describe-instance-type-offerings ](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instance-type-offerings.html)*Amazon EC2 Command Line* Reference.

# Specifica dell'architettura ARM in una definizione di attività Amazon ECS
<a name="ecs-arm-specifying"></a>

Per utilizzare l'architettura ARM, specifica `ARM64` per il parametro di definizione di attività `cpuArchitecture`. 

Nell'esempio seguente, l'architettura ARM viene specificata in una definizione di attività. È in formato JSON.

```
{
    "runtimePlatform": {
        "operatingSystemFamily": "LINUX",
        "cpuArchitecture": "ARM64"
    },
...
}
```

Nell'esempio seguente, viene riportata una definizione di attività per l'architettura ARM che visualizza "hello world".

```
{
 "family": "arm64-testapp",
 "networkMode": "awsvpc",
 "containerDefinitions": [
    {
        "name": "arm-container",
        "image": "public.ecr.aws/docker/library/busybox:latest",
        "cpu": 100,
        "memory": 100,
        "essential": true,
        "command": [ "echo hello world" ],
        "entryPoint": [ "sh", "-c" ]
    }
 ],
 "requiresCompatibilities": [ "EC2" ],
 "cpu": "256",
 "memory": "512",
 "runtimePlatform": {
        "operatingSystemFamily": "LINUX",
        "cpuArchitecture": "ARM64"
  },
 "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole"
}
```

# Invia i log di Amazon ECS a CloudWatch
<a name="using_awslogs"></a>

È possibile configurare i contenitori delle attività per inviare informazioni di registro ai CloudWatch registri. Se si utilizza Fargate per le attività, è possibile visualizzare i log provenienti dai container. Se si utilizza EC2, è possibile visualizzare diversi log dei container in un'unica comoda posizione, evitando inoltre che i log dei container occupino spazio su disco nelle istanze di container.

**Nota**  
Il tipo di informazioni registrate dai container nell'attività dipende per lo più dal relativo comando `ENTRYPOINT`. Per impostazione predefinita, i log acquisiti mostrano l'output di comando che normalmente viene visualizzato in un terminale interattivo se si esegue il container in locale, ovvero i flussi I/O `STDOUT` e `STDERR`. Il driver di `awslogs` registro passa semplicemente questi log da Docker a Logs. CloudWatch Per ulteriori informazioni su come vengono elaborati i log Docker, inclusi metodi alternativi per acquisire diversi flussi o dati di file, consulta l'articolo relativo alla [visualizzazione di log per un container o servizio](https://docs.docker.com/engine/logging/) nella documentazione di Docker.

*Per inviare i log di sistema dalle istanze di container Amazon ECS a CloudWatch Logs, consulta [Monitoring Log Files](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) e [CloudWatch Logs quote nella Amazon Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) User Guide. CloudWatch *

## Fargate
<a name="enable_awslogs"></a>

Se si utilizza Fargate per le tue attività, per attivare il driver di log `logConfiguration` è necessario aggiungere i parametri `awslogs` richiesti alla definizione di attività. Per ulteriori informazioni, consulta [Esempio di definizione di attività Amazon ECS: indirizza i log verso CloudWatch](specify-log-config.md).

Per il container Windows su Fargate, eseguire una delle seguenti opzioni quando uno dei parametri di definizione dell'attività contiene caratteri speciali come `& \ < > ^ |`:
+ Aggiungere un carattere escape (`\`) con virgolette doppie attorno all'intera stringa del parametro

  Esempio

  ```
  "awslogs-multiline-pattern": "\"^[|DEBUG|INFO|WARNING|ERROR\"",
  ```
+ Aggiungere un carattere escape (`^`) attorno a ogni carattere speciale

  Esempio

  ```
  "awslogs-multiline-pattern": "^^[^|DEBUG^|INFO^|WARNING^|ERROR",
  ```

## EC2
<a name="ec2-considerations"></a>

Se si utilizza EC2 per le attività e si desidera attivare il driver di log `awslogs`, è necessario che le istanze di container Amazon ECS dispongano almeno della versione 1.9.0 dell'agente del container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).

**Nota**  
È necessario utilizzare un'AMI ottimizzata per Amazon ECS o una personalizzata con almeno la versione `1.9.0-1` del pacchetto `ecs-init`. Quando si utilizza un'AMI personalizzata, è necessario specificare che il driver di registrazione `awslogs` è disponibile sull'istanza Amazon EC2 all'avvio dell'agente utilizzando la seguente variabile di ambiente nell'istruzione **docker run** o nel file della variabile di ambiente.  

```
ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"]
```

Le istanze di container di Amazon ECS richiedono inoltre l'autorizzazione `logs:CreateLogStream` e `logs:PutLogEvents` nel ruolo IAM con cui avvii le istanze di container. Se hai creato il ruolo dell'istanza di container di Amazon ECS prima che fosse abilitato il supporto per il driver di log `awslogs` in Amazon ECS, potrebbe essere necessario aggiungere questa autorizzazione. `ecsTaskExecutionRole` viene utilizzato quando viene assegnato all'attività e deve contenere le autorizzazioni corrette. Per informazioni sul ruolo di esecuzione delle attività, consultare [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md). Se nelle istanze di container viene utilizzata l'apposita policy IAM gestita, le tue istanze di container dispongono delle autorizzazioni corrette. Per informazioni sulla policy IAM gestita per le istanze di container, consultare [Ruolo IAM delle istanze di container Amazon ECS](instance_IAM_role.md).

# Esempio di definizione di attività Amazon ECS: indirizza i log verso CloudWatch
<a name="specify-log-config"></a>

Prima che i contenitori possano inviare i log a CloudWatch, è necessario specificare il driver di `awslogs` registro per i contenitori nella definizione dell'attività. Per ulteriori informazioni sui parametri di log, consultare [Archiviazione e registrazione](task_definition_parameters.md#container_definition_storage)

La definizione di attività JSON che segue ha un oggetto `logConfiguration` specificato per ogni container. Uno è per il WordPress contenitore che invia i log a un gruppo di log chiamato. `awslogs-wordpress` L'altro è per un container MySQL che invia i log a un gruppo di log chiamato `awslogs-mysql`. Entrambi i container utilizzano il prefisso `awslogs-example` per il flusso di log.

```
{
    "containerDefinitions": [
        {
            "name": "wordpress",
            "links": [
                "mysql"
            ],
            "image": "public.ecr.aws/docker/library/wordpress:latest",
            "essential": true,
            "portMappings": [
                {
                    "containerPort": 80,
                    "hostPort": 80
                }
            ],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-create-group": "true",
                    "awslogs-group": "awslogs-wordpress",
                    "awslogs-region": "us-west-2",
                    "awslogs-stream-prefix": "awslogs-example"
                }
            },
            "memory": 500,
            "cpu": 10
        },
        {
            "environment": [
                {
                    "name": "MYSQL_ROOT_PASSWORD",
                    "value": "password"
                }
            ],
            "name": "mysql",
            "image": "public.ecr.aws/docker/library/mysql:latest",
            "cpu": 10,
            "memory": 500,
            "essential": true,
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-create-group": "true",
                    "awslogs-group": "awslogs-mysql",
                    "awslogs-region": "us-west-2",
                    "awslogs-stream-prefix": "awslogs-example",
                    "mode": "non-blocking", 
                    "max-buffer-size": "25m" 
                }
            }
        }
    ],
    "family": "awslogs-example"
}
```

## Fasi successive
<a name="specify-log-config-next-steps"></a>
+ Facoltativamente, puoi impostare una politica di conservazione per il gruppo di log utilizzando l'API CloudWatch AWS CLI o. Per ulteriori informazioni, consulta [put-retention-policy](https://docs.aws.amazon.com/cli/latest/reference/logs/put-retention-policy.html) nella *documentazione di riferimento AWS Command Line Interface *.
+ Dopo aver registrato una definizione di attività con il driver di `awslogs` registro in una configurazione di registro delle definizioni dei contenitori, è possibile eseguire un'attività o creare un servizio con tale definizione di attività per iniziare a inviare i log ai CloudWatch registri. Per ulteriori informazioni, consultare [Esecuzione di un'applicazione come attività Amazon ECS](standalone-task-create.md) e [Creazione di un'implementazione di aggiornamenti continui di Amazon ECS](create-service-console-v2.md).

# Inviare i log di Amazon ECS a un servizio o AWS AWS Partner
<a name="using_firelens"></a>

Puoi utilizzare Amazon ECS FireLens per utilizzare i parametri di definizione delle attività per indirizzare i log verso un AWS servizio o una destinazione AWS Partner Network (APN) per l'archiviazione e l'analisi dei log. AWS Partner Network È una comunità globale di partner che sfrutta programmi, competenze e risorse per creare, commercializzare e vendere offerte ai clienti. Per ulteriori informazioni, consulta [AWS Partner](https://aws.amazon.com/partners/work-with-partners/). FireLens funziona con [Fluentd](https://www.fluentd.org/) e [Fluent Bit](https://fluentbit.io/). Forniamo l'immagine AWS for Fluent Bit oppure puoi utilizzare la tua immagine Fluentd o Fluent Bit.

Per impostazione predefinita, Amazon ECS configura la dipendenza del container in modo che il container Firelens si avvii prima di qualsiasi container che lo utilizza. Inoltre, il container Firelens si ferma dopo che tutti i container che lo utilizzano si fermano.

Per utilizzare questa funzionalità, devi creare un ruolo IAM per le tue attività che fornisca le autorizzazioni necessarie per utilizzare tutti AWS i servizi richiesti dalle attività. Ad esempio, se un container esegue il routing dei log a Firehose, allora l'attività richiede l'autorizzazione per chiamare l'API `firehose:PutRecordBatch`. Per ulteriori informazioni, consulta [Aggiunta e rimozione di autorizzazioni per identità IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) nella *Guida per l'utente di IAM*.

Il processo potrebbe richiedere anche il ruolo di esecuzione del processo di Amazon ECS nelle seguenti condizioni. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).
+ Se la tua attività è ospitata su Fargate e stai estraendo immagini di container da Amazon ECR o stai facendo riferimento Gestione dei segreti AWS a dati sensibili dalla tua configurazione di registro, devi includere il ruolo IAM di esecuzione dell'attività.
+ Quando si utilizza un file di configurazione personalizzato ospitato in Amazon S3, il ruolo IAM per l'esecuzione dell'attività deve includere l'autorizzazione `s3:GetObject`.

Considera quanto segue quando utilizzi FireLens Amazon ECS:
+ Consigliamo di aggiungere `my_service_` al log del nome del container in modo da poter distinguere facilmente i nomi dei container nella console.
+ Per impostazione predefinita, Amazon ECS aggiunge una dipendenza dall'ordine iniziale del container tra i container dell'applicazione e il container FireLens. Quando si specifica un ordine del container tra i container dell'applicazione e il container FireLens, l'ordine di avvio predefinito del container viene sovrascritto.
+ FireLens per Amazon ECS è supportato per le attività ospitate sia su AWS Fargate su Linux che su Amazon EC2 su Linux. I container di Windows non supportano FireLens.

  Per informazioni su come configurare la registrazione centralizzata per i container di Windows, consulta [Registrazione centralizzata per container di Windows su Amazon ECS tramite Fluent Bit](https://aws.amazon.com/blogs/containers/centralized-logging-for-windows-containers-on-amazon-ecs-using-fluent-bit/).
+ Puoi utilizzare CloudFormation modelli FireLens per configurare Amazon ECS. Per ulteriori informazioni, consulta la [AWS::ECS::TaskDefinition FirelensConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-firelensconfiguration.html)Guida per l'*AWS CloudFormation utente*
+ FireLensascolta sulla porta`24224`, quindi per garantire che il FireLens log router non sia raggiungibile al di fuori dell'operazione, non devi consentire il traffico `24224` in entrata sulla porta del gruppo di sicurezza utilizzato dall'attività. Per attività che utilizzano la modalità di rete `awsvpc`, questo è il gruppo di sicurezza associato all'attività. Per attività che utilizzano la modalità di rete `host`, questo è il gruppo di sicurezza associato all'istanza Amazon EC2 che ospita l'attività. Per attività che utilizzano la modalità di rete `bridge`, non creare mappature di porte che utilizzano la porta `24224`.
+ Per le attività che utilizzano la modalità di `bridge` rete, il contenitore con la FireLens configurazione deve avviarsi prima dell'avvio di qualsiasi contenitore di applicazioni che si basa su di essa. Per controllare l'ordine di avvio dei container, utilizza le condizioni di dipendenza nella definizione di attività. Per ulteriori informazioni, consulta [Dipendenze per i container](task_definition_parameters.md#container_definition_dependson).
**Nota**  
Se utilizzi i parametri delle condizioni di dipendenza nelle definizioni dei contenitori con una FireLens configurazione, assicurati che ogni contenitore abbia un requisito di `HEALTHY` condizione `START` or.
+ Per impostazione predefinita, FireLens aggiunge il nome del cluster e della definizione dell'attività e l'Amazon Resource Name (ARN) del cluster come chiavi di metadati ai stdout/stderr log del contenitore. Di seguito è riportato un esempio del formato dei metadati.

  ```
  "ecs_cluster": "cluster-name",
  "ecs_task_arn": "arn:aws:ecs:region:111122223333:task/cluster-name/f2ad7dba413f45ddb4EXAMPLE",
  "ecs_task_definition": "task-def-name:revision",
  ```

  Se non desideri i metadati nei tuoi log, imposta `enable-ecs-log-metadata` su `false` nella sezione `firelensConfiguration` della definizione di attività.

  ```
  "firelensConfiguration":{
     "type":"fluentbit",
     "options":{
        "enable-ecs-log-metadata":"false",
        "config-file-type":"file",
        "config-file-value":"/extra.conf"
  }
  ```

Puoi configurare il FireLens contenitore in modo che venga eseguito come utente non root. Considera i seguenti aspetti:
+  Per configurare il FireLens contenitore in modo che venga eseguito come utente non root, è necessario specificare l'utente in uno dei seguenti formati:
  + `uid`
  + `uid:gid`
  + `uid:group`

  Per ulteriori informazioni sulla specificazione di un utente in una definizione di contenitore, consulta [ContainerDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html)*Amazon Elastic Container Service API Reference*.

  Il FireLens contenitore riceve i log delle applicazioni tramite un UNIX socket. L'agente Amazon ECS utilizza il `uid` per assegnare la proprietà della directory socket al FireLens contenitore.
+ La configurazione del FireLens contenitore per l'esecuzione come utente non root è supportata nelle versioni di Amazon ECS Agent `1.96.0` e successive e nelle versioni AMI ottimizzate per Amazon ECS e successive. `v20250716`
+ Quando si specifica un utente per il FireLens contenitore, questo `uid` deve essere univoco e non deve essere utilizzato per altri processi appartenenti ad altri contenitori nell'attività o nell'istanza del contenitore.

Per informazioni su come utilizzare più file di configurazione con Amazon ECS, inclusi i file ospitati o i file in Amazon S3, consultare [Init process for Fluent Bit on ECS, multi-config support](https://github.com/aws/aws-for-fluent-bit/tree/mainline/use_cases/init-process-for-fluent-bit).

Per informazioni sulle configurazioni di esempio, vedere[Esempio di definizione dell'attività Amazon ECS: indirizzare i log a FireLens](firelens-taskdef.md).

Per ulteriori informazioni sulla configurazione dei log per un throughput elevato, vedere. [Configurazione dei log di Amazon ECS per un throughput elevato](firelens-docker-buffer-limit.md)

# Configurazione dei log di Amazon ECS per un throughput elevato
<a name="firelens-docker-buffer-limit"></a>

Per scenari con elevata velocità di trasmissione dei log, consigliamo di utilizzare il driver di registro con and. `awsfirelens` FireLens Fluent Bit Fluent Bitè un processore di log leggero, efficiente in termini di risorse e in grado di gestire milioni di record di log. Tuttavia, per ottenere prestazioni ottimali su larga scala è necessario ottimizzarne la configurazione.

Questa sezione illustra le tecniche di Fluent Bit ottimizzazione avanzate per gestire un elevato throughput di log, mantenendo al contempo la stabilità del sistema e garantendo l'assenza di perdita di dati.

Per informazioni su come utilizzare i file di configurazione personalizzati con FireLens, vedere[Utilizzo di un file di configurazione personalizzato](firelens-taskdef.md#firelens-taskdef-customconfig). Per ulteriori esempi, consulta gli [ FireLens esempi di Amazon ECS](https://github.com/aws-samples/amazon-ecs-firelens-examples) su GitHub.

**Nota**  
Alcune opzioni di configurazione in questa sezione, come `workers` e`threaded`, richiedono AWS la Fluent Bit versione 3 o successiva. Per informazioni sulle versioni disponibili, vedere le versioni [AWS di Fluent Bit](https://github.com/aws/aws-for-fluent-bit/releases).

## Comprendere i blocchi
<a name="firelens-understanding-chunks"></a>

Fluent Bit*elabora i dati in unità chiamate blocchi.* Quando un plug-in INPUT riceve dati, il motore crea un blocco che viene archiviato in memoria o sul filesystem prima di essere inviato alle destinazioni OUTPUT.

Il comportamento del buffering dipende dall'`storage.type`impostazione nelle sezioni INPUT. Per impostazione predefinita, Fluent Bit utilizza il buffering della memoria. Per scenari di produzione o ad alta velocità, il buffering del file system offre una migliore resilienza.

[Per ulteriori informazioni, consulta [Chunks nella documentazione e What is a Chunk](https://docs.fluentbit.io/manual/administration/buffering-and-storage#chunks)? Fluent Bit](https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/mainline/examples/fluent-bit/oomkill-prevention#what-is-a-chunk) nel repository AWS for examplesFluent Bit.

## Buffering della memoria (impostazione predefinita)
<a name="firelens-memory-buffering"></a>

Per impostazione predefinita, Fluent Bit utilizza il buffering della memoria ()`storage.type memory`. È possibile limitare l'utilizzo della memoria per il plug-in INPUT utilizzando il `Mem_Buf_Limit` parametro.

L'esempio seguente mostra una configurazione di input con buffer di memoria:

```
[INPUT]
    Name          tcp
    Tag           ApplicationLogs
    Port          5170
    storage.type  memory
    Mem_Buf_Limit 5MB
```

**Importante**  
Quando `Mem_Buf_Limit` viene superato per un plugin, mette in Fluent Bit pausa l'input e i nuovi record vengono persi. Ciò può causare una contropressione e rallentare l'applicazione. Nei Fluent Bit registri viene visualizzato il seguente avviso:  

```
[input] tcp.1 paused (mem buf overlimit)
```

Il buffering della memoria è adatto per casi d'uso semplici con una velocità di trasmissione dei log da bassa a moderata. Per scenari ad alta produttività o di produzione in cui la perdita di dati è un problema, utilizzate invece il buffering del file system.

Per ulteriori informazioni, vedere [Buffering and Memory nella Fluent Bit documentazione e Memory](https://docs.fluentbit.io/manual/administration/buffering-and-storage#buffering-and-memory) [Buffering](https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/mainline/examples/fluent-bit/oomkill-prevention#case-1-memory-buffering-only-default-or-storagetype-memory) Only nel repository for examples. AWS Fluent Bit

## Buffering del file system
<a name="firelens-filesystem-buffering"></a>

Per scenari con throughput elevato, consigliamo di utilizzare il buffering del file system. [Per ulteriori informazioni su come Fluent Bit gestire il buffering e lo storage, consulta Buffering and Storage nella documentazione.](https://docs.fluentbit.io/manual/administration/buffering-and-storage) Fluent Bit

Il buffering del file system offre i seguenti vantaggi:
+ **Maggiore capacità del buffer**: lo spazio su disco è in genere più abbondante della memoria.
+ **Persistenza**: i dati memorizzati nel buffer sopravvivono ai riavvii. Fluent Bit
+ **Degrado graduale: in caso di errori di** output, i dati si accumulano sul disco anziché causare l'esaurimento della memoria.

Per abilitare il buffering del file system, fornite un file di configurazione personalizzato. Fluent Bit L'esempio seguente mostra la configurazione consigliata:

```
[SERVICE]
    # Flush logs every 1 second
    Flush 1
    # Wait 120 seconds during shutdown to flush remaining logs
    Grace 120
    # Directory for filesystem buffering
    storage.path             /var/log/flb-storage/
    # Limit chunks stored 'up' in memory (reduce for memory-constrained environments)
    storage.max_chunks_up    32
    # Flush backlog chunks to destinations during shutdown (prevents log loss)
    storage.backlog.flush_on_shutdown On

[INPUT]
    Name forward
    unix_path /var/run/fluent.sock
    # Run input in separate thread to prevent blocking
    threaded true
    # Enable filesystem buffering for persistence
    storage.type filesystem

[OUTPUT]
    Name cloudwatch_logs
    Match *
    region us-west-2
    log_group_name /aws/ecs/my-app
    log_stream_name $(ecs_task_id)
    # Use multiple workers for parallel processing
    workers 2
    # Retry failed flushes up to 15 times
    retry_limit 15
    # Maximum disk space for buffered data for this output
    storage.total_limit_size 10G
```

Parametri di configurazione chiave:

`storage.path`  
La directory in cui Fluent Bit memorizza i blocchi bufferizzati sul disco.

`storage.backlog.flush_on_shutdown`  
Se abilitata, Fluent Bit tenta di riportare tutti i blocchi del file system backlog verso le rispettive destinazioni durante l'arresto. Ciò aiuta a garantire la consegna dei dati prima delle interruzioni, ma può aumentare i tempi di spegnimento. Fluent Bit

`storage.max_chunks_up`  
Il numero di blocchi che rimangono in memoria. L'impostazione predefinita è 128 blocchi, che possono consumare più di 500 MB di memoria perché ogni blocco può utilizzare fino a 4-5 MB. In ambienti con limiti di memoria, riduci questo valore. Ad esempio, se hai a disposizione 50 MB per il buffering, impostalo su 8-10 blocchi.

`storage.type filesystem`  
Abilita l'archiviazione del filesystem per il plug-in di input. Nonostante il nome, Fluent Bit viene utilizzato `mmap` per mappare blocchi sia sulla memoria che sul disco, garantendo la persistenza senza compromettere le prestazioni.

`storage.total_limit_size`  
Lo spazio massimo su disco per i dati memorizzati nel buffer per uno specifico plug-in OUTPUT. Quando viene raggiunto questo limite, i record più vecchi relativi a quell'output vengono eliminati. Per ulteriori informazioni sul dimensionamento, vedere[Comprendere `storage.total_limit_size`](#firelens-storage-sizing).

`threaded true`  
Esegue l'input nel proprio thread, separato dal ciclo Fluent Bit di eventi principale. Ciò impedisce che gli input lenti blocchino l'intera pipeline.

Per ulteriori informazioni, vedere [Filesystem Buffering nella Fluent Bit documentazione e [Filesystem](https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/mainline/examples/fluent-bit/oomkill-prevention#case-2-filesystem-and-memory-buffering-storagetype-filesystem) and Memory Buffering](https://docs.fluentbit.io/manual/administration/buffering-and-storage#filesystem-buffering) nel repository for examples. AWS Fluent Bit

## Comprendere `storage.total_limit_size`
<a name="firelens-storage-sizing"></a>

Il `storage.total_limit_size` parametro su ogni plugin OUTPUT controlla lo spazio massimo su disco per i dati memorizzati nel buffer per quell'output. Quando viene raggiunto questo limite, i record più vecchi relativi a quell'output vengono eliminati per fare spazio a nuovi dati. Quando lo spazio su disco è completamente esaurito, i record Fluent Bit non vengono messi in coda e vengono persi.

Utilizzate la formula seguente per calcolare quella appropriata in `storage.total_limit_size` base alla frequenza di registro e alla finestra di ripristino desiderata:

```
If log rate is in KB/s, convert to MB/s first:
log_rate (MB/s) = log_rate (KB/s) / 1000

storage.total_limit_size (GB) = log_rate (MB/s) × duration (hours) × 3600 (seconds/hour) / 1000 (MB to GB)
```

La tabella seguente mostra esempi di calcoli per le frequenze di registro e le finestre di ripristino comuni:


| Frequenza di registro | 1 ora | 6 ore | 12 ore | 24 ore | 
| --- | --- | --- | --- | --- | 
| 0,25 MB/s | 0,9 GB | 5,4 GB | 10,8 GB | 21,6 GB | 
| 0,5 MB/s | 1,8 GB | 10,8 GB | 21,6 GB | 43,2 GB | 
| 1 MB/s | 3,6 GB | 21,6 GB | 43,2 GB | 86,4 GB | 
| 5 MB/s | 18 GB | 108 GB | 216 GB | 432 GB | 
| 10 MB/s | 36 GB | 216 GB | 432 GB | 864 GB | 

[Per osservare il rendimento di picco e scegliere le dimensioni del buffer appropriate, utilizzate il campione di misurazione della produttività. FireLens ](https://github.com/aws-samples/amazon-ecs-firelens-examples/tree/mainline/examples/measure-throughput)

Utilizzate la formula, i calcoli di esempio e l'analisi comparativa per scegliere un modello adatto `storage.total_limit_size` che fornisca la pista ideale per un recupero ottimale durante un'interruzione.

## Requisiti di archiviazione delle attività di Amazon ECS
<a name="firelens-storage-task-requirements"></a>

Somma tutti i `storage.total_limit_size` valori nelle sezioni OUTPUT e aggiungi il buffer per il sovraccarico. Questo totale determina lo spazio di archiviazione necessario nella definizione delle attività di Amazon ECS. Ad esempio, 3 uscite × 10 GB ciascuna = 30 GB\$1 buffer (5-10 GB) = 35-40 GB totali richiesti. Se il totale supera lo spazio di archiviazione disponibile, è possibile che i record non Fluent Bit vengano messi in coda e che vadano persi.

Sono disponibili le seguenti opzioni di archiviazione:

Bind mount (archiviazione temporanea)  
+ Per AWS Fargate, l'impostazione predefinita è 20 GB di spazio di archiviazione temporaneo (massimo 200 GB). Configurare l'utilizzo `ephemeralStorage` nella definizione dell'attività. Per ulteriori informazioni, consulta [EphemeralStorage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-ephemeralstorage.html) nella *Guida per l'utente di AWS CloudFormation *.
+ Per EC2, l'impostazione predefinita è 30 GB quando si utilizza l'AMI ottimizzata per Amazon ECS (condivisa tra il sistema operativo e Docker). Aumenta modificando la dimensione del volume principale.

Volumi Amazon EBS  
+ Fornisce storage a blocchi ad alta disponibilità, duraturo e ad alte prestazioni.
+ Richiede la configurazione del volume e `mountPoint` nella definizione dell'attività indica `storage.path` (impostazione predefinita:`/var/log/flb-storage/`).
+ Per ulteriori informazioni, consulta [Rimanda la configurazione del volume all'ora di avvio nella definizione di un'attività di Amazon ECS](specify-ebs-config.md).

Volumi Amazon EFS  
+ Fornisce uno storage di file semplice e scalabile.
+ Richiede la configurazione del volume e `mountPoint` nella definizione dell'attività l'indicazione `storage.path` (impostazione predefinita:`/var/log/flb-storage/`).
+ Per ulteriori informazioni, consulta [Specificare di un file system Amazon EFS nella definizione di un'attività Amazon ECS](specify-efs-config.md).

Per ulteriori informazioni sui volumi di dati, vedere[Opzioni di archiviazione per le attività di Amazon ECS](using_data_volumes.md).

## Ottimizza la configurazione dell'output
<a name="firelens-output-optimization"></a>

Problemi di rete, interruzioni del servizio e limitazione della destinazione possono impedire la consegna dei log. Una corretta configurazione dell'output garantisce la resilienza senza perdita di dati.

Quando un flusso di uscita fallisce, è Fluent Bit possibile riprovare l'operazione. I seguenti parametri controllano il comportamento dei tentativi di ripetizione:

`retry_limit`  
Il numero massimo di tentativi dopo il tentativo iniziale prima di eliminare i record. Il valore di default è 1. Ad esempio, `retry_limit 3` significa 4 tentativi totali (1 tentativo iniziale\$13 tentativi). Per gli ambienti di produzione, ne consigliamo 15 o più, che coprono diversi minuti di interruzione con un backoff esponenziale.  
Impostato su `no_limits` o per un numero infinito di tentativi`False`:  
+ Con il buffering della memoria, infiniti tentativi fanno sì che il plugin di input si interrompa quando vengono raggiunti i limiti di memoria.
+ Con il buffering del filesystem, i record più vecchi vengono eliminati quando vengono raggiunti. `storage.total_limit_size`
Dopo aver esaurito tutti i tentativi (1 tentativo iniziale \$1), i record vengono `retry_limit` eliminati. AWS i plugin con `auto_retry_requests true` (impostazione predefinita) forniscono un livello di riprova aggiuntivo prima del meccanismo di ritentativo. Fluent Bit Per ulteriori informazioni, consulta [Configurare i tentativi](https://docs.fluentbit.io/manual/administration/scheduling-and-retries#configure-retries) nella documentazione. Fluent Bit  
Ad esempio, `retry_limit 3` con le impostazioni predefinite (`scheduler.base 5`,`scheduler.cap 2000`,`net.connect_timeout 10s`) fornisce circa 70 secondi di tempo di attesa dello scheduler (10s \$1 20s \$1 40 s), 40 secondi di timeout di connessione di rete (4 tentativi × 10 secondi), più nuovi tentativi di AWS plug-in, per un totale di circa 2-10 minuti a seconda delle condizioni di rete e dei timeout TCP del sistema operativo.

`scheduler.base`  
I secondi base tra i tentativi (impostazione predefinita: 5). Consigliamo 10 secondi.

`scheduler.cap`  
Il numero massimo di secondi tra un tentativo e l'altro (impostazione predefinita: 2000). Consigliamo 60 secondi.

Il tempo di attesa tra un tentativo e l'altro utilizza il backoff esponenziale con jitter:

```
wait_time = random(base, min(base × 2^retry_number, cap))
```

Ad esempio, con e: `scheduler.base 10` `scheduler.cap 60`
+ Primo tentativo: attesa casuale tra 10 e 20 secondi
+ Secondo tentativo: attesa casuale tra 10 e 40 secondi
+ Terzo tentativo e successivo: attesa casuale compresa tra 10 e 60 secondi (limite)

[Per ulteriori informazioni, consulta [Configurazione del tempo di attesa per un nuovo tentativo e Rete](https://docs.fluentbit.io/manual/administration/scheduling-and-retries#configure-wait-time-for-retry) nella documentazione.](https://docs.fluentbit.io/manual/administration/networking) Fluent Bit

`workers`  
Il numero di thread per l'elaborazione parallela dell'output. Più operatori consentono lavaggi simultanei, migliorando la produttività quando si elaborano più blocchi.

`auto_retry_requests`  
Un'impostazione AWS specifica del plug-in che fornisce un livello di riprova aggiuntivo prima del meccanismo di ritentativo integrato. Fluent Bit Il valore predefinito è `true`. Se abilitato, il plugin AWS di output riprova internamente le richieste non riuscite prima che la richiesta venga considerata fallita e soggetta alla configurazione. `retry_limit`

Il `Grace` parametro nella `[SERVICE]` sezione imposta il tempo di Fluent Bit attesa durante l'arresto per lo svuotamento dei dati memorizzati nel buffer. Il `Grace` periodo deve essere coordinato con quello del contenitore. `stopTimeout` Assicurarsi che `stopTimeout` superi il `Grace` periodo di tempo necessario per consentire il Fluent Bit completamento del lavaggio prima del ricevimento. `SIGKILL` Ad esempio, se `Grace` è 120 secondi, impostato su `stopTimeout` 150 secondi.

L'esempio seguente mostra una Fluent Bit configurazione completa con tutte le impostazioni consigliate per scenari con throughput elevato:

```
[SERVICE]
    # Flush logs every 1 second
    Flush 1
    # Wait 120 seconds during shutdown to flush remaining logs
    Grace 120
    # Directory for filesystem buffering
    storage.path             /var/log/flb-storage/
    # Limit chunks stored 'up' in memory (reduce for memory-constrained environments)
    storage.max_chunks_up    32
    # Flush backlog chunks to destinations during shutdown (prevents log loss)
    storage.backlog.flush_on_shutdown On
    # Minimum seconds between retries
    scheduler.base           10
    # Maximum seconds between retries (exponential backoff cap)
    scheduler.cap            60

[INPUT]
    Name forward
    unix_path /var/run/fluent.sock
    # Run input in separate thread to prevent blocking
    threaded true
    # Enable filesystem buffering for persistence
    storage.type filesystem

[OUTPUT]
    Name cloudwatch_logs
    Match *
    region us-west-2
    log_group_name /aws/ecs/my-app
    log_stream_name $(ecs_task_id)
    # Use multiple workers for parallel processing
    workers 2
    # Retry failed flushes up to 15 times
    retry_limit 15
    # Maximum disk space for buffered data for this output
    storage.total_limit_size 10G
```

## Comprensione degli scenari di perdita di dati
<a name="firelens-record-loss-scenarios"></a>

I record possono andare persi durante interruzioni prolungate o problemi con le destinazioni di output. Le raccomandazioni di configurazione contenute in questa guida rappresentano gli approcci migliori per ridurre al minimo la perdita di dati, ma non possono garantire l'assenza di perdite in caso di guasti prolungati. La comprensione di questi scenari aiuta a configurare Fluent Bit per massimizzare la resilienza.

I record possono essere persi in due modi: i record più vecchi vengono eliminati quando lo spazio di archiviazione si esaurisce, oppure i record più recenti vengono rifiutati quando il sistema non può accettare più dati.

### I record più vecchi vengono eliminati
<a name="firelens-record-loss-oldest-dropped"></a>

I record memorizzati nel buffer più vecchi vengono eliminati quando i tentativi di riprova sono esauriti o quando `storage.total_limit_size` si esaurisce e occorre fare spazio a nuovi dati.

Limite di tentativi superato  
Si verifica dopo un nuovo tentativo del AWS plug-in (se`auto_retry_requests true`) più 1 Fluent Bit tentativo iniziale più nuovi tentativi. `retry_limit` Per mitigare la situazione, impostate un numero infinito di `retry_limit no_limits` tentativi per ogni plugin OUTPUT:  

```
[OUTPUT]
    Name                        cloudwatch_logs
    Match                       ApplicationLogs
    retry_limit                 no_limits
    auto_retry_requests         true
```
I tentativi infiniti impediscono la perdita dei record a causa dell'esaurimento dei tentativi, ma possono causare il riempimento. `storage.total_limit_size`

Limite di archiviazione raggiunto (buffering del file system)  
Si verifica quando la destinazione di output non è disponibile per un periodo superiore al buffer CAN configurato. `storage.total_limit_size` Ad esempio, un buffer da 10 GB a una frequenza di MB/s registro fornisce circa 2,7 ore di buffering. Per mitigare, aumenta `storage.total_limit_size` per ogni plug-in OUTPUT e fornisci uno spazio di archiviazione delle attività Amazon ECS adeguato:  

```
[OUTPUT]
    Name                        cloudwatch_logs
    Match                       ApplicationLogs
    storage.total_limit_size    10G
```

### Record più recenti rifiutati
<a name="firelens-record-loss-newest-rejected"></a>

I record più recenti vengono eliminati quando lo spazio su disco è esaurito o quando l'input viene sospeso a causa di. `Mem_Buf_Limit`

Spazio su disco esaurito (buffering del file system)  
Si verifica quando lo spazio su disco è completamente esaurito. Fluent Bitnon riesce a mettere in coda i nuovi record e questi vengono persi. Per mitigare, somma tutti i `storage.total_limit_size` valori e fornisci uno storage di attività Amazon ECS adeguato. Per ulteriori informazioni, consulta [Requisiti di archiviazione delle attività di Amazon ECS](#firelens-storage-task-requirements).

Limite di memoria raggiunto (buffering della memoria)  
Si verifica quando la destinazione di output non è disponibile e il buffer di memoria si riempie. I plugin di input in pausa smettono di accettare nuovi record. Per mitigare, usali `storage.type filesystem` per una migliore resilienza o per aumentare. `Mem_Buf_Limit`

### Le migliori pratiche per ridurre al minimo la perdita di dati
<a name="firelens-record-loss-best-practices"></a>

Prendi in considerazione le seguenti best practice per ridurre al minimo la perdita di dati:
+ **Usa il buffering del file system: impostato `storage.type filesystem` per una migliore resilienza durante** le interruzioni.
+ **Dimensioni dello storage appropriate**: calcola in `storage.total_limit_size` base alla frequenza di registro e alla finestra di ripristino desiderata.
+ Esegui il **provisioning di un disco adeguato**: assicurati che l'attività Amazon ECS disponga di uno storage temporaneo sufficiente, Amazon EBS o Amazon EFS.
+ **Configura il comportamento dei tentativi**: equilibrio tra `retry_limit` (elimina i record dopo aver esaurito i tentativi) e (riprova all'infinito ma può riempire lo spazio di archiviazione`no_limits`).

## Utilizza la registrazione a più destinazioni per garantire l'affidabilità
<a name="firelens-multi-destination"></a>

L'invio di registri a più destinazioni elimina i singoli punti di errore. Ad esempio, se CloudWatch Logs subisce un'interruzione, i log continuano a raggiungere Amazon S3.

La registrazione multidestinazione offre i seguenti vantaggi. Il plug-in di output Amazon S3 supporta anche opzioni di compressione come gzip e il formato Parquet, che possono ridurre i costi di archiviazione. Per ulteriori informazioni, consulta la sezione [Compressione S3 nella documentazione.](https://docs.fluentbit.io/manual/pipeline/outputs/s3#compression) Fluent Bit

La registrazione multidestinazione può offrire i seguenti vantaggi:
+ **Ridondanza**: se una destinazione fallisce, i log raggiungono comunque l'altra.
+ **Ripristino**: ricostruisci le lacune in un sistema rispetto all'altro.
+ **Durabilità**: archivia i log in Amazon S3 per la conservazione a lungo termine.
+ **Ottimizzazione dei costi**: conserva i log recenti in un servizio di query veloce come CloudWatch Logs con conservazione più breve, mentre archivia tutti i log su uno storage Amazon S3 a basso costo per una conservazione a lungo termine.

La seguente Fluent Bit configurazione invia i log sia a Logs che ad CloudWatch Amazon S3:

```
[OUTPUT]
    Name cloudwatch_logs
    Match *
    region us-west-2
    log_group_name /aws/ecs/my-app
    log_stream_name $(ecs_task_id)
    workers 2
    retry_limit 15

[OUTPUT]
    Name s3
    Match *
    bucket my-logs-bucket
    region us-west-2
    total_file_size 100M
    s3_key_format /fluent-bit-logs/$(ecs_task_id)/%Y%m%d/%H/%M/$UUID
    upload_timeout 10m
    # Maximum disk space for buffered data for this output
    storage.total_limit_size 5G
```

Entrambi gli output utilizzano lo stesso `Match *` schema, quindi tutti i record vengono inviati a entrambe le destinazioni in modo indipendente. Durante l'interruzione di una destinazione, i log continuano a fluire verso l'altra, mentre i flush non riusciti si accumulano nel buffer del file system per riprovare in un secondo momento.

## Usa la registrazione basata su file con il plugin tail input
<a name="firelens-tail-input"></a>

Per scenari ad alta velocità in cui la perdita di log è un problema fondamentale, puoi utilizzare un approccio alternativo: fare in modo che l'applicazione scriva i log sui file su disco e configuri Fluent Bit per leggerli utilizzando il plug-in di input. `tail` Questo approccio aggira completamente il livello dei driver di registrazione Docker.

La registrazione basata su file con il plugin tail offre i seguenti vantaggi:
+ **Tracciamento degli offset**: il plug-in tail può memorizzare gli offset dei file in un file di database (utilizzando l'`DB`opzione), garantendo la durabilità durante i riavvii. Fluent Bit Questo aiuta a prevenire la perdita di log durante il riavvio del contenitore.
+ **Buffering a livello di input**: è possibile configurare i limiti del buffer di memoria direttamente sul plug-in di input utilizzando, in questo modo`Mem_Buf_Limit`, un controllo più granulare sull'utilizzo della memoria.
+ **Evita il sovraccarico di Docker**: i log passano direttamente dal file all'altro senza passare attraverso i buffer di registro di Docker. Fluent Bit

Per utilizzare questo approccio, l'applicazione deve scrivere i log nei file anziché. `stdout` Sia il contenitore dell'applicazione che il Fluent Bit contenitore montano un volume condiviso in cui sono archiviati i file di registro.

L'esempio seguente mostra una configurazione di input di tipo tail con le migliori pratiche:

```
[INPUT]
    Name tail
    # File path or glob pattern to tail
    Path /var/log/app.log
    # Database file for storing file offsets (enables resuming after restart)
    DB /var/log/flb_tail.db
    # when true, controls that only fluent-bit will access the database (improves performance)
    DB.locking true
    # Skip long lines instead of skipping the entire file
    Skip_Long_Lines On
    # How often (in seconds) to check for new files matching the glob pattern
    Refresh_Interval 10
    # Extra seconds to monitor a file after rotation to account for pending flush
    Rotate_Wait 30
    # Maximum size of the buffer for a single line
    Buffer_Max_Size 10MB
    # Initial allocation size for reading file data
    Buffer_Chunk_Size 1MB
    # Maximum memory buffer size (tail pauses when full)
    Mem_Buf_Limit 75MB
```

Quando usi il plugin tail input, considera quanto segue:
+ Implementate la rotazione dei log per i log delle applicazioni per prevenire l'esaurimento del disco. Monitora le metriche di volume sottostanti per valutare le prestazioni.
+ Prendi in considerazione impostazioni come `Ignore_Older``Read_from_Head`, e parser multilinea in base al formato del registro.

Per ulteriori informazioni, consulta [Tail](https://docs.fluentbit.io/manual/pipeline/inputs/tail) nella Fluent Bit documentazione. Per le migliori pratiche, consulta [Tail config with best practice](https://github.com/aws/aws-for-fluent-bit/blob/mainline/troubleshooting/debugging.md#tail-config-with-best-practices) nella guida AWS per la Fluent Bit risoluzione dei problemi.

## Accedi direttamente a FireLens
<a name="firelens-environment-variables"></a>

Quando il driver di log `awsfirelens` è specificato in una definizione di attività, l'agente Amazon ECS inserisce le seguenti variabili di ambiente nel container:

`FLUENT_HOST`  
L'indirizzo IP assegnato al FireLens contenitore.  
Se utilizzi EC2 con la modalità di `bridge` rete, la variabile di `FLUENT_HOST` ambiente nel contenitore dell'applicazione può diventare imprecisa dopo il riavvio del contenitore del FireLens log router (il contenitore con l'`firelensConfiguration`oggetto nella definizione del contenitore). Questo perché `FLUENT_HOST` è un indirizzo IP dinamico e può cambiare dopo un riavvio. La registrazione diretta dal container dell'applicazione all'indirizzo IP `FLUENT_HOST` può iniziare a fallire dopo la modifica dell'indirizzo. Per ulteriori informazioni sul riavvio di singoli container, consultare [Riavviare singoli container nelle attività Amazon ECS con policy di riavvio dei container](container-restart-policy.md).

`FLUENT_PORT`  
La porta su cui il protocollo Fluent Forward è in ascolto.

Puoi utilizzare queste variabili di ambiente per accedere direttamente al Fluent Bit log router dal codice dell'applicazione utilizzando il protocollo Fluent Forward, anziché scrivere su. `stdout` Questo approccio aggira il livello dei driver di registrazione Docker, che offre i seguenti vantaggi:
+ **Latenza inferiore**: i log vengono inviati direttamente all'infrastruttura di registrazione di Docker Fluent Bit senza passare attraverso l'infrastruttura di registrazione.
+ **Registrazione strutturata: invia dati di** registro strutturati in modo nativo senza sovraccarico di codifica JSON.
+ **Controllo migliore**: l'applicazione può implementare la propria logica di buffering e gestione degli errori.

Le seguenti librerie di logger Fluent supportano il protocollo Fluent Forward e possono essere utilizzate per inviare i log direttamente a: Fluent Bit
+ **Go**: [fluent-logger-golang](https://github.com/fluent/fluent-logger-golang)
+ **Python** – [fluent-logger-python](https://github.com/fluent/fluent-logger-python)
+ **Java**: [fluent-logger-java](https://github.com/fluent/fluent-logger-java)
+ **Node.js** – [fluent-logger-node](https://github.com/fluent/fluent-logger-node)
+ **Ruby**: [fluent-logger-ruby](https://github.com/fluent/fluent-logger-ruby)

## Configura il limite del buffer Docker
<a name="firelens-buffer-limit"></a>

Quando si crea una definizione di attività, è possibile specificare il numero di righe di registro memorizzate nel buffer in memoria specificando il valore in. `log-driver-buffer-limit` Questo controlla il buffer tra Docker e. Fluent Bit Per ulteriori informazioni, consulta la pagina [Driver di registro di Fluentd](https://docs.docker.com/engine/logging/drivers/fluentd/) nella documentazione Docker.

Utilizza questa opzione in caso di velocità di trasmissione effettiva elevata, perché Docker potrebbe esaurire la memoria buffer e scartare i messaggi buffer in modo da poter aggiungere nuovi messaggi.

Considerate quanto segue quando utilizzate questa opzione:
+ Questa opzione è supportata nei tipi EC2 e Fargate con versione della piattaforma `1.4.0` o successiva.
+ L'opzione è valida solo quando `logDriver` è impostato su `awsfirelens`.
+ Il limite di buffer di default è `1048576` righe di log.
+ Il limite del buffer deve essere maggiore o uguale a `0` e inferiore a `536870912` righe di log.
+ La quantità massima di memoria utilizzata per questo buffer è il prodotto della dimensione di ogni riga di log e della dimensione del buffer. Ad esempio, se le righe di registro dell'applicazione sono in media `2` KB, un limite di buffer di 4096 utilizzerebbe al massimo `8` MiB. La quantità totale di memoria allocata a livello di attività deve essere superiore a quella allocata per tutti i container oltre al driver di log del buffer di memoria.

La seguente definizione di attività mostra come configurare: `log-driver-buffer-limit`

```
{
    "containerDefinitions": [
        {
            "name": "my_service_log_router",
            "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:3",
            "cpu": 0,
            "memoryReservation": 51,
            "essential": true,
            "firelensConfiguration": {
                "type": "fluentbit"
            }
        },
        {
            "essential": true,
            "image": "public.ecr.aws/docker/library/httpd:latest",
            "name": "app",
            "logConfiguration": {
                "logDriver": "awsfirelens",
                "options": {
                    "Name": "firehose",
                    "region": "us-west-2",
                    "delivery_stream": "my-stream",
                    "log-driver-buffer-limit": "52428800"
                }
            },
            "dependsOn": [
                {
                    "containerName": "my_service_log_router",
                    "condition": "START"
                }
            ],
            "memoryReservation": 100
        }
    ]
}
```

# AWS per gli archivi di Fluent Bit immagini per Amazon ECS
<a name="firelens-using-fluentbit"></a>

AWS fornisce un'Fluent Bitimmagine con i plugin sia per CloudWatch Logs che per Firehose. Si consiglia di utilizzare Fluent Bit come router di log perché dispone di un tasso di utilizzo delle risorse inferiore a Fluentd. Per ulteriori informazioni, consulta [CloudWatch Logs for Fluent Bit](https://github.com/aws/amazon-cloudwatch-logs-for-fluent-bit) e [Amazon Kinesis Firehose](https://github.com/aws/amazon-kinesis-firehose-for-fluent-bit) for Fluent Bit.

L'immagine **AWS per Fluent Bit** è disponibile su Amazon ECR sia nella Amazon ECR Public Gallery che in un repository Amazon ECR per l'alta disponibilità.

## Galleria pubblica di Amazon ECR
<a name="firelens-image-ecrpublic"></a>

L'Fluent Bitimmagine AWS per è disponibile nella Amazon ECR Public Gallery. Questa è la posizione consigliata per scaricare l'Fluent Bitimmagine AWS for perché è un archivio pubblico e può essere utilizzato da tutti. Regioni AWS Per ulteriori informazioni, consulta la [aws-for-fluent-bit](https://gallery.ecr.aws/aws-observability/aws-for-fluent-bit)Amazon ECR Public Gallery.

### Linux
<a name="firelens-image-ecrpublic-linux"></a>

L'Fluent Bitimmagine AWS for nella galleria pubblica di Amazon ECR supporta il sistema operativo Amazon Linux con `x86-64` architettura `ARM64` or.

Puoi estrarre l'Fluent Bitimmagine AWS for dalla Amazon ECR Public Gallery specificando l'URL del repository con il tag immagine desiderato. I tag immagine disponibili sono disponibili nella scheda **Tag immagine** nella galleria pubblica di Amazon ECR.

Di seguito è mostrata la sintassi da utilizzare per la CLI di Docker.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:tag
```

Ad esempio, puoi estrarre l'immagine più recente della famiglia «3.x» di AWS quattro Fluent Bit versioni utilizzando questo comando CLI Docker.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:3
```

**Nota**  
I pull non autenticati sono consentiti, ma hanno un limite di velocità inferiore rispetto ai pull autenticati. Per autenticarti utilizzando il tuo AWS account prima di estrarlo, usa il seguente comando.  

```
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
```

#### AWS per 3.0.0 Fluent Bit
<a name="firelens-image-ecrpublic-linux-3.0.0"></a>

Oltre alle Fluent Bit versioni AWS for esistenti`2.x`, AWS for Fluent Bit supporta una nuova versione principale. `3.x` La nuova versione principale include l'aggiornamento delle immagini da Amazon Linux 2 ad Amazon Linux 2023 e dalla Fluent Bit versione `1.9.10` a. `4.1.1` Per ulteriori informazioni, consulta il [Fluent Bitrepository AWS for](https://github.com/aws/aws-for-fluent-bit/blob/mainline/VERSIONS.md) su. GitHub

Gli esempi seguenti mostrano i tag aggiornati AWS per Fluent Bit `3.x` le immagini:

È possibile utilizzare tag multiarchitettura per l'Fluent Bitimmagine AWS for.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:3
```

### Windows
<a name="firelens-image-ecrpublic-windows"></a>

L'Fluent Bitimmagine AWS for nella Amazon ECR Public Gallery supporta l'`AMD64`architettura con i seguenti sistemi operativi:
+ Windows Server 2022 Full
+ Windows Server 2022 Core
+ Windows Server 2019 Full
+ Windows Server 2019 Core

I contenitori Windows che si trovano su AWS Fargate non supportano. FireLens

Puoi estrarre l'Fluent Bitimmagine AWS for dalla Amazon ECR Public Gallery specificando l'URL del repository con il tag immagine desiderato. I tag immagine disponibili sono disponibili nella scheda **Tag immagine** nella galleria pubblica di Amazon ECR.

Di seguito è mostrata la sintassi da utilizzare per la CLI di Docker.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:tag
```

Ad esempio, puoi estrarre la più recente stable AWS for Fluent Bit image usando questo comando Docker CLI.

```
docker pull public.ecr.aws/aws-observability/aws-for-fluent-bit:windowsservercore-stable
```

**Nota**  
I pull non autenticati sono consentiti, ma hanno un limite di velocità inferiore rispetto ai pull autenticati. Per autenticarti utilizzando il tuo AWS account prima di estrarlo, usa il seguente comando.  

```
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
```

## Amazon ECR
<a name="firelens-image-ecr"></a>

L'immagine AWS for Fluent Bit è disponibile su Amazon ECR per un'elevata disponibilità. I seguenti comandi possono essere utilizzati per recuperare un'immagine URIs e stabilire la disponibilità dell'immagine in una determinata area. Regione AWS

### Linux
<a name="firelens-image-ecr-linux"></a>

L'ultima versione stabile AWS dell'URI dell'immagine Fluent Bit può essere recuperata utilizzando il seguente comando.

```
aws ssm get-parameters \
      --names /aws/service/aws-for-fluent-bit/stable \
      --region us-east-1
```

Tutte le versioni dell'immagine AWS for Fluent Bit possono essere elencate utilizzando il comando seguente per interrogare il parametro Systems Manager Parameter Store.

```
aws ssm get-parameters-by-path \
      --path /aws/service/aws-for-fluent-bit \
      --region us-east-1
```

È possibile fare riferimento all'immagine stabile più recente AWS per Fluent Bit in un CloudFormation modello facendo riferimento al nome dell'archivio dei parametri di Systems Manager. Di seguito è riportato un esempio:

```
Parameters:
  FireLensImage:
    Description: Fluent Bit image for the FireLens Container
    Type: AWS::SSM::Parameter::Value<String>
    Default: /aws/service/aws-for-fluent-bit/stable
```

**Nota**  
Se il comando fallisce o non viene generato alcun output, l'immagine non è disponibile nella cartella Regione AWS in cui viene chiamato il comando.

### Windows
<a name="firelens-image-ecr-windows"></a>

L'ultima versione stabile dell'URI AWS di immagine Fluent Bit può essere recuperata utilizzando il seguente comando.

```
aws ssm get-parameters \
      --names /aws/service/aws-for-fluent-bit/windowsservercore-stable \
      --region us-east-1
```

Tutte le versioni dell'immagine AWS for Fluent Bit possono essere elencate utilizzando il comando seguente per interrogare il parametro Systems Manager Parameter Store.

```
aws ssm get-parameters-by-path \
      --path /aws/service/aws-for-fluent-bit/windowsservercore \
      --region us-east-1
```

È possibile fare riferimento all'ultima immagine stabile AWS per Fluent Bit in un CloudFormation modello facendo riferimento al nome dell'archivio dei parametri di Systems Manager. Di seguito è riportato un esempio:

```
Parameters:
  FireLensImage:
    Description: Fluent Bit image for the FireLens Container
    Type: AWS::SSM::Parameter::Value<String>
    Default: /aws/service/aws-for-fluent-bit/windowsservercore-stable
```

# Esempio di definizione dell'attività Amazon ECS: indirizzare i log a FireLens
<a name="firelens-taskdef"></a>

Per utilizzare il routing di log personalizzato con FireLens, è necessario specificare quanto segue nella definizione di attività:
+ Un container router di log contenente una configurazione FireLens. Si consiglia di contrassegnare il container come `essential`.
+ Uno o più container dell'applicazione contenenti una configurazione del log che specifica il driver di log `awsfirelens`.
+ Un nome della risorsa Amazon (ARN) del ruolo IAM dell'attività contenente le autorizzazioni richieste dall'attività per instradare i log.

Quando si crea una nuova definizione di attività utilizzando il Console di gestione AWS, è disponibile una sezione di FireLens integrazione che semplifica l'aggiunta di un contenitore di log router. Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

Amazon ECS converte la configurazione del log e genera la configurazione di output Fluentd o Fluent Bit. La configurazione di output è montata nel container di routing dei log in corrispondenza di `/fluent-bit/etc/fluent-bit.conf` for Fluent Bit e `/fluentd/etc/fluent.conf` for Fluentd.

**Importante**  
FireLens è in ascolto sulla porta `24224`. Pertanto, per garantire che il FireLens log router non sia raggiungibile al di fuori dell'operazione, non è necessario consentire il traffico `24224` in ingresso sulla porta del gruppo di sicurezza utilizzato dall'attività. Per attività che utilizzano la modalità di rete `awsvpc`, questo è il gruppo di sicurezza associato all'attività. Per attività che utilizzano la modalità di rete `host`, questo è il gruppo di sicurezza associato all'istanza Amazon EC2 che ospita l'attività. Per attività che utilizzano la modalità di rete `bridge`, non creare mappature di porte che utilizzano la porta `24224`.

Di default, Amazon ECS aggiunge ulteriori campi nelle voci di log che consentono di identificare l'origine dei log. 
+ `ecs_cluster`: il nome del cluster di cui fa parte il processo.
+ `ecs_task_arn`: il nome della risorsa Amazon (ARN) completo dell'attività a cui appartiene il container.
+ `ecs_task_definition`: il nome della definizione di attività e la revisione che il processo sta utilizzando.
+ `ec2_instance_id`: l'ID dell'istanza Amazon EC2 su cui il container è ospitato. Questo campo è valido solo per processi che utilizzano il tipo di avvio EC2.

È possibile impostare `enable-ecs-log-metadata` su `false` se non si desiderano i metadati.

Il seguente esempio di definizione di attività definisce un contenitore di log router che utilizza Fluent Bit per indirizzare i log verso Logs. CloudWatch Definisce inoltre un container di applicazioni che utilizza una configurazione di log per instradare i log ad Amazon Data Firehose e imposta la memoria usata per il buffer degli eventi a 2 MiB.

**Nota**  
Per ulteriori esempi di definizioni di attività, consulta gli [ FireLensesempi di Amazon ECS](https://github.com/aws-samples/amazon-ecs-firelens-examples) su GitHub.

```
{
  "family": "firelens-example-firehose",
  "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role",
  "containerDefinitions": [
    {
            "name": "log_router",
            "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:3",
            "cpu": 0,
            "memoryReservation": 51,
            "portMappings": [],
            "essential": true,
            "environment": [],
            "mountPoints": [],
            "volumesFrom": [],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {
                    "awslogs-group": "/ecs/ecs-aws-firelens-sidecar-container",
                    "mode": "non-blocking",
                    "awslogs-create-group": "true",
                    "max-buffer-size": "25m",
                    "awslogs-region": "us-east-1",
                    "awslogs-stream-prefix": "firelens"
                },
                "secretOptions": []
            },
            "systemControls": [],
            "firelensConfiguration": {
                "type": "fluentbit"
            }
        },
    {
      "essential": true,
      "image": "public.ecr.aws/docker/library/httpd:latest",
      "name": "app",
      "logConfiguration": {
        "logDriver": "awsfirelens",
        "options": {
          "Name": "firehose",
          "region": "us-west-2",
          "delivery_stream": "my-stream",
          "log-driver-buffer-limit": "1048576"
        }
      },
      "memoryReservation": 100
    }
  ]
}
```

Le coppie chiave/valore specificate come opzioni nell'oggetto `logConfiguration` vengono utilizzate per generare la configurazione di output Fluentd o Fluent Bit. Di seguito è riportato un esempio di codice da una definizione di output Fluent Bit.

```
[OUTPUT]
    Name   firehose
    Match  app-firelens*
    region us-west-2
    delivery_stream my-stream
```

**Nota**  
FireLens gestisce la `match` configurazione. Non specificare la configurazione `match` nella definizione dell'attività. 

## Utilizzo di un file di configurazione personalizzato
<a name="firelens-taskdef-customconfig"></a>

È possibile utilizzare un file di configurazione personalizzato. Il formato del file di configurazione è il formato nativo per il router di log in uso. Per ulteriori informazioni, consultare [Fluentd Config File Syntax](https://docs.fluentd.org/configuration/config-file) e [YAML Configuration](https://docs.fluentbit.io/manual/administration/configuring-fluent-bit/yaml).

Nel file di configurazione personalizzato, per le attività che utilizzano la modalità di rete `bridge` o `awsvpc`, non è necessario impostare un input di inoltro Fluentd o Fluent Bit su TCP perché FireLens lo aggiunge alla configurazione di input.

La configurazione di FireLens deve contenere le seguenti opzioni per specificare un file di configurazione personalizzato:

`config-file-type`  
Il percorso di origine del file di configurazione personalizzato. Le opzioni disponibili sono `s3` o `file`.  
Le attività ospitate su supportano AWS Fargate solo il tipo `file` di file di configurazione. Tuttavia, puoi utilizzare i file di configurazione ospitati in Amazon S3 su AWS Fargate utilizzando il AWS contenitore for init. Fluent Bit Per ulteriori informazioni, consulta [Processo di inizializzazione per Fluent Bit su ECS, supporto multi-config su](https://github.com/aws/aws-for-fluent-bit/blob/mainline/use_cases/init-process-for-fluent-bit/README.md). GitHub

`config-file-value`  
L'origine del file di configurazione personalizzato. Se viene utilizzato il tipo di file di configurazione `s3`, il valore del file di configurazione è l'ARN completo del file e del bucket Amazon S3. Se viene utilizzato il tipo di file di configurazione `file`, il valore del file di configurazione è il percorso completo del file di configurazione presente nell'immagine del container o in un volume montato nel container.  
Quando si utilizza un file di configurazione personalizzato, è necessario specificare un percorso diverso da quello utilizzato da FireLens. Amazon ECS riserva il percorso file `/fluent-bit/etc/fluent-bit.conf` for Fluent Bit e `/fluentd/etc/fluent.conf` for Fluentd.

L'esempio seguente mostra la sintassi richiesta quando si specifica una configurazione personalizzata.

**Importante**  
Per specificare un file di configurazione personalizzato ospitato in Amazon S3, assicurati di aver creato un ruolo IAM di esecuzione dell'attività con le autorizzazioni appropriate. 

Di seguito viene illustrata la sintassi richiesta quando si specifica una configurazione personalizzata.

```
{
  "containerDefinitions": [
    {
      "essential": true,
      "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:3",
      "name": "log_router",
      "firelensConfiguration": {
        "type": "fluentbit",
        "options": {
          "config-file-type": "s3 | file",
          "config-file-value": "arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf | filepath"
        }
      }
    }
  ]
}
```

**Nota**  
Le attività ospitate su supportano AWS Fargate solo il tipo di file di configurazione. `file` Tuttavia, puoi utilizzare i file di configurazione ospitati in Amazon S3 su AWS Fargate utilizzando il AWS contenitore for init. Fluent Bit Per ulteriori informazioni, consulta [Processo di inizializzazione per Fluent Bit su ECS, supporto multi-config su](https://github.com/aws/aws-for-fluent-bit/blob/mainline/use_cases/init-process-for-fluent-bit/README.md). GitHub

# Utilizzo di immagini non AWS containerizzate in Amazon ECS
<a name="private-auth"></a>

Utilizzate il registro privato per memorizzare le vostre credenziali e Gestione dei segreti AWS quindi fate riferimento ad esse nella definizione dell'attività. In questo modo è possibile fare riferimento alle immagini dei contenitori presenti in registri privati AWS che non richiedono l'autenticazione nelle definizioni delle attività. Questa funzionalità è supportata da processi ospitati su istanze Fargate, Amazon EC2 e istanze esterne che utilizzano Amazon ECS Anywhere.

**Importante**  
Le informazioni di questo argomento non sono applicabili se la definizione di attività fa riferimento a un'immagine memorizzata in Amazon ECR. Per ulteriori informazioni, consulta [Utilizzo di immagini Amazon ECR con Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html) nella *Guida per l'utente di Amazon Elastic Container Registry*.

Per le attività ospitate su istanze Amazon EC2, questa funzione richiede la versione `1.19.0` o successiva dell'agente del container. Tuttavia, ti consigliamo di utilizzare la versione più recente dell’agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).

Per i processi ospitati su Fargate, questa funzione richiede la versione `1.2.0`o successiva della piattaforma. Per informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).

All'interno della definizione del container, specifica l'oggetto `repositoryCredentials` con i dettagli del segreto che hai creato. Il segreto a cui si fa riferimento può provenire da un account diverso Regione AWS o diverso da quello dell'attività che lo utilizza.

**Nota**  
Quando utilizzi l'API o l' AWS SDK di Amazon ECS, se il segreto esiste nella Regione AWS stessa attività che stai avviando, puoi utilizzare l'ARN completo o il nome del segreto. AWS CLI Se il segreto esiste in un altro account, occorre specificare l'ARN completo del segreto. Quando si utilizza Console di gestione AWS, è necessario specificare sempre l'ARN completo del segreto.

Di seguito viene riportato un frammento di una definizione di attività che mostra i parametri obbligatori:

Sostituire i seguenti parametri:
+ *private-repo*con il nome host del repository privato 
+ *private-image*con il nome dell'immagine
+ *arn:aws:secretsmanager:region:aws\$1account\$1id:secret:secret\$1name*con il nome segreto Amazon Resource Name (ARN)

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

**Nota**  
Un altro metodo per abilitare l'autenticazione di registri privati utilizza le variabili di ambiente dell'agente del container di Amazon ECS per effettuare l'autenticazione a registri privati. Questo metodo è supportato solo per i processi ospitati su istanze Amazon EC2. Per ulteriori informazioni, consulta [Configurare istanze di container Amazon ECS per immagini Docker private](private-auth-container-instances.md).

**Per utilizzare il registro privato**

1. La definizione dell'attività deve avere un ruolo per l'esecuzione dell'attività. In questo modo l'agente container può recuperare l'immagine del container. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).

   L'autenticazione del registro privato consente alle attività di Amazon ECS di estrarre immagini di container da registri privati esterni AWS (come Docker Hub, Quay.io o il tuo registro privato) che richiedono credenziali di autenticazione. Questa funzionalità utilizza Secrets Manager per archiviare in modo sicuro le credenziali del tuo registro, a cui viene poi fatto riferimento nella definizione dell'attività utilizzando il parametro `repositoryCredentials`.

   Per ulteriori informazioni sulla configurazione dell'autenticazione del registro privato, consulta [Utilizzo di immagini non AWS container in Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html).

   Le autorizzazioni seguenti devono essere aggiunte manualmente come policy inline al ruolo per l'esecuzione di attività, per fornire l'accesso ai segreti che contengono credenziali del tuo registro privato. Per ulteriori informazioni, consulta [Aggiunta e rimozione delle policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).
   + `secretsmanager:GetSecretValue`: necessario per recuperare le credenziali del registro privato da Secrets Manager.
   + `kms:Decrypt`: obbligatorio solo se il segreto utilizza una chiave KMS personalizzata e non quella di default. Il nome della risorsa Amazon (ARN) per la chiave personalizzata deve essere aggiunto come risorsa.

   Di seguito viene riportata una policy inline che aggiunge le autorizzazioni.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "kms:Decrypt",
                   "secretsmanager:GetSecretValue"
               ],
               "Resource": [
                   "arn:aws:secretsmanager:us-east-1:111122223333:secret:secret_name",
                   "arn:aws:kms:us-east-1:111122223333:key/key_id"
               ]
           }
       ]
   }
   ```

------

1. Utilizzalo Gestione dei segreti AWS per creare un segreto per le credenziali del tuo registro privato. Per ulteriori informazioni sulla creazione di un segreto, consultare [Create an Gestione dei segreti AWS secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella *Guida per l'utente di Gestione dei segreti AWS *.

   Inserire le credenziali del registro privato utilizzando il formato seguente:

   ```
   {
     "username" : "privateRegistryUsername",
     "password" : "privateRegistryPassword"
   }
   ```

1. Registra una definizione di attività. Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

# Riavviare singoli container nelle attività Amazon ECS con policy di riavvio dei container
<a name="container-restart-policy"></a>

È possibile abilitare una politica di riavvio per ogni container essenziale e non essenziale indicato nella definizione dell'attività per superare più rapidamente i guasti temporanei e mantenere la disponibilità delle attività. Quando si abilita una politica di riavvio per un container, Amazon ECS può riavviare il container se esce, senza dover sostituire l'attività.

Per impostazione predefinita, le policy di riavvio non sono abilitate per i container. Quando abiliti una politica di riavvio per un container, è possibile specificare i codici di uscita in base ai quali il container non verrà riavviato. Questi possono essere codici di uscita che indicano l'esito positivo, come il codice di uscita `0`, che non richiede un riavvio. È inoltre possibile specificare per quanto tempo un container deve funzionare correttamente prima di tentare il riavvio. Per ulteriori informazioni su questi parametri, consultare [Politica di riavvio](task_definition_parameters.md#container_definition_restart_policy). Per un esempio di definizione dell'attività che specifica questi valori, vedere [Specifica di una politica di riavvio dei container in una definizione di attività Amazon ECS](container-restart-policy-example.md).

Puoi utilizzare l'endpoint dei metadati delle attività Amazon ECS o CloudWatch Container Insights per monitorare il numero di riavvii di un container. Per ulteriori informazioni sugli endpoint dei metadati dell'attività, consultare [Versione 4 degli endpoint dei metadati delle attività di Amazon ECS](task-metadata-endpoint-v4.md) e [Endpoint metadati delle attività Amazon ECS versione 4 per le attività su Fargate](task-metadata-endpoint-v4-fargate.md). *Per ulteriori informazioni sui parametri di Container Insights per Amazon ECS, consulta i parametri di [Amazon ECS Container Insights nella](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html) Amazon User Guide. CloudWatch *

Le politiche di riavvio dei container sono supportate da attività ospitate su istanze Fargate, Amazon EC2 e istanze esterne che utilizzano Amazon ECS Anywhere.

## Considerazioni
<a name="container-restart-policy-considerations"></a>

Considera quanto segue prima di abilitare una politica di riavvio per il container:
+ Le politiche di riavvio non sono supportate per i container Windows su Fargate.
+ Per le attività ospitate su istanze Amazon EC2, questa funzione richiede la versione `1.86.0` o successiva dell'agente del container. Tuttavia, ti consigliamo di utilizzare la versione più recente dell’agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).
+ Se utilizzi EC2 con la modalità di `bridge` rete, la variabile di `FLUENT_HOST` ambiente nel contenitore dell'applicazione può diventare imprecisa dopo il riavvio del contenitore del FireLens log router (il contenitore con l'`firelensConfiguration`oggetto nella definizione del contenitore). Questo perché `FLUENT_HOST` è un indirizzo IP dinamico e può cambiare dopo un riavvio. La registrazione diretta dal container dell'applicazione all'indirizzo IP `FLUENT_HOST` può iniziare a fallire dopo la modifica dell'indirizzo. Per ulteriori informazioni su `FLUENT_HOST`, consultare [Configurazione dei log di Amazon ECS per un throughput elevato](firelens-docker-buffer-limit.md).
+ L'agente Amazon ECS gestisce le politiche di riavvio dei container. Se per qualche motivo imprevisto l'agente Amazon ECS viene meno o non è più in esecuzione, il container non verrà riavviato.
+  Il periodo di tentativo di riavvio definito nella politica determina il periodo di tempo (in secondi) per cui il container deve essere eseguito prima che Amazon ECS riavvii un container.

# Specifica di una politica di riavvio dei container in una definizione di attività Amazon ECS
<a name="container-restart-policy-example"></a>

Per specificare una politica di riavvio per un container in una definizione di attività, specificare l'oggetto `restartPolicy` all'interno della definizione del container. Per ulteriori informazioni sull'oggetto `restartPolicy`, consultare [Politica di riavvio](task_definition_parameters.md#container_definition_restart_policy).

Di seguito è riportata una definizione di attività usando i container Linux su Fargate per configurare un server Web. La definizione del container include l'oggetto `restartPolicy`, con `enabled` su true per abilitare una politica di riavvio per il container. Il container deve funzionare per 180 secondi prima di poter essere riavviato e non verrà riavviato se esce con il codice di uscita `0`, che indica l'esito positivo.

```
{
  "containerDefinitions": [
    {
      "command": [
        "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
      ],
      "entryPoint": ["sh", "-c"],
      "essential": true,
      "image": "public.ecr.aws/docker/library/httpd:2.4",
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/fargate-task-definition",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "name": "sample-fargate-app",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp"
        }
      ],
      "restartPolicy": {
        "enabled": true,
        "ignoredExitCodes": [0],
        "restartAttemptPeriod": 180
      }
    }
  ],
  "cpu": "256",
  "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
  "family": "fargate-task-definition",
  "memory": "512",
  "networkMode": "awsvpc",
  "runtimePlatform": {
    "operatingSystemFamily": "LINUX"
  },
  "requiresCompatibilities": ["FARGATE"]
}
```

Dopo aver registrato una definizione dell'attività con l'oggetto `restartPolicy` nella definizione di un container, puoi eseguire un'attività o creare un servizio con tale definizione dell'attività. Per ulteriori informazioni, consultare [Esecuzione di un'applicazione come attività Amazon ECS](standalone-task-create.md) e [Creazione di un'implementazione di aggiornamenti continui di Amazon ECS](create-service-console-v2.md).

# Trasferimento di dati sensibili a un container Amazon ECS
<a name="specifying-sensitive-data"></a>

Puoi inviare in sicurezza dati sensibili, come le credenziali di un database, al tuo container. 

I segreti, come ad esempio chiavi API e credenziali di database, vengono spesso utilizzati dalle applicazioni per accedere ad altri sistemi. In molti casi sono costituiti da un nome utente e una password, un certificato o una chiave API. L'accesso a tali segreti dovrebbe essere limitati a principali IAM specifici che utilizzano IAM e inseriti nei container durante il runtime.

I segreti possono essere inseriti senza problemi nei contenitori da Gestione dei segreti AWS Amazon EC2 Systems Manager Parameter Store. È possibile fare riferimento a questi segreti nell'attività in qualsiasi dei modi seguenti.

1. Come variabili di ambiente che utilizzano il parametro di definizione di container `secrets`.

1. Come `secretOptions` se la piattaforma per la registrazione di log richiede l'autenticazione. Per ulteriori informazioni, consulta le [opzioni di configurazione della registrazione di log](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html#API_LogConfiguration_Contents).

1. Come segreti estratti da immagini che utilizzano il parametro di definizione di container `repositoryCredentials` se il registro da cui viene estratto il container richiede l'autenticazione. Utilizza questo metodo quando estrai immagini da Amazon ECR Public Gallery. Per ulteriori informazioni, consulta [Autenticazione del registro privato per le attività](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html).

Consigliamo di completare la procedura seguente quando configuri la gestione dei segreti.

## Usa il Gestione dei segreti AWS nostro AWS Systems Manager Parameter Store per archiviare materiali segreti
<a name="security-secrets-management-recommendations-storing-secret-materials"></a>

È consigliabile archiviare in modo sicuro le chiavi API, le credenziali di database e altri materiali segreti in Secrets Manager o come parametri crittografati in Systems Manager Parameter Store Questi servizi sono simili perché sono entrambi archivi chiave-valore gestiti che vengono utilizzati AWS KMS per crittografare i dati sensibili. Tuttavia, Secrets Manager offre anche la possibilità di ruotare in automatico i segreti, di generare segreti casuali e di condividere i segreti tra account. Per utilizzare queste funzionalità, usa Secrets Manager. In caso contrario, utilizzare i parametri crittografati in Systems Manager Parameter Store.

**Importante**  
Se il segreto cambia, devi forzare una nuova implementazione o avviare una nuova attività per recuperare l'ultimo valore segreto. Per ulteriori informazioni, consulta i seguenti argomenti:  
Attività: interrompere l'attività, quindi avviarla. Per ulteriori informazioni, consultare [Interruzione di un'attività di Amazon ECS](standalone-task-stop.md) e [Esecuzione di un'applicazione come attività Amazon ECS](standalone-task-create.md).
Servizio: aggiornare il servizio e utilizzare la nuova opzione di implementazione forzata. Per ulteriori informazioni, consultare [Aggiornamento di un servizio Amazon ECS](update-service-console-v2.md).

## Recuperare i dati da un bucket Amazon S3 crittografato
<a name="security-secrets-management-recommendations-encrypted-s3-buckets"></a>

È consigliabile archiviare i segreti in un bucket Amazon S3 crittografato e utilizzare i ruoli di attività per limitare l'accesso a tali segreti. In questo modo si evita che i valori delle variabili di ambiente vengano inavvertitamente pubblicati nei log e rivelati durante l'esecuzione di `docker inspect`. Quando esegui questa operazione, l'applicazione deve essere scritta in modo tale da leggere il segreto dal bucket Amazon S3. Per ricevere istruzioni, consulta [Impostazione del comportamento predefinito della crittografia lato server per i bucket Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html).

## Montaggio del segreto in un volume con un container sidecar
<a name="security-secrets-management-recommendations-mount-secret-volumes"></a>

Poiché esiste un rischio elevato di fuga di dati a causa delle variabili di ambiente, è consigliabile utilizzare un contenitore secondario che legga i segreti e li scriva su un volume condiviso. Gestione dei segreti AWS Questo container può essere eseguito e terminato prima del container dell'applicazione utilizzando l'[ordinamento di container Amazon di ECS](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html). Quando esegui questa operazione, il container dell'applicazione monta successivamente il volume in cui il segreto è stato scritto. Analogamente al metodo bucket Amazon S3, l'applicazione deve essere scritta per leggere il segreto dal volume condiviso. Poiché il suo ambito è limitato all'attività, il volume viene eliminato in automatico dopo l'interruzione dell'attività. Per un esempio, consultare il progetto [task-def.json](https://github.com/aws-samples/aws-secret-sidecar-injector/blob/master/ecs-task-def/task-def.json).

In Amazon EC2, il volume su cui il segreto viene scritto può essere crittografato con una chiave AWS KMS gestita dal cliente. Attivato AWS Fargate, lo storage di volumi viene crittografato automaticamente utilizzando una chiave gestita dal servizio. 

# Passare una singola variabile di ambiente a un container Amazon ECS
<a name="taskdef-envfiles"></a>

**Importante**  
Ti consigliamo di archiviare i dati sensibili nei parametri Gestione dei segreti AWS segreti o in AWS Systems Manager Parameter Store. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).  
Le variabili di ambiente specificate nella definizione di attività sono leggibili da tutti gli utenti IAM e i ruoli per i quali è consentita l'operazione `DescribeTaskDefinition` per la definizione di attività.

Puoi passare le variabili di ambiente ai container nei seguenti modi:
+ Individualmente utilizzando il parametro di definizione del container `environment`. Questo viene mappato all'opzione `--env` su [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).
+ In blocco, utilizzando il parametro di definizione del container `environmentFiles` per elencare uno o più file contenenti le variabili di ambiente. Il file deve essere ospitato in Amazon S3. Questo viene mappato all'opzione `--env-file` su [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).

Di seguito è riportato uno snippet di una definizione di attività che mostra come specificare singole variabili di ambiente.

```
{
    "family": "",
    "containerDefinitions": [
        {
            "name": "",
            "image": "",
            ...
            "environment": [
                {
                    "name": "variable",
                    "value": "value"
                }
            ],
            ...
        }
    ],
    ...
}
```

# Passare le variabili di ambiente a un container Amazon ECS
<a name="use-environment-file"></a>

**Importante**  
Ti consigliamo di archiviare i dati sensibili nei Gestione dei segreti AWS segreti o nei parametri del AWS Systems Manager Parameter Store. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).  
I file variabili di ambiente sono oggetti in Amazon S3 e si applicano tutte le considerazioni sulla sicurezza di Amazon S3.   
Non è possibile utilizzare il parametro `environmentFiles` su container Windows e Windows su Fargate.

È possibile creare un file di variabili di ambiente e archiviarlo in Amazon S3 per passare le variabili di ambiente al proprio container.

Specificando le variabili di ambiente in un file, puoi inserire in blocco le variabili di ambiente. All'interno della definizione del container, specifica l'oggetto `environmentFiles` con un elenco di bucket Amazon S3 contenenti i file delle variabili di ambiente.

Amazon ECS non applica un limite di dimensione alle variabili di ambiente, ma un file di variabili di ambiente di grandi dimensioni potrebbe riempire lo spazio su disco. Ogni processo che utilizza un file di variabili di ambiente fa sì che una copia del file venga scaricata sul disco. Amazon ECS rimuove il file come parte della pulizia del processo.

Per informazioni sulle variabili di ambiente supportate, consulta [Parametri avanzati di definizione del container - Ambiente](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_environment).

Quando si specifica un file di variabili di ambiente in una definizione di container, considera quanto segue.
+ Per le attività Amazon ECS su Amazon EC2, per utilizzare questa funzione le istanze del container richiedono la versione `1.39.0` o successiva dell'agente del container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).
+ Per le attività di Amazon ECS su AWS Fargate, le attività devono utilizzare la `1.4.0` versione della piattaforma o successiva (Linux) per utilizzare questa funzionalità. Per ulteriori informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).

  Verifica che la variabile sia supportata per la piattaforma del sistema operativo. Per ulteriori informazioni, consultare [Definizioni del container](task_definition_parameters.md#container_definitions) e [Altri parametri di definizione di attività](task_definition_parameters.md#other_task_definition_params).
+ Il file deve utilizzare l'estensione del file `.env` e la codifica UTF-8.
+ Per utilizzare questa funzionalità con le autorizzazioni aggiuntive per Amazon S3, è necessario il ruolo di esecuzione dell'attività. Ciò consente all'agente del container di estrarre il file della variabile di ambiente da Amazon S3. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).
+ È previsto un limite di 10 file per definizione di attività.
+ Ogni riga di un file di ambiente deve contenere una variabile di ambiente nel formato `VARIABLE=VALUE`. Spazi o virgolette **sono** inclusi come parte dei valori per i file Amazon ECS. Le righe che iniziano con `#` vengono trattate come commenti e vengono ignorate. Per ulteriori informazioni sulla sintassi del file delle variabili di ambiente, consultare [Set environment variables (-e, --env, --env-file)](https://docs.docker.com/reference/cli/docker/container/run/#env) nella documentazione Docker.

  Di seguito è riportata la sintassi appropriata.

  ```
  #This is a comment and will be ignored
  VARIABLE=VALUE
  ENVIRONMENT=PRODUCTION
  ```
+ Se sono specificate variabili di ambiente utilizzando il parametro `environment` in una definizione di container, queste hanno la precedenza sulle variabili contenute in un file di ambiente.
+ Se vengono specificati più file di ambiente che contengono la stessa variabile, vengono elaborati in ordine di inserimento. Ciò significa che viene utilizzato il primo valore della variabile e i valori successivi delle variabili duplicate vengono ignorati. Consigliamo di utilizzare nomi di variabili univoci.
+ Se un file di ambiente viene specificato come override di container, viene utilizzato. Inoltre, tutti gli altri file di ambiente specificati nella definizione del container vengono ignorati.
+ Le seguenti regole si applicano a Fargate:
  + Il file viene gestito in maniera simile a un file env Docker nativo.
  + Le definizioni dei container che fanno riferimento a variabili di ambiente vuote e archiviate in Amazon S3 non vengono visualizzate nel container.
  + Non è disponibile alcun supporto per la gestione dell'escape della shell (interprete di comandi).
  + Il punto di ingresso del container interpreta i valori `VARIABLE`.

## Esempio
<a name="environment-file-example"></a>

Di seguito è riportato uno snippet di una definizione di attività che mostra come specificare un file di variabile di ambiente.

```
{
    "family": "",
    "containerDefinitions": [
        {
            "name": "",
            "image": "",
            ...
            "environmentFiles": [
                {
                    "value": "arn:aws:s3:::amzn-s3-demo-bucket/envfile_object_name.env",
                    "type": "s3"
                }
            ],
            ...
        }
    ],
    ...
}
```

# Passare i segreti di Secrets Manager in modo programmatico in Amazon ECS
<a name="secrets-app-secrets-manager"></a>

Invece di eseguire la codifica fissa delle informazioni sensibili in testo normale nell'applicazione, è possibile utilizzare Secrets Manager per archiviare i dati sensibili.

Consigliamo questo metodo di recupero dei dati sensibili perché, se il segreto di Gestione dei segreti verrà aggiornato in futuro, l'applicazione recupererà automaticamente l'ultima versione del segreto.

Creazione di un segreto in Secrets Manager. Dopo aver creato un segreto di Gestione dei segreti, aggiorna il codice dell'applicazione per recuperarlo.

Prima di proteggere i dati sensibili in Gestione dei segreti, considera i seguenti aspetti.
+ Sono supportati solo i segreti che memorizzano dati di testo, ovvero segreti creati con il `SecretString` parametro dell'[CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API. I segreti che memorizzano dati binari, ovvero segreti creati con il `SecretBinary` parametro dell'[CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API, non sono supportati.
+ Utilizza gli endpoint VPC dell'interfaccia per migliorare i controlli di sicurezza. È necessario creare gli endpoint VPC di interfaccia per Gestione dei segreti. Per informazioni sull'endpoint VPC, consulta [Creazione di endpoint VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/setup-create-vpc.html) nella *Guida per l'utente di Gestione dei segreti AWS *.
+ Il VPC utilizzato dalla tua attività deve utilizzare la risoluzione DNS.
+ La definizione dell'attività deve utilizzare un ruolo di attività con autorizzazioni aggiuntive per Secrets Manager. Per ulteriori informazioni, consulta [Ruolo IAM dell'attività Amazon ECS](task-iam-roles.md).

## Creazione del segreto di Gestione dei segreti
<a name="secrets-app-secrets-manager-create-secret"></a>

Puoi utilizzare la console Secrets Manager per creare un segreto per i dati sensibili. Per ulteriori informazioni sulla creazione dei segreti, consulta [Creazione di un segreto Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella *Guida per l'utente di Gestione dei segreti AWS *.

## Aggiornamento dell'applicazione per il recupero programmatico dei segreti di Gestione dei segreti
<a name="secrets-app-secrets-manager-update-app"></a>

È possibile recuperare i segreti con una chiamata al Secrets Manager APIs direttamente dall'applicazione. Per informazioni, consultare [Retrieve secrets from Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/retrieving-secrets.html) nella *Guida per l'utente di Gestione dei segreti AWS *.

Per recuperare i dati sensibili memorizzati in Gestione dei segreti AWS, consulta [Esempi di codice da Gestione dei segreti AWS utilizzare AWS SDKs nella libreria di](https://docs.aws.amazon.com/code-library/latest/ug/secrets-manager_code_examples.html) codici *AWS SDK Code Examples*.

# Passare i segreti di Systems Manager Parameter Store in modo programmatico in Amazon ECS
<a name="secrets-app-ssm-paramstore"></a>

Archivio dei parametri Systems Manager fornisce l'archiviazione e la gestione sicure dei segreti. Puoi archiviare dati come password, stringhe di database, istanze EC2 e IDs AMI IDs e codici di licenza come valori dei parametri, invece di codificare queste informazioni nell'applicazione. È possibile memorizzare i valori in testo semplice o crittografati.

Consigliamo questo metodo di recupero dei dati sensibili perché, se il parametro di Systems Manager Parameter Store verrà aggiornato in futuro, l'applicazione recupererà automaticamente l'ultima versione.

Prima di proteggere i dati sensibili in Archivio dei parametri Systems Manager, considera i seguenti aspetti.
+ Sono supportati solo i segreti che archiviano dati di testo. I segreti che memorizzano dati binari non sono supportati.
+ Utilizza gli endpoint VPC dell'interfaccia per migliorare i controlli di sicurezza.
+ Il VPC utilizzato dalla tua attività deve utilizzare la risoluzione DNS.
+ Per i processi che utilizzano EC2, è necessario utilizzare la variabile di configurazione dell'agente Amazon ECS `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true` per utilizzare questa funzionalità. Puoi aggiungerlo al file `/etc/ecs/ecs.config` durante la creazione dell'istanza di container oppure aggiungerlo a un'istanza esistente e quindi riavviare l'agente ECS. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).
+ La definizione dell'attività deve utilizzare un ruolo di attività con autorizzazioni aggiuntive per Systems Manager Parameter Store. Per ulteriori informazioni, consulta [Ruolo IAM dell'attività Amazon ECS](task-iam-roles.md).

## Creazione del parametro di
<a name="secrets-app-ssm-paramstore-create-secret"></a>

Puoi utilizzare la console Systems Manager per creare un parametro di Archivio dei parametri Systems Manager per i dati sensibili. Per ulteriori informazioni, consulta [Creazione di un parametro Systems Manager (console)](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html) o [Creare un parametro Systems Manager (AWS CLI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/param-create-cli.html) nella *Guida per l'utente di AWS Systems Manager *.

## Aggiornamento automatico dell'applicazione per recuperare in modo programmatico i segreti di Archivio dei parametri Systems Manager
<a name="secrets-app-ssm-paramstore-update-app"></a>

Per recuperare i dati sensibili memorizzati nel parametro Systems Manager Parameter Store, consulta [Esempi di codice per l'utilizzo di Systems Manager AWS SDKs](https://docs.aws.amazon.com/code-library/latest/ug/ssm_code_examples.html) nella libreria di codici *AWS SDK Code Examples.*

# Passare i segreti di Secrets Manager tramite le variabili di ambiente Amazon ECS
<a name="secrets-envvar-secrets-manager"></a>

Quando si inserisce un segreto come variabile di ambiente, è possibile specificare il contenuto completo di un segreto, una chiave JSON specifica all'interno di un segreto. Questo processo consente di controllare i dati sensibili esposti al container. Per ulteriori informazioni sul controllo delle versioni segrete, consultare [What's in a Secrets Manager secret?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/whats-in-a-secret.html#term_version) nella *Guida per l'utente di Gestione dei segreti AWS *.

Quando si utilizza una variabile di ambiente per inserire un segreto di Gestione dei segreti in un container, è opportuno considerare quanto segue.
+ I dati sensibili vengono inseriti nel container quando viene inizialmente avviato. Se il segreto o parametro viene in seguito aggiornato o ruotato, il container non riceverà automaticamente il valore aggiornato. È necessario avviare una nuova attività o se l'attività è parte di un servizio, è possibile aggiornare il servizio e utilizzare la nuova opzione **Force new deployment (Forza nuova implementazione)** per forzare il servizio ad avviare una nuova attività.
+ Le applicazioni eseguite sul container, i log del container e gli strumenti di debug hanno accesso alle variabili di ambiente.
+ Per le attività di Amazon ECS su AWS Fargate, considera quanto segue:
  + Per inserire il contenuto completo di un segreto come variabile di ambiente o in una configurazione di log, è necessario utilizzare la versione della piattaforma `1.3.0` o successiva. Per informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).
  + Per inserire una chiave JSON specifica o la versione di un segreto come variabile di ambiente o in una configurazione di log, è necessario utilizzare la versione della piattaforma `1.4.0` o successiva (Linux) o `1.0.0` (Windows). Per informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).
+ Per i processi Amazon ECS su EC2, è necessario considerare quanto segue:
  + Per inserire un segreto utilizzando una chiave JSON specifica o una versione di un segreto, l'istanza del container deve avere la versione `1.37.0` o successiva dell'agente del container. Tuttavia, ti consigliamo di utilizzare la versione più recente dell'agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).

    Per inserire il contenuto completo di un segreto come variabile di ambiente o per inserire un segreto in una configurazione di log, l'istanza del container deve avere la versione `1.22.0` o successiva dell'agente del container.
+ Utilizzare gli endpoint VPC dell'interfaccia per migliorare i controlli di sicurezza e connettersi a Secrets Manager tramite una sottorete privata. È necessario creare gli endpoint VPC di interfaccia per Gestione dei segreti. Per informazioni sull'endpoint VPC, consulta [Creazione di endpoint VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/setup-create-vpc.html) nella *Guida per l'utente di Gestione dei segreti AWS *. Per ulteriori informazioni sull'utilizzo di Secrets Manager e Amazon VPC, consultare [How to connect to Secrets Manager service within a Amazon VPC](https://aws.amazon.com/blogs//security/how-to-connect-to-aws-secrets-manager-service-within-a-virtual-private-cloud/).
+ Per le attività di Windows configurate per utilizzare il driver di registrazione `awslogs`, è necessario impostare anche la variabile di ambiente `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE` nell'istanza di container. Utilizzare la seguente sintassi:

  ```
  <powershell>
  [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
  Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
  </powershell>
  ```
+ La definizione dell'attività deve utilizzare l'esecuzione di un ruolo di attività con autorizzazioni aggiuntive per Secrets Manager. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).

## Crea il segreto Gestione dei segreti AWS
<a name="secrets-envvar-secrets-manager-create-secret"></a>

Puoi utilizzare la console Secrets Manager per creare un segreto per i dati sensibili. Per ulteriori informazioni, consulta [Creare un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella *Guida Gestione dei segreti AWS per l'utente*.

## Aggiunta della variabile di ambiente alla definizione di container
<a name="secrets-envvar-secrets-manager-update-container-definition"></a>

All'interno della definizione del container, è possibile specificare quanto segue:
+ L'oggetto `secrets` contenente il nome della variabile di ambiente da impostare nel container
+ L'Amazon Resource Name (ARN) del segreto di Secrets Manager
+ Parametri aggiuntivi che contengono i dati sensibili da presentare al container

Nell'esempio seguente viene illustrata la sintassi completa che deve essere specificata per il segreto di Secrets Manager.

```
arn:aws:secretsmanager:region:aws_account_id:secret:secret-name:json-key:version-stage:version-id
```

Nella sezione seguente vengono descritti i parametri aggiuntivi. Questi parametri sono facoltativi, ma se non li si utilizza, è necessario includere i due punti `:` per utilizzare i valori predefiniti. Esempi sono forniti di seguito per un maggiore contesto.

`json-key`  
Specificare il nome della chiave in una coppia chiave-valore con il valore che si desidera impostare come valore della variabile di ambiente. Sono supportati solo i valori in formato JSON. Se non si specifica una chiave JSON, viene utilizzato il contenuto completo del segreto.

`version-stage`  
Specificare l'etichetta di gestione temporanea della versione di un segreto che si desidera utilizzare. Se viene specificata un'etichetta di gestione temporanea della versione, non è possibile specificare un ID versione. Se non viene specificata alcuna fase di versione, il comportamento predefinito consiste nel recuperare il segreto con l'etichetta `AWSCURRENT` di gestione temporanea.  
Le etichette di gestione temporanea vengono utilizzate per tenere traccia di diverse versioni di un segreto quando vengono aggiornate o ruotate. Ogni versione di un segreto ha una o più etichette di gestione temporanea e un ID.

`version-id`  
Specifica l'identificatore univoco della versione del segreto che intendi utilizzare. Se viene specificato un ID versione, non è possibile specificare un'etichetta di gestione temporanea della versione. Se non viene specificato alcun ID versione, il comportamento predefinito consiste nel recuperare il segreto con l'etichetta `AWSCURRENT` di gestione temporanea.  
 IDs Le versioni vengono utilizzate per tenere traccia delle diverse versioni di un segreto quando vengono aggiornate o ruotate. Ogni versione di un segreto ha un ID. Per ulteriori informazioni, consulta [Termini e concetti chiave di Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) nella *Guida per l'utente di Gestione dei segreti AWS *.

### Esempio di definizioni del container
<a name="secrets-examples"></a>

Negli esempi seguenti vengono illustrati i modi in cui è possibile fare riferimento ai segreti di Secrets Manager nelle definizioni del container.

**Example riferimento a un segreto completo**  
Di seguito è riportato un frammento di una definizione di processo che mostra il formato quando si fa riferimento a un segreto di Secrets Manager.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
    }]
  }]
}
```
Per accedere al valore di questo segreto dall'interno del container, è necessario effettuare la chiamata a `$environment_variable_name`.

**Example fare riferimento a segreti completi**  
Di seguito è riportato un frammento di una definizione di processo che mostra il formato quando si fa riferimento a più segreti di Secrets Manager.  

```
{
  "containerDefinitions": [{
     "secrets": [
      {
        "name": "environment_variable_name1",
         "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
      },
      {
        "name": "environment_variable_name2",
         "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-abcdef"
      },
      {
        "name": "environment_variable_name3",
        "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-ABCDEF"
      }
    ]
  }]
}
```
Per accedere al valore di questo segreto dall'interno del container, è necessario effettuare la chiamata a `$environment_variable_name1`, `$environment_variable_name2` e `$environment_variable_name3`.

**Example fare riferimento a una chiave specifica all'interno di un segreto**  
Di seguito viene illustrato un esempio di output di un [get-secret-value](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html)comando che visualizza il contenuto di un segreto insieme all'etichetta temporanea della versione e all'ID di versione ad esso associati.  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "VersionId": "871d9eca-18aa-46a9-8785-981ddEXAMPLE",
    "SecretString": "{\"username1\":\"password1\",\"username2\":\"password2\",\"username3\":\"password3\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1581968848.921
}
```
Fare riferimento a una chiave specifica dell'output precedente in una definizione di container specificando il nome della chiave alla fine dell'ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::"
    }]
  }]
}
```

**Example riferimento a una versione segreta specifica**  
Di seguito viene illustrato un output di esempio da un comando [describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) che visualizza il contenuto non crittografato di un segreto insieme ai metadati per tutte le versioni del segreto.  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "Description": "Example of a secret containing application authorization data.",
    "RotationEnabled": false,
    "LastChangedDate": 1581968848.926,
    "LastAccessedDate": 1581897600.0,
    "Tags": [],
    "VersionIdsToStages": {
        "871d9eca-18aa-46a9-8785-981ddEXAMPLE": [
            "AWSCURRENT"
        ],
        "9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE": [
            "AWSPREVIOUS"
        ]
    }
}
```
Fare riferimento a un'etichetta di gestione temporanea della versione specifica dall'output precedente in una definizione di container specificando il nome della chiave alla fine dell'ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:"
    }]
  }]
}
```
Fare riferimento a un ID di versione specifico dall'output precedente in una definizione di container specificando il nome della chiave alla fine dell'ARN.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:::9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE"
    }]
  }]
}
```

**Example riferimento a una chiave specifica e un'etichetta di gestione temporanea della versione di un segreto**  
Di seguito viene illustrato come fare riferimento sia a una chiave specifica all'interno di un segreto che a una specifica etichetta di gestione temporanea della versione.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:"
    }]
  }]
}
```
Per specificare una chiave e un ID di versione specifici, utilizzare la seguente sintassi.  

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead3EXAMPLE"
    }]
  }]
}
```

Per informazioni sulla creazione di una definizione di attività con il segreto specificato in una variabile di ambiente, consultare [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md). 

# Passare i parametri di Systems Manager tramite le variabili di ambiente Amazon ECS
<a name="secrets-envvar-ssm-paramstore"></a>

Amazon ECS ti consente di iniettare dati sensibili nei tuoi contenitori memorizzando i dati sensibili nei AWS Systems Manager parametri di Parameter Store e quindi facendo riferimento ad essi nella definizione del contenitore.

Tenere in considerazione ciò che segue durante l'utilizzo di una variabile di ambiente per inserire un segreto di Systems Manager in un container.
+ I dati sensibili vengono inseriti nel container quando viene inizialmente avviato. Se il segreto o parametro viene in seguito aggiornato o ruotato, il container non riceverà automaticamente il valore aggiornato. È necessario avviare una nuova attività o se l'attività è parte di un servizio, è possibile aggiornare il servizio e utilizzare la nuova opzione **Force new deployment (Forza nuova implementazione)** per forzare il servizio ad avviare una nuova attività.
+ Per le attività di Amazon ECS su AWS Fargate, è necessario considerare quanto segue:
  + Per inserire il contenuto completo di un segreto come variabile di ambiente o in una configurazione di log, è necessario utilizzare la versione della piattaforma `1.3.0` o successiva. Per informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).
  + Per inserire una chiave JSON specifica o la versione di un segreto come variabile di ambiente o in una configurazione di log, è necessario utilizzare la versione della piattaforma `1.4.0` o successiva (Linux) o `1.0.0` (Windows). Per informazioni, consulta [Versioni della piattaforma Fargate per Amazon ECS](platform-fargate.md).
+ Per i processi Amazon ECS su EC2, è necessario considerare quanto segue:
  + Per inserire un segreto utilizzando una chiave JSON specifica o una versione di un segreto, l'istanza del container deve avere la versione `1.37.0` o successiva dell'agente del container. Tuttavia, ti consigliamo di utilizzare la versione più recente dell'agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).

    Per inserire il contenuto completo di un segreto come variabile di ambiente o per inserire un segreto in una configurazione di log, l'istanza del container deve avere la versione `1.22.0` o successiva dell'agente del container.
+ Utilizza gli endpoint VPC dell'interfaccia per migliorare i controlli di sicurezza. È necessario creare gli endpoint VPC di interfaccia per Systems Manager. Per informazioni sull'endpoint VPC, consultare [Improve the security of EC2 instances by using VPC endpoints for Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/setup-create-vpc.html) nella *Guida per l'utente di AWS Systems Manager *.
+ La definizione dell'attività deve utilizzare l'esecuzione di un ruolo di attività con autorizzazioni aggiuntive per Systems Manager Parameter Store. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).
+ Per le attività di Windows configurate per utilizzare il driver di registrazione `awslogs`, è necessario impostare anche la variabile di ambiente `ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE` nell'istanza di container. Utilizzare la seguente sintassi:

  ```
  <powershell>
  [Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", $TRUE, "Machine")
  Initialize-ECSAgent -Cluster <cluster name> -EnableTaskIAMRole -LoggingDrivers '["json-file","awslogs"]'
  </powershell>
  ```

## Creare il parametro Systems Manager
<a name="secrets-envvar-ssm-paramstore-create-parameter"></a>

Puoi utilizzare la console Systems Manager per creare un parametro di Archivio dei parametri Systems Manager per i dati sensibili. Per ulteriori informazioni, consulta [Creazione di un parametro Systems Manager (console)](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html) o [Creare un parametro Systems Manager (AWS CLI)](https://docs.aws.amazon.com/systems-manager/latest/userguide/param-create-cli.html) nella *Guida per l'utente di AWS Systems Manager *.

## Aggiunta della variabile di ambiente alla definizione di container
<a name="secrets-ssm-paramstore-update-container-definition"></a>

Nella definizione del container all'interno della definizione dell'attività, specifica `secrets` con il nome della variabile di ambiente per impostare il container e l'ARN del parametro dell'archivio parametri di Systems Manager contenente i dati sensibili da presentare al container. Per ulteriori informazioni, consulta [secrets](task_definition_parameters.md#ContainerDefinition-secrets).

Di seguito è riportato un frammento di una definizione di processo che mostra il formato quando si fa riferimento a un parametro dell'archivio parametri di Systems Manager. Se il parametro dell'archivio parametri di Systems Manager esiste nella stessa regione del processo in fase di avvio, è possibile utilizzare l'ARN completo o il nome del parametro. Se il parametro si trova in una regione diversa, specifica l'ARN completo.

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }]
  }]
}
```

Per informazioni sulla creazione di una definizione di attività con il segreto specificato in una variabile di ambiente, consultare [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

## Aggiornamento automatico dell'applicazione per recuperare in modo programmatico i segreti di Archivio dei parametri Systems Manager
<a name="secrets-ssm-paramstore-update-app"></a>

Per recuperare i dati sensibili memorizzati nel parametro Systems Manager Parameter Store, consulta [Esempi di codice per l'utilizzo di Systems Manager AWS SDKs](https://docs.aws.amazon.com/code-library/latest/ug/ssm_code_examples.html) nella libreria di codici *AWS SDK Code Examples.*

# Passare i segreti per la configurazione di registrazione di Amazon ECS
<a name="secrets-logconfig"></a>

È possibile utilizzare il parametro `secretOptions` in `logConfiguration` per passare dati sensibili utilizzati per la registrazione.

È possibile archiviare il messaggio in Secrets Manager o Systems Manager.

## Utilizzare Secrets Manager
<a name="secrets-logconfig-secrets-manager"></a>

Nella definizione del container, quando specifichi `logConfiguration` è possibile specificare `secretOptions` con il nome dell'opzione del driver di log per impostare il container e l'ARN completo del segreto di Secrets Manager contenente i dati riservati da presentare al container. Per ulteriori informazioni sulla creazione dei segreti, consultare [Create an Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html).

Di seguito è riportato un frammento di una definizione di processo che mostra il formato quando si fa riferimento a un segreto Secrets Manager.

```
{
  "containerDefinitions": [{
    "logConfiguration": [{
      "logDriver": "splunk",
      "options": {
        "splunk-url": "https://your_splunk_instance:8088"
      },
      "secretOptions": [{
        "name": "splunk-token",
        "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
      }]
    }]
  }]
}
```

## Aggiunta della variabile di ambiente alla definizione di container
<a name="secrets-envvar-ssm-paramstore-update-container-definition"></a>

Nella definizione del container specifica `secrets` con il nome della variabile di ambiente per impostare il container e l'ARN del parametro dell'archivio parametri di Systems Manager contenente i dati sensibili da presentare al container. Per ulteriori informazioni, consulta [secrets](task_definition_parameters.md#ContainerDefinition-secrets).

Di seguito è riportato un frammento di una definizione di processo che mostra il formato quando si fa riferimento a un parametro dell'archivio parametri di Systems Manager. Se il parametro dell'archivio parametri di Systems Manager esiste nella stessa regione del processo in fase di avvio, è possibile utilizzare l'ARN completo o il nome del parametro. Se il parametro si trova in una regione diversa, specifica l'ARN completo.

```
{
  "containerDefinitions": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }]
  }]
}
```

Per informazioni sulla creazione di una definizione di attività con il segreto specificato in una variabile di ambiente, consultare [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

## Utilizzo di Systems Manager
<a name="secrets-logconfig-ssm-paramstore"></a>

Puoi inserire dati sensibili in una configurazione di log. Nella definizione del container, quando specifichi un `logConfiguration` è possibile specificare `secretOptions` con il nome dell'opzione del driver di log per impostare il container e l'ARN completo del parametro dell'archivio parametri di Systems Manager contenente i dati sensibili da presentare al container.

**Importante**  
Se il parametro dell'archivio parametri di Systems Manager esiste nella stessa regione del processo in fase di avvio, è possibile utilizzare l'ARN completo o il nome del parametro. Se il parametro si trova in una regione diversa, specifica l'ARN completo.

Di seguito è riportato un frammento di una definizione di attività che mostra il formato quando si fa riferimento a un parametro dell'archivio parametri di Systems Manager.

```
{
  "containerDefinitions": [{
    "logConfiguration": [{
      "logDriver": "fluentd",
      "options": {
        "tag": "fluentd demo"
      },
      "secretOptions": [{
        "name": "fluentd-address",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter:/parameter_name"
      }]
    }]
  }]
}
```

# Specifica di dati sensibili utilizzando segreti di Secrets Manager in Amazon ECS
<a name="specifying-sensitive-data-tutorial"></a>

Amazon ECS ti consente di iniettare dati sensibili nei tuoi contenitori archiviando i dati sensibili in modo Gestione dei segreti AWS segreto e quindi facendone riferimento nella definizione del contenitore. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).

Per scoprire come creare un segreto di Secrets Manager, fare riferimento al segreto in una definizione di attività di Amazon ECS e quindi verificarne il funzionamento eseguendo una query sulla variabile di ambiente all'interno di un container che mostra i contenuti del segreto.

## Prerequisiti
<a name="specifying-sensitive-data-tutorial-prereqs"></a>

Questo tutorial presuppone che siano stati soddisfatti i prerequisiti seguenti:
+ Hai completato le fasi descritte in [Configurazione per l'uso di Amazon ECS](get-set-up-for-amazon-ecs.md).
+ L'utente dispone delle autorizzazioni IAM necessarie per creare le risorse di Secrets Manager e Amazon ECS.

## Fase 1: Creazione di un segreto di Secrets Manager
<a name="specifying-sensitive-data-tutorial-create-secret"></a>

Puoi utilizzare la console Secrets Manager per creare un segreto per i dati sensibili. In questo tutorial creeremmo un segreto di base per l'archiviazione di un nome utente e una password cui fare riferimento in seguito in un container. *Per ulteriori informazioni, consulta [Creare un Gestione dei segreti AWS segreto](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) nella Guida per l'Gestione dei segreti AWS utente.*

Le ** key/value coppie da memorizzare in questo segreto** sono il valore della variabile di ambiente nel contenitore alla fine del tutorial.

Salva l'**ARN del segreto** a cui fare riferimento nella policy IAM di esecuzione dell'attività e nella definizione dell'attività nelle fasi successive.

## Fase 2: aggiungere le autorizzazioni segrete al ruolo di esecuzione di attività
<a name="specifying-sensitive-data-tutorial-update-iam"></a>

Per consentire ad Amazon ECS di recuperare i dati sensibili dal segreto di Secrets Manager, è necessario disporre delle autorizzazioni dei segreti per il ruolo di esecuzione dell'attività. Per ulteriori informazioni, consulta [Autorizzazioni per Secrets Manager o Systems Manager](task_execution_IAM_role.md#task-execution-secrets).

## Fase 3: creazione di una definizione di attività
<a name="specifying-sensitive-data-tutorial-create-taskdef"></a>

Puoi utilizzare la console Amazon ECS per creare una definizione di attività che fa riferimento a un segreto di Secrets Manager.

**Per creare una definizione di attività che specifichi un segreto**

Utilizza la console IAM per aggiornare il ruolo di esecuzione del processo con le autorizzazioni richieste.

1. Apri la console alla [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Nel pannello di navigazione, scegli **Task Definitions** (Definizioni di processo).

1. Scegli **Create new task definition** (Crea nuova definizione di attività), **Create new task definition with JSON** (Crea nuova definizione di attività con JSON).

1. Nella casella dell'editor JSON, inserire il seguente testo JSON della definizione di attività, assicurandosi di specificare l'ARN completo del segreto di Secrets Manager creato nella fase 1 e il ruolo dell'esecuzione del processo aggiornato nella fase 2. Scegli **Salva**.

1. 

   ```
   {
       "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole",
       "containerDefinitions": [
           {
               "entryPoint": [
                   "sh",
                   "-c"
               ],
               "portMappings": [
                   {
                       "hostPort": 80,
                       "protocol": "tcp",
                       "containerPort": 80
                   }
               ],
               "command": [
                   "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
               ],
               "cpu": 10,
               "secrets": [
                   {
                       "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:username_value",
                       "name": "username_value"
                   }
               ],
               "memory": 300,
               "image": "public.ecr.aws/docker/library/httpd:2.4",
               "essential": true,
               "name": "ecs-secrets-container"
           }
       ],
       "family": "ecs-secrets-tutorial"
   }
   ```

1. Scegli **Crea**.

## Fase 4: Creare un cluster
<a name="specifying-sensitive-data-tutorial-create-cluster"></a>

Puoi utilizzare la console Amazon ECS per creare un cluster che contiene un'istanza di container su cui eseguire il processo. Se disponi di un cluster esistente con almeno un'istanza di container registrata nello stesso con le risorse disponibili per eseguire un'istanza della definizione di attività creata per questo tutorial, puoi passare alla fase successiva.

Per questo tutorial creeremo un cluster con una istanza di container `t2.micro` utilizzando l'AMI Amazon Linux 2 ottimizzata per Amazon ECS.

Per informazioni sulla creazione di un cluster per EC2, consultare [Creazione di un cluster Amazon ECS per i carichi di lavoro di Amazon EC2](create-ec2-cluster-console-v2.md).

## Fase 5: Eseguire un'attività
<a name="specifying-sensitive-data-tutorial-run-task"></a>

Puoi utilizzare la console Amazon ECS per eseguire un processo utilizzando la definizione di attività creata. Per questo tutorial verrà eseguito un processo utilizzando EC2, mediante il cluster creato nella fase precedente. 

Per informazioni sulla modalità di esecuzione del comando, consulta [Esecuzione di un'applicazione come attività Amazon ECS](standalone-task-create.md).

## Fase 6: verifica
<a name="specifying-sensitive-data-tutorial-verify"></a>

Puoi verificare che tutte le fasi sono state completate correttamente e che la variabile di ambiente è stata creata nel container utilizzando le fasi seguenti.

**Per verificare che la variabile di ambiente è stata creata**

1. Trova l'indirizzo DNS o IP pubblico per l'istanza di container.

   1. Apri la console nella [https://console.aws.amazon.com/ecs/versione 2](https://console.aws.amazon.com/ecs/v2).

   1. Nel riquadro di navigazione, selezionare **Cluster** e quindi il cluster che è stato creato.

   1. Seleziona **Infrastruttura** e quindi l'istanza di container.

   1. Registra l'**IP pubblico** o il **DNS pubblico** per l'istanza.

1. Se utilizzi un computer macOS o Linux, connettiti all'istanza con il comando seguente, sostituisci il percorso con la chiave privata e l'indirizzo pubblico dell'istanza:

   ```
   $ ssh -i /path/to/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com
   ```

   Per ulteriori informazioni sull'uso di un computer Windows, consultare [Connect to your Linux instance using PuTTY](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-linux-inst-from-windows.html) nella *Guida per l'utente di Amazon EC2*.
**Importante**  
Per ulteriori informazioni sui problemi di connessione all'istanza, consultare [Troubleshooting Connecting to Your Instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html) nella *Guida per l'utente di Amazon EC2*.

1. Elencare i contenitori in esecuzione sull'istanza. Prendere nota dell'ID container per il container `ecs-secrets-tutorial`.

   ```
   docker ps
   ```

1. Eseguire il collegamento al container `ecs-secrets-tutorial` utilizzando l'ID container dell'output della fase precedente.

   ```
   docker exec -it container_ID /bin/bash
   ```

1. Utilizzare il comando `echo` per stampare il valore della variabile di ambiente.

   ```
   echo $username_value
   ```

   Se il tutorial è stato completato, viene visualizzato l'output seguente:

   ```
   password_value
   ```
**Nota**  
In alternativa, è possibile elencare tutte le variabili di ambiente nel container utilizzando il comando `env` (o `printenv`).

## Fase 7: pulire
<a name="specifying-sensitive-data-tutorial-cleanup"></a>

Una volta terminato questo tutorial, è necessario eliminare le risorse associate per evitare costi aggiuntivi per le risorse non utilizzate.

**Come ripulire le risorse**

1. Apri la console nella [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Nel pannello di navigazione scegliere **Cluster**.

1. Nella pagina **Cluster**, scegliere il cluster.

1. Scegli **Elimina Cluster**. 

1. Nella casella di conferma, inserisci **delete *cluster name***, quindi scegli **Elimina**.

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione, seleziona **Ruoli**. 

1. Cercare l'elenco di ruoli per `ecsTaskExecutionRole` e selezionarlo.

1. Scegli **Autorizzazioni**, quindi scegli la **X** accanto a **ECSSecretsTutorial**. Scegli **Rimuovi**.

1. Apri la console Secrets Manager all'indirizzo [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Selezionare il segreto **username\$1value** creato e scegliere **Actions (Operazioni)**, **Delete secret (Elimina segreto)**.

# Parametri di definizione dell'attività di Amazon ECS per istanze gestite da Amazon ECS
<a name="task_definition_parameters-managed-instances"></a>

Le definizioni delle attività sono suddivise in parti separate: la famiglia di attività, il ruolo dell'attività AWS Identity and Access Management (IAM), la modalità di rete, le definizioni dei contenitori, i volumi e la capacità. Le definizioni della famiglia e del container sono richieste in una definizione di attività. Al contrario, il ruolo dell'attività, la modalità di rete, i volumi e la capacità sono facoltativi.

Puoi utilizzare questi parametri in un file JSON per configurare la definizione del processo.

Di seguito sono riportate descrizioni più dettagliate per ogni parametro di definizione di attività per Istanze gestite da Amazon ECS.

## Family
<a name="family-managed-instances"></a>

`family`  
Tipo: stringa  
Obbligatorio: sì  
Quando registri una definizione di attività, le assegni una famiglia, ovvero una sorta di nome per più versioni della definizione di attività, specificando un numero di revisione. Alla prima definizione di attività registrata in una determinata famiglia viene assegnato il numero di revisione 1 e a qualsiasi definizione di attività registrata successivamente viene assegnato un numero di revisione sequenziale.

## Capacity
<a name="requires_compatibilities-managed-instances"></a>

Quando si registra una definizione di attività, è possibile specificare la capacità che Amazon ECS deve convalidare per tale definizione. Se la definizione di attività non viene convalidata in base alle compatibilità specificate, viene restituita un'eccezione client. Per ulteriori informazioni, consultare [Amazon ECS launch types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html).

Il parametro seguente è permesso in una definizione di attività.

`requiresCompatibilities`  
Tipo: array di stringhe  
Obbligatorio: no  
Valori validi: `MANAGED_INSTANCES`  
La capacità per la quale è stata convalidata la definizione di attività. In questo modo viene avviato un controllo per garantire che tutti i parametri utilizzati nella definizione di attività soddisfino i requisiti per Istanze gestite da Amazon ECS.

## Ruolo del processo
<a name="task_role_arn-managed-instances"></a>

`taskRoleArn`  
▬Tipo: stringa  
Obbligatorio: no  
Quando registri una definizione di attività, puoi fornire un ruolo di attività per un ruolo IAM che consenta ai contenitori inclusi nell'attività di chiamare per tuo conto i dati specificati nelle politiche associate. AWS APIs Per ulteriori informazioni, consulta [Ruolo IAM dell'attività Amazon ECS](task-iam-roles.md).

## Ruolo per l'esecuzione del processo
<a name="execution_role_arn-managed-instances"></a>

`executionRoleArn`  
Tipo: String  
Obbligatorio: condizionale  
L'Amazon Resource Name (ARN) del ruolo di esecuzione dell'attività che concede all'agente container Amazon ECS l'autorizzazione a effettuare chiamate AWS API per tuo conto. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).  
Il ruolo IAM di esecuzione di attività è necessario a seconda dei requisiti dell'attività. Il ruolo è necessario per l'estrazione di immagini ECR private e l'utilizzo del driver di registro. `awslogs`

## Modalità di rete
<a name="network_mode-managed-instances"></a>

`networkMode`  
▬Tipo: stringa  
Obbligatorio: no  
Impostazione predefinita: `awsvpc`  
La modalità di rete da utilizzare per i contenitori inclusi nell'operazione. Per le attività Amazon ECS ospitate su Istanze gestite Amazon ECS, i valori validi sono `awsvpc` e `host`. Se non viene specificata alcuna modalità di rete, la modalità di rete predefinita è`awsvpc`.  
Se la modalità di rete è attiva`host`, l'operazione ignora l'isolamento della rete e i container utilizzano direttamente lo stack di rete dell'host.  
Quando si eseguono attività che utilizzano la modalità di rete `host`, per una maggiore sicurezza, non eseguire container utilizzando l'utente root (UID 0). Come best practice per la sicurezza, utilizza sempre un utente non root.
Se la modalità di rete è `awsvpc`, al processo viene assegnata un'interfaccia di rete elastica e, quando crei un servizio o esegui un processo con la definizione di attività, devi specificare `NetworkConfiguration`. Per ulteriori informazioni, consulta [Rete di attività di Amazon ECS per istanze gestite Amazon ECS](managed-instance-networking.md).  
Le modalità di rete `host` e `awsvpc` offrono le massime prestazioni di rete per i container perché utilizzano lo stack di rete di Amazon EC2. Con le modalità di rete `host` e `awsvpc`, le porte dei container esposte sono mappate direttamente alla porta host corrispondente (per la modalità di rete `host`) o alla porta dell'interfaccia di rete elastica collegata (per la modalità di rete `awsvpc`). Pertanto, non puoi utilizzare le mappature delle porte host dinamiche.

## Piattaforma di runtime
<a name="runtime-platform-managed-instances"></a>

`operatingSystemFamily`  
▬Tipo: stringa  
Obbligatorio: no  
Di default: LINUX  
Quando registri una definizione di attività, devi specificare la famiglia del sistema operativo.   
Il valore valido per questo campo è `LINUX`.  
Tutte le definizioni di attività utilizzate in un servizio devono avere lo stesso valore per questo parametro.  
Quando una definizione di attività fa parte di un servizio, questo valore deve corrispondere al valore `platformFamily` del servizio.

`cpuArchitecture`  
Tipo: String  
Obbligatorio: condizionale  
Quando registri una definizione di attività, devi specificare l'architettura della CPU. I valori validi sono `X86_64` e `ARM64`.  
Se non specifichi un valore, Amazon ECS tenta di inserire attività sull'architettura CPU disponibile in base alla configurazione del provider di capacità. Per garantire che le attività vengano posizionate su un'architettura CPU specifica, specifica un valore per `cpuArchitecture` nella definizione dell'attività.  
Tutte le definizioni di attività utilizzate in un servizio devono avere lo stesso valore per questo parametro.  
Per ulteriori informazioni su `ARM64`, consultare [Definizioni di attività Amazon ECS per carichi di lavoro ARM a 64 bit](ecs-arm64.md).

## Dimensioni processo
<a name="task_size-managed-instances"></a>

Quando registri una definizione di attività, puoi specificare la quantità totale di CPU e memoria utilizzata per l'attività. Questo valore è separato dai valori `cpu` e `memory` a livello di definizione del container. Per le attività ospitate su istanze Amazon EC2, questi campi sono facoltativi.

**Nota**  
I parametri della CPU e della memoria a livello di processo vengono ignorati per i container Windows. Ti consigliamo di specificare risorse a livello di container per i container Windows.

`cpu`  
Tipo: String  
Obbligatorio: condizionale  
Il limite rigido di unità CPU da presentare per il processo. È possibile specificare i valori della CPU nel file JSON come stringa in unità CPU o in modalità virtuale CPUs (vCPUs). Ad esempio, è possibile specificare un valore di CPU come `1024` in unità CPU o `1 vCPU` in vCPUs. Quando la definizione dell'attività viene registrata, un valore vCPU viene convertito in un numero intero che indica le unità CPU.  
Questo campo è facoltativo. Se il cluster non dispone di istanze di container registrate con le unità CPU richieste disponibili, l’attività non va a buon fine. I valori supportati sono compresi tra `0.125` v CPUs e `10` v. CPUs

`memory`  
Tipo: String  
Obbligatorio: condizionale  
Il limite rigido di memoria da presentare al processo. È possibile specificare i valori di memoria nella definizione dell'attività come stringa in mebibytes (MiB) o gigabytes (GB). Ad esempio, è possibile specificare un valore di memoria `3072` in MiB o `3 GB` in GB. Quando la definizione di attività è registrata, un valore GB viene convertito in un numero intero che indica il MiB.  
Questo campo è facoltativo e può essere utilizzato qualsiasi valore. Se viene specificato un valore di memoria a livello di attività, il valore di memoria a livello di container è facoltativo. Se il cluster non dispone di istanze di container registrate con la memoria richiesta disponibile, l'attività non va a buon fine. Puoi ottimizzare l'utilizzo delle risorse assegnando alle attività quanta più memoria possibile per un determinato tipo di istanza. Per ulteriori informazioni, consulta [Allocazione della memoria di un'istanza di container Amazon ECS Linux](memory-management.md).

## Altri parametri di definizione di attività
<a name="other_task_definition_params-managed-instances"></a>

I seguenti parametri di definizione di attività possono essere utilizzati quando si registrano le definizioni di attività nella console Amazon ECS con l'opzione **Configure via JSON** (Configura tramite JSON). Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

**Topics**
+ [

### Archiviazione temporanea
](#task_definition_ephemeralStorage-managed-instances)
+ [

### Modalità IPC
](#task_definition_ipcmode-managed-instances)
+ [

### Modalità PID
](#task_definition_pidmode-managed-instances)
+ [

### Configurazione del proxy
](#proxyConfiguration-managed-instances)
+ [

### Tag
](#tags-managed-instances)
+ [

### Acceleratore Elastic Inference (obsoleto)
](#elastic-Inference-accelerator-managed-instances)
+ [

### Vincoli di posizionamento
](#constraints-managed-instances)
+ [

### Volumi
](#volumes-managed-instances)

### Archiviazione temporanea
<a name="task_definition_ephemeralStorage-managed-instances"></a>

`ephemeralStorage`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: oggetto [EphemeralStorage](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EphemeralStorage.html)  
Obbligatorio: no  
La quantità di archiviazione temporanea in GB da allocare per l'attività. Questo parametro viene utilizzato per espandere la quantità totale di archiviazione temporanea disponibile, oltre l'importo predefinito, per le attività ospitate su AWS Fargate. Per ulteriori informazioni, consulta [Utilizzo di montaggio vincolato con Amazon ECS](bind-mounts.md).

### Modalità IPC
<a name="task_definition_ipcmode-managed-instances"></a>

`ipcMode`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
▬Tipo: stringa  
Obbligatorio: no  
Il namespace della risorsa IPC da utilizzare per i container nell'attività. I valori validi sono `host`, `task` o `none`. Se è specificato `host`, tutti i container all'interno delle attività che hanno specificato la modalità `host` IPC sulla stessa istanza di container condividono le stesse risorse IPC con l'istanza host Amazon EC2. Se è stato specificato `task`, tutti i container all'interno dell'attività specificata condividono le stesse risorse IPC. Se è stato specificato `none`, le risorse IPC all'interno dei container di un'attività sono private e non condivise con altri container in un'attività o sull'istanza di container. Se non viene specificato alcun valore, la condivisione dello spazio dei nomi delle risorse IPC dipende dalla configurazione di runtime del contenitore.

### Modalità PID
<a name="task_definition_pidmode-managed-instances"></a>

`pidMode`  
▬Tipo: stringa  
Obbligatorio: no  
Il namespace del processo da utilizzare per i container nell'attività. I valori validi sono `host` o `task`. Se è stato specificato l'`host`, tutti i container all'interno delle attività che hanno specificato la modalità `host` PID sulla stessa istanza di container condividono lo stesso namespace del processo con l'istanza host Amazon EC2. Se è stata specificata l'`task`, tutti i container all'interno dell'attività specificata condividono lo stesso namespace del processo. Se non è stato specificato alcun valore, l'impostazione di default è un namespace privato.  
Se viene utilizzata la modalità `host` PID, esiste un maggiore rischio di esposizione a spazi dei nomi di attività indesiderati.

### Configurazione del proxy
<a name="proxyConfiguration-managed-instances"></a>

`proxyConfiguration`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: oggetto [ProxyConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ProxyConfiguration.html)  
Obbligatorio: no  
I dettagli di configurazione del proxy App Mesh.

### Tag
<a name="tags-managed-instances"></a>

I metadati applicati alla definizione di un'attività per aiutare a categorizzarli e organizzarli. Ciascun tag è formato da una chiave e da un valore facoltativo. Li definisci entrambi.

Ai tag si applicano le seguenti limitazioni di base:
+ Numero massimo di tag per risorsa: 50
+ Per ogni risorsa, ogni chiave di tag deve essere unica e ogni chiave di tag può avere un solo valore.
+ Lunghezza massima della chiave: 128 caratteri Unicode in formato UTF-8
+ Lunghezza massima del valore: 256 caratteri Unicode in formato UTF-8
+ Se lo schema di assegnazione dei tag viene utilizzato in più servizi e risorse , tieni presente che altri servizi potrebbero prevedere limitazioni sui caratteri consentiti. I caratteri generalmente consentiti sono: lettere, numeri e spazi rappresentabili in UTF-8 e i seguenti caratteri: \$1 - =. \$1:/@.
+ Per le chiavi e i valori dei tag viene fatta la distinzione tra maiuscole e minuscole.
+ Non utilizzare né alcuna combinazione maiuscola o minuscola `aws:``AWS:`, ad esempio un prefisso per chiavi o valori, poiché è riservata all'uso. AWS Non è possibile modificare né eliminare le chiavi o i valori di tag con tale prefisso. I tag con questo prefisso non vengono conteggiati per il limite del numero di tag per risorsa.

`key`  
▬Tipo: stringa  
Obbligatorio: no  
Una parte di una coppia chiave-valore che costituisce un tag. Una chiave è un'etichetta generale che funge da categoria per più valori di tag specifici.

`value`  
▬Tipo: stringa  
Obbligatorio: no  
La parte facoltativa di una coppia chiave-valore che costituisce un tag. Un valore agisce come descrittore all'interno di una categoria di tag (chiave).

### Acceleratore Elastic Inference (obsoleto)
<a name="elastic-Inference-accelerator-managed-instances"></a>

**Nota**  
Amazon Elastic Inference (EI) non è più disponibile per i clienti.

`inferenceAccelerator`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: oggetto [InferenceAccelerator](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_InferenceAccelerator.html)  
Obbligatorio: no  
Gli accelerator di inferenza elastica da utilizzare per i container nell'attività.

### Vincoli di posizionamento
<a name="constraints-managed-instances"></a>

`placementConstraints`  
Tipo: matrice di oggetti [TaskDefinitionPlacementConstraint](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskDefinitionPlacementConstraint.html)  
Obbligatorio: no  
Una matrice di oggetti vincolo di posizionamento da utilizzare per l'attività. Puoi specificare un massimo di 10 vincoli per attività (questo limite include i vincoli nella definizione di attività e quelli specificati in fase di runtime).  
Amazon ECS supporta i vincoli di posizionamento `distinctInstace` e `memberOf` per le attività in esecuzione sulle Istanze gestite da Amazon ECS. I seguenti attributi sono supportati per le attività che utilizzano il vincolo di posizionamento `memberOf`:  
+ `ecs.subnet-id`
+ `ecs.availability-zone`
+ `ecs.cpu-architecture`
+ `ecs.instance-type`
Per ulteriori informazioni sul posizionamento dei vincoli, consultare [Definisci quali istanze di container utilizza Amazon ECS per le attività](task-placement-constraints.md).

### Volumi
<a name="volumes-managed-instances"></a>

Quando registri una definizione di attività, puoi facoltativamente specificare un elenco di volumi per le tue attività. Ciò consente di utilizzare i volumi di dati nelle attività.

Per ulteriori informazioni sui tipi di volume e altri parametri, consultare [Opzioni di archiviazione per le attività di Amazon ECS](using_data_volumes.md).

`name`  
Tipo: stringa  
Obbligatorio: sì  
Nome del volume. Può essere costituito da un massimo di 255 lettere (maiuscole e minuscole), numeri e trattini. Nel parametro `sourceVolume` della definizione del container `mountPoints` viene fatto riferimento a questo nome.

`host`  
Tipo: oggetto [HostVolumeProperties](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_HostVolumeProperties.html)  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizzano volumi host di montaggi vincolati. Il contenuto del parametro `host` determina se il volume host di montaggio vincolato viene mantenuto nell'istanza di container host e il punto in cui viene archiviato. Se il `host` parametro è vuoto, il sistema assegna un percorso host per il volume di dati. Tuttavia, non è garantito che i dati siano mantenuti dopo l'interruzione del funzionamento dei container associati.    
`sourcePath`  
▬Tipo: stringa  
Obbligatorio: no  
Quando il `host` parametro viene utilizzato, specificate `sourcePath` a per dichiarare il percorso sull'istanza host che viene presentata al contenitore. Se questo parametro è vuoto, il sistema ti assegna un percorso host. Se il `host` parametro contiene una posizione di `sourcePath` file, il volume di dati persiste nella posizione specificata sull'istanza host finché non viene eliminato manualmente. Se il `sourcePath` valore non esiste sull'istanza host, il sistema lo crea. Se la posizione è presente, i contenuti della cartella del percorso di origine vengono esportati.  
Su Amazon ECS Managed Instances, parti del file system host sono di sola lettura. `sourcePath`Deve puntare a una directory scrivibile come o. `/var` `/tmp` Per ulteriori informazioni, consulta [Utilizzo di montaggio vincolato con Amazon ECS](bind-mounts.md).

`dockerVolumeConfiguration`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: oggetto [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizzano volumi docker.

`efsVolumeConfiguration`  
Tipo: oggetto [EFSVolumedi configurazione](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html)  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizza un file system Amazon EFS per l'archiviazione delle attività.

`fsxWindowsFileServerVolumeConfiguration`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: oggetto [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html)  
Obbligatorio: no  
Questo parametro viene specificato quando utilizzi il file system Amazon FSx for Windows File Server per l'archiviazione delle attività.

`configuredAtLaunch`  
Tipo: Booleano  
Obbligatorio: no  
Specificare se il volume deve essere configurato al momento dell'avvio. Viene utilizzato per creare volumi Amazon EBS per attività autonome o attività create come parte di un servizio. Ogni revisione della definizione di attività può avere un solo volume configurato all'avvio nella configurazione del volume.

## Definizioni del container
<a name="container_definitions-managed-instances"></a>

Quando registri una definizione di attività, devi specificare un elenco di definizioni del container che vengono trasmesse al daemon Docker in un'istanza di container. I seguenti parametri sono consentiti in una definizione del container.

**Topics**
+ [

### Nome
](#container_definition_name-managed-instances)
+ [

### Immagine
](#container_definition_image-managed-instances)
+ [

### Memoria
](#container_definition_memory-managed-instances)
+ [

### CPU
](#container_definition_cpu-managed-instances)
+ [

### Mappature di porte
](#container_definition_portmappings-managed-instances)
+ [

### Credenziali del repository privato
](#container_definition_repositoryCredentials-managed-instances)
+ [

### Essential
](#container_definition_essential-managed-instances)
+ [

### Punto di ingresso
](#container_definition_entrypoint-managed-instances)
+ [

### Comando
](#container_definition_command-managed-instances)
+ [

### Directory di lavoro
](#container_definition_workingdirectory-managed-instances)
+ [

### Parametri avanzati di definizione del container
](#advanced_container_definition_params-managed-instances)
+ [

### Parametri Linux
](#container_definition_linuxparameters-managed-instances)

### Nome
<a name="container_definition_name-managed-instances"></a>

`name`  
Tipo: stringa  
Obbligatorio: sì  
Il nome di un container. Sono consentite fino a 255 lettere (maiuscole e minuscole), numeri, trattini e caratteri di sottolineatura. Se colleghi più container in una definizione di attività, il parametro `name` di uno dei container può essere inserito nel parametro `links` di un altro container. Questo per collegare i container.

### Immagine
<a name="container_definition_image-managed-instances"></a>

`image`  
Tipo: stringa  
Obbligatorio: sì  
L'immagine utilizzata per avviare un container. Questa stringa viene trasmessa direttamente al daemon Docker. Per impostazione predefinita, le immagini nel registro Docker Hub sono disponibili. Puoi anche specificare altri repository con `repository-url/image:tag` o `repository-url/image@digest`. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole); sono consentiti numeri, trattini, caratteri di sottolineatura, due punti, punti, barre e cancelletti. Questo parametro è mappato su `Image` nel comando creazione container e nel parametro `IMAGE` del docker di esecuzione del comando.  
+ Quando viene avviato un nuovo processo, l'agente del container Amazon ECS esegue il pull della versione più recente dell'immagine e del tag specificati per il container da utilizzare. Tuttavia, gli aggiornamenti successivi a un'immagine del repository non vengono propagate alle attività già in esecuzione.
+ Quando non specifichi un tag o un digest nel percorso dell'immagine nella definizione dell'attività, l'agente contenitore Amazon ECS utilizza il `latest` tag per estrarre l'immagine specificata. 
+  Gli aggiornamenti successivi a un'immagine del repository non vengono propagati alle attività già in esecuzione.
+ Le immagini nei registri privati sono supportate. Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).
+ Le immagini nei repository Amazon ECR possono essere specificate utilizzando la convenzione di denominazione `registry/repository:tag` o `registry/repository@digest`, ad esempio, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest` o `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE`.
+ Le immagini in repository ufficiali su Docker Hub utilizzano un singolo nome (ad esempio `ubuntu` o `mongo`).
+ Le immagini in altri repository su Docker Hub vengono qualificate con un nome di organizzazione (ad esempio, `amazon/amazon-ecs-agent`).
+ Le immagini in altri archivi online vengono ulteriormente qualificate da un nome di dominio (ad esempi, `quay.io/assemblyline/ubuntu`).

`versionConsistency`  
Tipo: String  
Valori validi: `enabled`\$1`disabled`  
Obbligatorio: no  
Specificare se Amazon ECS risolverà il tag dell'immagine del container fornito nella definizione del container in un digest di immagini. Per impostazione predefinita, questo comportamento è `enabled`. Se si imposta il valore per un container come `disabled`, Amazon ECS non risolverà il tag dell'immagine del container in un digest e utilizzerà l'URI dell'immagine originale specificato nella definizione del container per l'implementazione. Per ulteriori informazioni sulla risoluzione dell'immagine del container, consultare [Risoluzione dell’immagine del container](deployment-type-ecs.md#deployment-container-image-stability).

### Memoria
<a name="container_definition_memory-managed-instances"></a>

`memory`  
Tipo: Integer  
Obbligatorio: no  
La quantità (in MiB) della memoria da presentare al container. Se il container tenta di superare la memoria specificata qui, viene terminato. La quantità totale di memoria prenotata per tutti i container all'interno di un processo deve essere inferiore al valore `memory` del processo, se specificato. Questo parametro è mappato a `Memory` nella creazione container del comando del docker e l'opzione `--memory` per docker run.  
Il daemon Docker 20.10.0 o versione successiva prenota un minimo di 6 MiB di memoria per un container. Pertanto, non specificare meno di 6 MiB di memoria per i container.  
Il daemon Docker 19.03.13-ce o versione precedente prenota un minimo di 4 MiB di memoria per un container. Pertanto, non specificare meno di 4 MiB di memoria per i container.  
Per ottimizzare l'utilizzo delle risorse, assegnando all'attività quanta più memoria possibile per un determinato tipo di istanza, consulta [Allocazione della memoria di un'istanza di container Amazon ECS Linux](memory-management.md).

`memoryReservation`  
Tipo: Integer  
Obbligatorio: no  
Il limite flessibile (in MiB) della memoria da prenotare per il container. Quando la memoria di sistema è in conflitto, Docker tenta di conservare la memoria del container entro questo limite flessibile. Tuttavia, il container può utilizzare una quantità maggiore di memoria, se necessario. Il container può utilizzare memoria fino al limite rigido specificato con il parametro `memory` (se applicabile) o tutta la memoria disponibile sull'istanza di container, a seconda di quale evento si verifica prima. Questo parametro è mappato a `MemoryReservation` nella creazione container del comando del docker e l'opzione `--memory-reservation` per docker run.  
Se non viene specificato un valore di memoria a livello di attività, è necessario specificare un numero intero diverso da zero per uno o entrambi i codici `memory` o `memoryReservation` in una definizione del container. Se specifichi entrambe, `memory` deve essere superiore a `memoryReservation`. Se specifichi `memoryReservation`, tale valore viene sottratto dalle risorse di memoria disponibili per l'istanza di container in cui il container viene posizionato. in caso contrario, viene utilizzato il valore `memory`.  
Ad esempio, supponiamo che il container normalmente utilizza 128 MiB di memoria, ma con picchi occasionali di 256 MiB di memoria per brevi periodi di tempo. Puoi impostare un valore di `memoryReservation` di 128 MiB e un limite rigido `memory` di 300 MiB. Questa configurazione consente al container di riservare 128 MiB di memoria solo dalle risorse restanti nell'istanza di container. Allo stesso tempo, questa configurazione consente al container di utilizzare più risorse di memoria quando necessario.  
Il daemon Docker 20.10.0 o versione successiva prenota un minimo di 6 MiB di memoria per un container. Pertanto, non specificare meno di 6 MiB di memoria per i container.  
Il daemon Docker 19.03.13-ce o versione precedente prenota un minimo di 4 MiB di memoria per un container. Pertanto, non specificare meno di 4 MiB di memoria per i container.  
Per ottimizzare l'utilizzo delle risorse, assegnando all'attività quanta più memoria possibile per un determinato tipo di istanza, consulta [Allocazione della memoria di un'istanza di container Amazon ECS Linux](memory-management.md).

### CPU
<a name="container_definition_cpu-managed-instances"></a>

`cpu`  
Tipo: Integer  
Obbligatorio: no  
Il numero di unità `cpu` prenotate per il container. Questo parametro è mappato a `CpuShares` nella creazione container del comando del docker e l'opzione `--cpu-shares` per docker run.  
Questo campo è facoltativo per le attività che utilizzano i fornitori di capacità EC2 e l'unico requisito è che la quantità totale di CPU prenotata per tutti i container all'interno di un processo sia inferiore al valore `cpu` a livello di processo.  
Puoi determinare il numero di unità CPU disponibili per tipo di istanza EC2 moltiplicando la v CPUs elencata per quel tipo di istanza nella pagina dei dettagli delle istanze [Amazon EC2](https://aws.amazon.com/ec2/instance-types/) per 1.024.
I container Linux condividono unità CPU non assegnate con altri container nell'istanza di container con lo stesso rapporto della quantità assegnata. Ad esempio, se si esegue un'attività di container singolo in un tipo di istanza single-core con 512 unità di CPU specificate per quel container e questa è l'unica attività in esecuzione nell'istanza di container, tale container potrebbe utilizzare tutte le quote di 1.024 unità di CPU in qualsiasi momento. Tuttavia, se hai avviato un'altra copia della stessa attività su quell'istanza di container, a ogni attività viene garantito un minimo di 512 unità CPU quando necessario. Inoltre, ogni container potrebbe passare a un maggiore utilizzo della CPU se l'altro container non la utilizza. Se entrambe le attività fossero sempre attive al 100%, sarebbero limitate a 512 unità CPU.  
Sulle istanze di container Linux, il daemon Docker nell'istanza di container utilizza il valore CPU per calcolare i relativi rapporti di quote di CPU per i container in esecuzione. Per ulteriori informazioni, consulta [CPU share constraint](https://docs.docker.com/engine/reference/run/#cpu-share-constraint) nella documentazione Docker. Il valore minimo valido per il valore della quota di CPU ammesso dal kernel Linux è 2. Tuttavia, il parametro CPU non è obbligatorio e puoi usare valori di CPU minori di 2 nelle definizioni del container. Per i valori di CPU inferiori a 2 (incluso un valore nullo), il comportamento varia in base alla versione dell'agente del container Amazon ECS:  
+ **Versioni dell'agente inferiori o uguali a 1.1.0:** i valori di CPU null e zero vengono trasmessi a Docker come 0 e successivamente convertiti in 1.024 quote di CPU. I valori di CPU di 1 vengono trasmessi a Docker come 1 e il kernel Linux li converte in due quote di CPU.
+ **Versioni dell'agente superiori o uguali a 1.2.0:** i valori di CPU null, zero e 1 vengono trasmessi a Docker come 2.
Sulle istanze di container Windows, il limite di CPU viene applicato come un limite assoluto o una quota. I container Windows hanno accesso solo alla quantità di CPU descritta nella definizione dell'attività. Un valore di CPU null o zero viene passato a Docker come `0`, che Windows interpreta come 1% di una CPU.

### Mappature di porte
<a name="container_definition_portmappings-managed-instances"></a>

`portMappings`  
Tipo: array di oggetti  
Obbligatorio: no  
Le mappature delle porte espongono le porte di rete del container al mondo esterno. Ciò consente ai client di accedere all'applicazione. Viene anche utilizzato per la comunicazione tra container all'interno della stessa attività.  
Per le definizioni di attività che utilizzano la modalità di rete `awsvpc`, specifica solo il parametro `containerPort`. `hostPort` viene sempre ignorato e la porta del container viene mappata automaticamente su una casuale con numero alto sull'host.  
La maggior parte dei campi di questo parametro (inclusi `containerPort`, `hostPort` e `protocol`) è associata a `PortBindings` nella sezione creazione container del comando e l'opzione `--publish` per docker run. Se la modalità di rete di una definizione di attività è impostata su `host`, le porte host devono essere non definite o devono corrispondere alla porta del container nella mappatura della porta.  
Dopo che un processo raggiunge lo stato `RUNNING`, gli incarichi manuali e automatici relativi alle porte del container e dell'host sono visibili nelle posizioni seguenti:  
+ Console: sezione **Binding di rete** della descrizione di un container per un processo selezionato.
+ AWS CLI: la sezione `networkBindings` dell'output del comando **describe-tasks**.
+ API: risposta `DescribeTasks`.
+ Metadati: l'endpoint dei metadati dell'attività.  
`appProtocol`  
▬Tipo: stringa  
Obbligatorio: no  
Il protocollo dell'applicazione utilizzato per la mappatura delle porte. Questo parametro si applica solo a Service Connect. Ti consigliamo di impostare questo parametro in maniera coerente con il protocollo utilizzato dall'applicazione. Se imposti questo parametro, Amazon ECS aggiunge la gestione delle connessioni specifica del protocollo al proxy Service Connect. Se imposti questo parametro, Amazon ECS aggiunge la telemetria specifica del protocollo nella console Amazon ECS e. CloudWatch  
Se non imposti un valore per questo parametro, viene utilizzato TCP. Amazon ECS, tuttavia, non aggiunge la telemetria specifica del protocollo TCP.  
Per ulteriori informazioni, consulta [Usa Service Connect per connettere i servizi Amazon ECS con nomi brevi](service-connect.md).  
Valori di protocollo validi: `"HTTP" | "HTTP2" | "GRPC" `  
`containerPort`  
Tipo: numero intero  
Obbligatorio: sì, quando si utilizzano `portMappings`  
Il numero di porta nel container associato alla porta dell'host definito dall'utente o assegnata automaticamente.  
Per le attività che utilizzano la modalità di rete `awsvpc`, utilizzare `containerPort` per specificare le porte esposte.  
`containerPortRange`  
▬Tipo: stringa  
Obbligatorio: no  
L'intervallo dei numeri di porta nel container associato all'intervallo di porte host mappato in maniera dinamica.   
È possibile impostare questo parametro solo utilizzando l'API `register-task-definition`. L'opzione è disponibile nel parametro `portMappings`. Per ulteriori informazioni, consulta [register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html) nella *documentazione di riferimento AWS Command Line Interface *.  
Quando specifichi un `containerPortRange`, si applicano le seguenti regole:  
+ È necessario utilizzare la modalità di rete `awsvpc`.
+ L'istanza di container deve avere almeno la versione 1.67.0 dell'agente del container e almeno la versione 1.67.0-1 del pacchetto `ecs-init`.
+ Puoi specificare fino a 100 intervalli di porte per container.
+ Non specificare un `hostPortRange`. Il valore dell'`hostPortRange` è impostato come indicato di seguito:
  + Per i container in un'attività con la modalità di rete `awsvpc`, la `hostPort` è impostata sullo stesso valore della `containerPort`. Questa è una strategia di mappatura statica.
+ I valori validi di `containerPortRange` sono compresi tra 1 e 65535.
+ Una porta può essere inclusa solo in una sola mappatura delle porte per ogni container.
+ Non puoi specificare intervalli di porte sovrapposti.
+ La prima porta nell'intervallo deve essere minore dell'ultima porta nell'intervallo.
+ Docker consiglia di disattivare il proxy docker nel file di configurazione del daemon Docker quando disponi di un numero elevato di porte.

  [Per ulteriori informazioni, consulta il numero \$111185 su.](https://github.com/moby/moby/issues/11185) GitHub

  Per informazioni sulla modalità di disattivazione del proxy docker nel file di configurazione del daemon Docker, consulta [Daemon Docker](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon) nella *Guida per lo sviluppatore di Amazon ECS*.
Puoi effettuare la chiamata a [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) per visualizzare l'`hostPortRange`, cioè le porte dell'host associate alle porte del container.  
Gli intervalli di porte non sono inclusi negli eventi delle attività di Amazon ECS, a EventBridge cui vengono inviati. Per ulteriori informazioni, consulta [Automatizza le risposte agli errori di Amazon ECS utilizzando EventBridge](cloudwatch_event_stream.md).  
`hostPortRange`  
▬Tipo: stringa  
Obbligatorio: no  
L'intervallo di numeri di porta sull'host utilizzato con il collegamento di rete. Questo viene assegnato da Docker e consegnato dall'agente Amazon ECS.  
`hostPort`  
Tipo: Integer  
Obbligatorio: no  
Il numero di porta nell'istanza di container per prenotare per il container.  
`hostPort` può essere lasciato vuoto o deve essere lo stesso valore di `containerPort`.  
L'intervallo di porte temporanee predefinite per Docker versione 1.6.0 e successive è elencato nell'istanza in `/proc/sys/net/ipv4/ip_local_port_range`. Se questo parametro kernel non è disponibile, viene utilizzato l'intervallo delle porte temporaneo di default da `49153–65535`. Non tentare di specificare una porta dell'host nell'intervallo di porte effimere. Questo perché sono riservate per l'assegnazione automatica. In generale, le porte al di sotto di `32768` non rientrano nell'intervallo delle porte temporanee.   
Le porte prenotate di default sono `22` per SSH, le porte Docker `2375` e `2376` e le porte `51678-51680` dell'agente del container di Amazon ECS. Qualsiasi porta dell'host precedentemente specificata dall'utente per un'attività in esecuzione viene prenotata anche mentre tale attività è in esecuzione. Dopo l'arresto di un'attività, la porta dell'host viene rilasciata. Le porte prenotate correnti vengono visualizzate nel parametro `remainingResources` dell'output **describe-container-instances**. Un'istanza di container può contenere fino a 100 porte prenotate alla volta, incluse quelle predefinite. Le porte assegnate automaticamente non vengono conteggiate ai fini della quota di 100 porte prenotate.  
`name`  
Tipo: String  
Obbligatorio: no, necessario per configurare Service Connect e VPC Lattice in un servizio  
Il nome utilizzato per la mappatura delle porte. Questo parametro si applica solo a Service Connect e VPC Lattice. Questo parametro è il nome utilizzato nella configurazione di Service Connect e VPC Lattice di un servizio.  
Per ulteriori informazioni, consulta [Usa Service Connect per connettere i servizi Amazon ECS con nomi brevi](service-connect.md).  
Nell'esempio seguente, vengono visualizzati entrambi i campi obbligatori per Service Connect e VPC Lattice.  

```
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]
```  
`protocol`  
▬Tipo: stringa  
Obbligatorio: no  
Il protocollo utilizzato per la mappatura delle porte. I valori validi sono `tcp` e `udp`. Il valore predefinito è `tcp`.  
È supportato solo `tcp` per Service Connect. Ricorda che `tcp` è implicito se questo campo non è impostato. 
Se specifichi una porta dell'host, utilizza la seguente sintassi.  

```
"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]
```
Se desideri una porta dell'host assegnata automaticamente, utilizza la seguente sintassi.  

```
"portMappings": [
    {
        "containerPort": integer
    }
    ...
]
```

### Credenziali del repository privato
<a name="container_definition_repositoryCredentials-managed-instances"></a>

`repositoryCredentials`  
Tipo: oggetto [RepositoryCredentials](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RepositoryCredentials.html)  
Obbligatorio: no  
Le credenziali dell'archivio per l'autenticazione di un registro privato.  
Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).    
 `credentialsParameter`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `repositoryCredentials`  
L'Amazon Resource Name (ARN) del segreto contenente le credenziali dell'archivio privato.  
Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).  
Quando utilizzi l'API Amazon ECS o AWS SDKs se il segreto esiste nella stessa regione dell'attività che stai avviando, puoi utilizzare l'ARN completo o il nome del segreto. AWS CLI Quando si utilizza il Console di gestione AWS, è necessario specificare l'ARN completo del segreto.
Di seguito viene riportato un frammento di una definizione di attività che mostra i parametri obbligatori:  

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

### Essential
<a name="container_definition_essential-managed-instances"></a>

`essential`  
Tipo: Booleano  
Obbligatorio: no  
Se il parametro `essential` di un container è contrassegnato come `true` e tale container dà esito negativo o si interrompe per qualsiasi motivo, tutti gli altri container che fanno parte del processo vengono interrotti. Se il parametro `essential` di un container è contrassegnato come `false`, il suo esito negativo non influenza il resto dei container in un'attività. Se questo parametro viene omesso, un container si considera essenziale.  
Tutti i processi devono avere almeno un container essenziale. Se disponi di un'applicazione composta da più container, raggruppa i container utilizzati per scopi comuni in componenti e separa i diversi componenti in più definizioni di attività. Per ulteriori informazioni, consulta [Progetta la tua applicazione per Amazon ECS](application_architecture.md).

### Punto di ingresso
<a name="container_definition_entrypoint-managed-instances"></a>

`entryPoint`  
Tipo: array di stringhe  
Obbligatorio: no  
Il punto di ingresso che viene trasmesso al container. Questo parametro è mappato a `Entrypoint` nella creazione container del comando del docker e l'opzione `--entrypoint` per docker run.  

```
"entryPoint": ["string", ...]
```

### Comando
<a name="container_definition_command-managed-instances"></a>

`command`  
Tipo: array di stringhe  
Obbligatorio: no  
Il comando che viene inviato al container. Questo parametro è mappato a `Cmd` nella creazione container del comando del docker e il parametro `COMMAND` per docker run. In caso di più argomenti, ognuno di questi deve essere una stringa separata nell'array.  

```
"command": ["string", ...]
```

### Directory di lavoro
<a name="container_definition_workingdirectory-managed-instances"></a>

`workingDirectory`  
▬Tipo: stringa  
Obbligatorio: no  
La directory di lavoro nel container in cui eseguire i comandi. Questo parametro è mappato a `WorkingDir` nella creazione container del comando del docker e l'opzione `--workdir` per docker run.

### Parametri avanzati di definizione del container
<a name="advanced_container_definition_params-managed-instances"></a>

I seguenti parametri avanzati di definizione del container forniscono funzionalità estese al comando di esecuzione del docker che viene utilizzato per lanciare container nelle istanze di container di Amazon ECS.

**Topics**
+ [

#### Politica di riavvio
](#container_definition_restart_policy-managed-instances)
+ [

#### Controllo dell’integrità
](#container_definition_healthcheck-managed-instances)
+ [

#### Ambiente
](#container_definition_environment-managed-instances)
+ [

#### Sicurezza
](#container_definition_security-managed-instances)
+ [

#### Impostazioni di rete
](#container_definition_network-managed-instances)
+ [

#### Archiviazione e registrazione
](#container_definition_storage-managed-instances)
+ [

#### Requisiti per le risorse
](#container_definition_resourcerequirements-managed-instances)
+ [

#### Timeout container
](#container_definition_timeout-managed-instances)
+ [

#### Dipendenze per i container
](#container_definition_dependency-managed-instances)
+ [

#### Controlli di sistema
](#container_definition_systemcontrols-managed-instances)
+ [

#### Interactive
](#container_definition_interactive-managed-instances)
+ [

#### Pseudoterminale
](#container_definition_pseudoterminal-managed-instances)

#### Politica di riavvio
<a name="container_definition_restart_policy-managed-instances"></a>

`restartPolicy`  
La politica di riavvio del container e i parametri di configurazione associati. Quando configuri una politica di riavvio per un container, Amazon ECS può riavviare il container senza dover sostituire l'attività. Per ulteriori informazioni, consulta [Riavviare singoli container nelle attività Amazon ECS con policy di riavvio dei container](container-restart-policy.md).    
`enabled`  
Tipo: Booleano  
Obbligatorio: sì  
Specificare se è abilitata una politica di riavvio per il container.  
`ignoredExitCodes`  
Tipo: array di numeri interi  
Obbligatorio: no  
Un elenco di codici di uscita che Amazon ECS ignorerà e non tenterà di riavviare. È possibile specificare fino a 50 codici di uscita dei container. Per impostazione predefinita, Amazon ECS non ignora alcun codice di uscita.  
`restartAttemptPeriod`  
Tipo: Integer  
Obbligatorio: no  
Un periodo di tempo (in secondi) durante il quale il container deve essere eseguito prima che venga tentato un riavvio. Un container può essere riavviato solo una volta ogni `restartAttemptPeriod` secondi. Se un container non è in grado di funzionare per questo periodo di tempo ed esce in anticipo, non verrà riavviato. È possibile specificare un `restartAttemptPeriod` minimo di 60 secondi e un `restartAttemptPeriod` massimo di 1.800 secondi. Per impostazione predefinita, un container deve funzionare per 300 secondi prima di poter essere riavviato.

#### Controllo dell’integrità
<a name="container_definition_healthcheck-managed-instances"></a>

`healthCheck`  
Comando di controllo dell'integrità del container e parametri di configurazione associati per il container. Per ulteriori informazioni, consulta [Determina lo stato delle attività di Amazon ECS utilizzando i controlli dell’integrità dei container](healthcheck.md).    
`command`  
Matrice di stringhe che rappresenta il comando eseguito dal container per determinare l'integrità. La matrice di stringhe può iniziare con `CMD` per eseguire direttamente gli argomenti del comando oppure con `CMD-SHELL` per eseguire il comando con la shell predefinita del container. Se non è specificato nessuno dei due, viene utilizzato `CMD`.  
Quando si registra una definizione di attività in Console di gestione AWS, utilizzare un elenco di comandi separati da virgole. Questi comandi vengono convertiti in stringa dopo la creazione della definizione delle attività. Di seguito è riportato un esempio di input per il controllo dell'integrità.  

```
CMD-SHELL, curl -f http://localhost/ || exit 1
```
Quando si registra una definizione di attività utilizzando il pannello Console di gestione AWS JSON, o il AWS CLI APIs, racchiude l'elenco dei comandi tra parentesi. Di seguito è riportato un esempio di input per il controllo dell'integrità.  

```
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
```
Un codice di uscita 0, senza output `stderr`, indica l'esito positivo, mentre un codice di uscita diverso da zero indica un errore.   
`interval`  
Intervallo di tempo (in secondi) tra ogni controllo dell'integrità. Puoi specificare un valore compreso tra 5 e 300 secondi. Il valore di predefinito è 30 secondi.  
`timeout`  
Periodo di tempo in secondi per cui attendere che un controllo dell'integrità venga superato prima di considerarlo un errore. Puoi specificare un valore compreso tra 2 e 60 secondi. Il valore predefinito è 5 secondi.  
`retries`  
Numero di tentativi per cui riprovare un controllo dello stato non riuscito prima che il container venga considerato non integro. Puoi specificare un valore compreso tra 1 e 10 tentativi. Il valore predefinito è tre tentativi.  
`startPeriod`  
Periodo di tolleranza facoltativo entro il quale concedere ai container il tempo necessario per il bootstrap prima che i controlli dell'integrità non riusciti vengano conteggiati rispetto al numero massimo di nuovi tentativi. È possibile specificare un valore compreso tra 0 e 300 secondi. Per impostazione predefinita, `startPeriod` è disabilitato.  
Se un controllo dello stato va a buon fine all'interno di `startPeriod`, il container è considerato integro e gli errori successivi vengono conteggiati rispetto al numero massimo di nuovi tentativi.

#### Ambiente
<a name="container_definition_environment-managed-instances"></a>

`cpu`  
Tipo: Integer  
Obbligatorio: no  
Il numero di unità `cpu` che l'agente del container Amazon ECS riserverà per il container. Su Linux, questo parametro è mappato a `CpuShares` nella sezione [Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate).  
Questo campo è facoltativo per le attività eseguite su istanze gestite da Amazon ECS. La quantità totale di CPU riservata per tutti i container all'interno di un'attività deve essere inferiore al valore `cpu` a livello di attività.  
I container Linux condividono unità CPU non assegnate con altri container nell'istanza di container con lo stesso rapporto della quantità assegnata. Ad esempio, supponiamo di eseguire un'attività di container singolo in un tipo di istanza single core con 512 unità di CPU specificate per tale container. Inoltre, tale attività è l'unica in esecuzione sull'istanza di container. In questo esempio, il container può utilizzare la condivisione completa di 1.024 unità CPU in qualsiasi momento. Tuttavia, si supponga di aver avviato un'altra copia della stessa attività su quell'istanza di container. A ogni attività viene garantito un minimo di 512 unità CPU quando necessario. Analogamente, se l'altro container non utilizza la CPU rimanente, ogni container può passare a un maggiore utilizzo della CPU. Tuttavia, se entrambe le attività sono sempre attive al 100%, sono limitate a 512 unità CPU.  
Sulle istanze di container Linux, il daemon Docker nell'istanza di container utilizza il valore CPU per calcolare i relativi rapporti di quote di CPU per i container in esecuzione. Il valore minimo valido per la quota di CPU ammesso dal kernel Linux è 2, mentre quello massimo valido per la quota di CPU ammesso dal kernel Linux è 262.144. Tuttavia, il parametro CPU non è obbligatorio e puoi usare valori di CPU minori di 2 e superiori a 262.144 nelle definizioni del container. Per i valori di CPU minori di 2 (incluso un valore null) e superiori a 262.144, il comportamento varia in base alla versione dell'agente del container Amazon ECS:  
Per ulteriori esempi, consulta [Modalità di gestione delle risorse di CPU e memoria di Amazon ECS](https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/).

`gpu`  
Tipo: oggetto [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Obbligatorio: no  
Il numero di `GPUs` fisiche che l'agente del container Amazon ECS riserva per il container. Il numero di contenitori GPUs riservati per tutti i contenitori di un'attività non deve superare il numero di disponibili GPUs sull'istanza del contenitore su cui viene avviata l'attività. Per ulteriori informazioni, consulta [Definizioni di attività Amazon ECS per carichi di lavoro GPU](ecs-gpu.md).

`Elastic Inference accelerator`  
Questo parametro non è supportato per i container ospitati su Istanze gestite Amazon ECS.
Tipo: oggetto [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Obbligatorio: no  
Per il tipo `InferenceAccelerator`, il `value` corrisponde a `deviceName` per un `InferenceAccelerator` specificato in una definizione di attività. Per ulteriori informazioni, consulta [Nome dell'acceleratore Elastic Inference (obsoleto)](task_definition_parameters.md#elastic-Inference-accelerator).

`essential`  
Tipo: Booleano  
Obbligatorio: no  
Si supponga che il parametro `essential` di un container sia contrassegnato come `true` e che tale container abbia esito negativo o si arresti per qualsiasi motivo. Di conseguenza, tutti gli altri container che fanno parte dell'attività vengono arrestati. Se il parametro `essential` di un container è contrassegnato come `false`, il suo esito negativo non influenza il resto dei container in un'attività. Se questo parametro viene omesso, un container si considera essenziale.  
Tutti i processi devono avere almeno un container essenziale. Supponiamo di avere un'applicazione composta da più container. In questo caso, si raggruppano i container utilizzati per uno scopo comune in componenti e si separano i diversi componenti in più definizioni delle attività. Per ulteriori informazioni, consulta [Progetta la tua applicazione per Amazon ECS](application_architecture.md).  

```
"essential": true|false
```

`entryPoint`  
Le versioni precedenti dell'agente del container Amazon ECS non gestiscono correttamente i parametri `entryPoint`. In caso di problemi durante l'utilizzo `entryPoint`, aggiorna l'agente del container o inserisci i comandi e gli argomenti come elementi di matrice `command`.
Tipo: array di stringhe  
Obbligatorio: no  
Il punto di ingresso che viene trasmesso al container.   

```
"entryPoint": ["string", ...]
```

`command`  
Tipo: array di stringhe  
Obbligatorio: no  
Il comando che viene inviato al container. Questo parametro è mappato a `Cmd` nella creazione container del comando e il parametro `COMMAND` per docker run. In caso di più argomenti, ognuno di questi deve essere una stringa separata nella matrice.  

```
"command": ["string", ...]
```

`workingDirectory`  
▬Tipo: stringa  
Obbligatorio: no  
La directory di lavoro nel container in cui eseguire i comandi. Questo parametro è mappato a `WorkingDir` nella sezione [Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) di [Docker Remote API](https://docs.docker.com/reference/api/engine/version/v1.38/) e l'opzione `--workdir` a [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).  

```
"workingDirectory": "string"
```

`environmentFiles`  
Tipo: array di oggetti  
Obbligatorio: no  
Un elenco di file contenenti le variabili di ambiente da passare a un container. Questo parametro è mappato all'opzione `--env-file` al comando esecuzione del docker.  
Puoi specificare fino a 10 file di ambiente. Il file deve avere un'estensione `.env`. Ogni riga di un file di ambiente deve contenere una variabile di ambiente nel formato `VARIABLE=VALUE`. Le righe che iniziano con `#` vengono trattate come commenti e vengono ignorate.   
Se nella definizione del container sono specificate singole variabili di ambiente, hanno la precedenza sulle variabili contenute in un file di ambiente. Se vengono specificati più file di ambiente che contengono la stessa variabile, vengono elaborati dall'alto verso il basso. Consigliamo di utilizzare nomi di variabili univoci. Per ulteriori informazioni, consulta [Passare una singola variabile di ambiente a un container Amazon ECS](taskdef-envfiles.md).    
`value`  
Tipo: stringa  
Obbligatorio: sì  
L'Amazon Resource Name (ARN) dell'oggetto Amazon S3 contenente il file della variabile di ambiente.  
`type`  
Tipo: stringa  
Obbligatorio: sì  
Il tipo di file da utilizzare L’unico valore supportato è `s3`.

`environment`  
Tipo: array di oggetti  
Obbligatorio: no  
Le variabili di ambiente da passare a un container. Questo parametro è mappato a `Env` nella creazione container del comando del docker e l'opzione `--env` al comando per docker run.  
Non è consigliabile utilizzare variabili di ambiente non crittografate per informazioni sensibili, ad esempio dati di credenziali.  
`name`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `environment`  
Il nome della variabile di ambiente.  
`value`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `environment`  
Il valore della variabile di ambiente.

```
"environment" : [
    { "name" : "string", "value" : "string" },
    { "name" : "string", "value" : "string" }
]
```

`secrets`  
Tipo: array di oggetti  
Obbligatorio: no  
Un oggetto che rappresenta il segreto da esporre al container. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipo: stringa  
Obbligatorio: sì  
Il valore da impostare come variabile di ambiente sul container.  
`valueFrom`  
Tipo: stringa  
Obbligatorio: sì  
Il segreto da esporre al container. I valori supportati sono l'Amazon Resource Name (ARN) completo del Gestione dei segreti AWS segreto o l'ARN completo del parametro nel Parameter Store. AWS Systems Manager   
Se il parametro Systems Manager Parameter Store o il parametro Secrets Manager esiste nella Regione AWS stessa operazione che si sta avviando, è possibile utilizzare l'ARN completo o il nome del segreto. Se il parametro esiste in una Regione diversa, deve essere specificato l'ARN completo.

```
"secrets": [
    {
        "name": "environment_variable_name",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }
]
```

#### Sicurezza
<a name="container_definition_security-managed-instances"></a>

`privileged`  
Tipo: Booleano  
Obbligatorio: no  
Se il parametro è `true`, al container vengono assegnati privilegi elevati nell'istanza di container host (simile all'utente `root`). Questo parametro è mappato a `Privileged` nella creazione container del comando del docker e l'opzione `--privileged` per docker run.

`user`  
▬Tipo: stringa  
Obbligatorio: no  
L'utente da usare all'interno del container. Questo parametro è mappato a `User` nella creazione container del comando del docker e l'opzione `--user` per docker run.  
Quando si eseguono attività utilizzando la modalità di rete `host`, non eseguire container utilizzando l'utente root (UID 0). È consigliabile utilizzare un utente non root per maggior sicurezza.
È possibile specificare `user` utilizzando i seguenti formati. Un eventuale UID o GID deve essere specificato come numero intero positivo.  
+ `user`
+ `user:group`
+ `uid`
+ `uid:gid`
+ `user:gid`
+ `uid:group`

`readonlyRootFilesystem`  
Tipo: Booleano  
Obbligatorio: no  
Quando questo parametro è `true`, al container viene assegnato il file system root di sola lettura. Questo parametro è mappato a `ReadonlyRootfs` nella creazione container del comando del docker e l'opzione `--read-only` per docker run.

`dockerSecurityOptions`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: array di stringhe  
Obbligatorio: no  
Un elenco di stringhe per fornire etichette personalizzate per SELinux sistemi di sicurezza AppArmor multilivello. Questo campo non è valido per container in attività che utilizzano Fargate.

`ulimits`  
Tipo: matrice di oggetti [Ulimit](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html)  
Obbligatorio: no  
Un elenco di valori `ulimits` da impostare nel container. Se viene specificato un valore ulimit in una definizione di attività, questo sostituisce i valori predefiniti impostati da Docker. Questo parametro è mappato a `Ulimits` nella creazione container del comando del docker e l'opzione `--ulimit` per docker run. Valori di denominazione validi vengono visualizzati nel tipo di dati [Ulimit](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html).  
I processi di Amazon ECS ospitati su Fargate utilizzano i valori del limite di risorse di default impostati dal sistema operativo, ad eccezione del parametro del limite di risorse `nofile` che viene sovrascritto da Fargate. Il limite di risorse `nofile` imposta una restrizione sul numero di file aperti che un container può utilizzare. Il limite flessibile `nofile` di default è `1024` mentre il limite rigido predefinito è `65535`.  
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container. Per controllare la versione Docker Remote API nell'istanza di container, accedi all'istanza di container ed esegui il seguente comando: `sudo docker version --format '{{.Server.APIVersion}}'`

`dockerLabels`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
Una key/value mappa di etichette da aggiungere al contenitore. Questo parametro è mappato a `Labels` nella creazione container del comando del docker e l'opzione `--label` per docker run.   
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container.  

```
"dockerLabels": {"string": "string"
      ...}
```

#### Impostazioni di rete
<a name="container_definition_network-managed-instances"></a>

`disableNetworking`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: Booleano  
Obbligatorio: no  
Quando questo parametro è true, le reti sono disabilitate all'interno del container.  
Il valore predefinito è `false`.  

```
"disableNetworking": true|false
```

`links`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: array di stringhe  
Obbligatorio: no  
Il parametro `link` consente ai container di comunicare tra loro senza la necessità di mappatura delle porte. Questo parametro è supportato solo se la modalità di rete di una definizione delle attività è impostata su `bridge`. Il costrutto `name:internalName` è analogo a `name:alias` nei collegamenti Docker. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini e trattini bassi.  
I container che vengono posizionati nella stessa istanza di container potrebbero comunicare tra loro senza necessità di collegamenti o mappature delle porte dell'host. L'isolamento di rete su un'istanza di container è controllato da gruppi di sicurezza e impostazioni VPC.

```
"links": ["name:internalName", ...]
```

`hostname`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
▬Tipo: stringa  
Obbligatorio: no  
Il nome host da utilizzare per il container. Questo parametro è mappato a `Hostname` nella creazione container del docker e l'opzione `--hostname` per docker run.  

```
"hostname": "string"
```

`dnsServers`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: array di stringhe  
Obbligatorio: no  
Un elenco di server DNS presentato al container.  

```
"dnsServers": ["string", ...]
```

`extraHosts`  
Questo parametro non è supportato per le attività che utilizzano la modalità di rete `awsvpc`.
Tipo: array di oggetti  
Obbligatorio: no  
Un elenco di nomi host e mappature di indirizzi IP da aggiungere al file `/etc/hosts` nel container.   
Questo parametro è mappato a `ExtraHosts` nella creazione container del comando del docker e l'opzione `--add-host` per docker run.  

```
"extraHosts": [
      {
        "hostname": "string",
        "ipAddress": "string"
      }
      ...
    ]
```  
`hostname`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `extraHosts`  
Il nome host da utilizzare nella voce `/etc/hosts`.  
`ipAddress`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `extraHosts`  
L'indirizzo IP da utilizzare nella voce `/etc/hosts`.

#### Archiviazione e registrazione
<a name="container_definition_storage-managed-instances"></a>

`readonlyRootFilesystem`  
Tipo: Booleano  
Obbligatorio: no  
Se il parametro è true, al container viene assegnato l'accesso in sola lettura al file system radice. Questo parametro è mappato a `ReadonlyRootfs` nella creazione container del comando del docker e l'opzione `--read-only` per docker run.  
Il valore predefinito è `false`.  

```
"readonlyRootFilesystem": true|false
```

`mountPoints`  
Tipo: array di oggetti  
Obbligatorio: no  
I punti di montaggio per i volumi di dati nel container. Questo parametro è mappato ai `Volumes` nella creazione container dell'API Docker e l'opzione `--volume` per docker run.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`. I container Windows non possono montare le directory su un'unità diversa e i punti di montaggio non possono essere utilizzati tra le unità. È necessario specificare i punti di montaggio per collegare un volume Amazon EBS direttamente a un'attività Amazon ECS.    
`sourceVolume`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il nome del volume da montare.  
`containerPath`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il percorso nel container in cui verrà montato il volume.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.  
Per le attività su istanze EC2 che eseguono il sistema operativo Windows, lasciare il valore predefinito di `false`.

`volumesFrom`  
Tipo: array di oggetti  
Obbligatorio: no  
I volumi di dati da montare da un altro container. Questo parametro è mappato a `VolumesFrom` nella creazione container del comando del docker e l'opzione `--volumes-from` per docker run.    
`sourceContainer`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `volumesFrom`  
Il nome del container da cui montare volumi.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.

```
"volumesFrom": [
                {
                  "sourceContainer": "string",
                  "readOnly": true|false
                }
              ]
```

`logConfiguration`  
Tipo: [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)oggetto  
Obbligatorio: no  
La specifica di configurazione dei log per il container.  
Per definizioni dell'attività di esempio che utilizzano una configurazione di log, consulta [Esempio di definizione di attività di Amazon ECS](example_task_definitions.md).  
Questo parametro è mappato a `LogConfig` nella creazione container del comando del docker e l'opzione `--log-driver` per docker run. Per impostazione predefinita, i container utilizzano lo stesso driver di log utilizzato dal daemon Docker. Tuttavia, il container può utilizzare un driver di log diverso da quello del daemon Docker, specificando un driver di log con questo parametro nella definizione del container. Per utilizzare un altro driver di log per un container, il sistema di log deve essere configurato correttamente nell'istanza di container (o su un altro server di log per le opzioni di logging in remoto).   
Si noti quanto segue quando si specifica una configurazione di log per i container:  
+ Amazon ECS supporta un sottoinsieme dei driver di log disponibili per il daemon Docker.
+ Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull'istanza di container.

```
"logConfiguration": {
      "logDriver": "awslogs",""splunk", "awsfirelens",
      "options": {"string": "string"
        ...},
	"secretOptions": [{
		"name": "string",
		"valueFrom": "string"
	}]
}
```  
`logDriver`  
Tipo: String  
Valori validi: `"awslogs","splunk","awsfirelens"`  
Obbligatorio: sì, quando viene utilizzato `logConfiguration`  
Il driver di log da utilizzare per il container. Per impostazione predefinita, i valori validi elencati in precedenza sono driver di log con i quali l'agente del container Amazon ECS può comunicare.  
I driver di log supportati sono `awslogs`, `splunk` e `awsfirelens`.  
Per ulteriori informazioni su come utilizzare il driver di `awslogs` registro nelle definizioni delle attività per inviare i log dei contenitori a CloudWatch Logs, vedere. [Invia i log di Amazon ECS a CloudWatch](using_awslogs.md)  
Per ulteriori informazioni sull'utilizzo del driver di log `awsfirelens`, consultare [Inviare i log di Amazon ECS a un servizio o AWS AWS Partner](using_firelens.md).  
Se disponi di un driver personalizzato che non è elencato, puoi eseguire il fork del progetto Amazon ECS Container Agent [disponibile su GitHub](https://github.com/aws/amazon-ecs-agent) e personalizzarlo in modo che funzioni con quel driver. Ti consigliamo di inviare le richieste pull per le modifiche che desideri siano incluse. Tuttavia, attualmente non forniamo il supporto per eseguire copie modificate di questo software.
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container.  
`options`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
La key/value mappa delle opzioni di configurazione da inviare al driver di registro.  
Le opzioni che è possibile specificare dipendono dal driver di log. Alcune delle opzioni che puoi specificare quando utilizzi il `awslogs` router per indirizzare i log ad Amazon CloudWatch includono:    
`awslogs-create-group`  
Obbligatorio: no  
Specifica se desideri che il gruppo di log venga creato automaticamente. Se questa opzione non è specificata, viene impostata in modo predefinito su `false`.  
La tua policy IAM deve includere l'autorizzazione `logs:CreateLogGroup`prima di provare a utilizzare `awslogs-create-group`.  
`awslogs-region`  
Obbligatorio: sì  
Specificate il Regione AWS driver di `awslogs` registro a cui inviare i log Docker. Puoi scegliere di inviare tutti i log dai cluster di diverse regioni a una singola regione in Logs. CloudWatch In questo modo saranno tutti visibili in un'unica posizione. In caso contrario, puoi separarli per regione per una maggiore granularità. Assicurati che il gruppo di log specificato esista nella regione definita tramite questa opzione.  
`awslogs-group`  
Obbligatorio: sì  
Assicurati di specificare un gruppo di log a cui il driver di log `awslogs` invia i flussi di log.  
`awslogs-stream-prefix`  
Obbligatorio: sì  
Utilizza l'opzione `awslogs-stream-prefix` per associare un flusso di log al prefisso selezionato, al nome del container e all'ID dell'attività Amazon ECS al quale appartiene il container. Se specifichi un prefisso con questa opzione, il flusso di log assume il formato seguente.  

```
prefix-name/container-name/ecs-task-id
```
Se non specifichi un prefisso con questa opzione, il flusso di log viene denominato secondo l'ID del container assegnato dal daemon Docker nell'istanza di container. Poiché è difficile ricollegare i log al container che li ha inviati con il solo ID container Docker (disponibile solo sulle istanze di container), è consigliabile specificare un prefisso con questa opzione.  
Per i servizi Amazon ECS, puoi utilizzare il nome del servizio come prefisso. In questo modo puoi ricollegare i flussi di log al servizio a cui appartiene il container, al nome del container che li ha inviati e all'ID dell'attività a cui appartiene il container.  
Perché i log compaiano nell'apposito riquadro della console Amazon ECS, devi specificare un prefisso per il flusso dei log.  
`awslogs-datetime-format`  
Obbligatorio: no  
Questa opzione definisce un modello di inizio multilinea nel formato `strftime` Python. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. In questo modo la riga associata è il delimitatore tra i messaggi di log.  
Un esempio di un caso d'uso per l'utilizzo di questo formato è per l'analisi di output, ad esempio uno dump dello stack, che potrebbe altrimenti essere registrato in più voci. Il modello corretto consente di acquisirlo in una sola voce.  
Per ulteriori informazioni, consulta [awslogs-datetime-format](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-datetime-format).  
Non è possibile configurare entrambe le opzioni `awslogs-datetime-format` e `awslogs-multiline-pattern`.  
Il logging multilinea esegue un'espressione regolare per l'analisi e il confronto di tutti i messaggi di log. L'operazione potrebbe avere ripercussioni negative sulle prestazioni del logging.  
`awslogs-multiline-pattern`  
Obbligatorio: no  
Questa opzione definisce un modello di inizio multilinea che utilizza un'espressione regolare. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. In questo modo la riga associata è il delimitatore tra i messaggi di log.  
Per ulteriori informazioni, consulta [awslogs-multiline-pattern](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-multiline-pattern).  
Questa opzione viene ignorata se anche `awslogs-datetime-format` è configurato.  
Non è possibile configurare entrambe le opzioni `awslogs-datetime-format` e `awslogs-multiline-pattern`.  
Il logging multilinea esegue un'espressione regolare per l'analisi e il confronto di tutti i messaggi di log. L'operazione potrebbe avere ripercussioni negative sulle prestazioni del logging.  
`mode`  
Obbligatorio: no  
Valori validi: `non-blocking` \$1 `blocking`  
Questa opzione definisce la modalità di consegna dei messaggi di log dal container al driver di log `awslogs`. La modalità di distribuzione scelta influisce sulla disponibilità dell'applicazione quando il flusso di log dal container viene interrotto.  
Se si utilizza la `blocking` modalità e il flusso dei log verso CloudWatch viene interrotto, le chiamate provenienti dal codice contenitore su cui scrivere verso e gli `stdout` stream verranno bloccate. `stderr` Di conseguenza, il thread di registrazione dell'applicazione si bloccherà. Ciò può causare la mancata risposta dell'applicazione e la presenza di errori nel controllo d'integrità del container.   
Se utilizzi la modalità `non-blocking`, i log del container vengono invece archiviati in un buffer intermedio in memoria configurato con l'opzione `max-buffer-size`. In questo modo si evita che l'applicazione non risponda quando non è possibile inviare i log a. CloudWatch Ti consigliamo di utilizzare questa modalità se vuoi garantire la disponibilità del servizio nonostante una certa perdita di log. Per ulteriori informazioni, consultare [Preventing log loss with non-blocking mode in the `awslogs` container log driver](https://aws.amazon.com/blogs/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/).  
`max-buffer-size`  
Obbligatorio: no  
Valore predefinito: `1m`  
Quando viene utilizzata la modalità `non-blocking`, l'opzione di log `max-buffer-size` controlla la dimensione del buffer utilizzato per l'archiviazione dei messaggi intermedi. Assicurati di specificare una dimensione del buffer adeguata in base all'applicazione in uso. Quando il buffer è pieno, non è possibile archiviare ulteriori log. I log che non possono essere archiviati vengono persi. 
Per indirizzare i log utilizzando il router di log `splunk`, è necessario specificare `splunk-token` e `splunk-url`.  
Quando si utilizza il router di `awsfirelens` log per indirizzare i log verso una AWS Partner Network destinazione Servizio AWS o per l'archiviazione e l'analisi dei log, è possibile impostare l'`log-driver-buffer-limit`opzione per limitare il numero di eventi che vengono memorizzati nel buffer prima di essere inviati al contenitore del log router. Può aiutarti a risolvere potenziali problemi di perdita di log perché un throughput elevato potrebbe comportare l'esaurimento della memoria per il buffer all'interno di Docker. Per ulteriori informazioni, consulta [Configurazione dei log di Amazon ECS per un throughput elevato](firelens-docker-buffer-limit.md).  
Le altre opzioni che è possibile specificare quando si utilizza `awsfirelens` per indirizzare i log dipendono dalla destinazione. Quando esporti i log in Amazon Data Firehose, puoi specificare Regione AWS il `region` with e un nome per il flusso di log con. `delivery_stream`  
Quando si esportano i log in flusso di dati Amazon Kinesis, è possibile specificare Regione AWS con `region` e un nome per il flusso di dati con `stream`.  
 Quando esporti i log su Amazon OpenSearch Service, puoi specificare opzioni come`Name`, `Host` (Endpoint del OpenSearch servizio senza protocollo),`Port`,`Index`,`Type`, `Aws_auth` `Aws_region``Suppress_Type_Name`, e. `tls`  
Quando si esportano i log in Amazon S3, è possibile specificare il bucket utilizzando l'opzione `bucket`. È possibile anche specificare `region`, `total_file_size`, `upload_timeout` e `use_put_object` come opzioni.  
Questo parametro richiede la versione 1.19 o successiva di Docker Remote API sull'istanza di container.  
`secretOptions`  
Tipo: array di oggetti  
Obbligatorio: no  
Un oggetto che rappresenta il segreto da inviare alla configurazione di log. I segreti utilizzati nella configurazione di log possono includere un token di autenticazione, un certificato o una chiave di crittografia. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipo: stringa  
Obbligatorio: sì  
Il valore da impostare come variabile di ambiente sul container.  
`valueFrom`  
Tipo: stringa  
Obbligatorio: sì  
Il segreto da esporre alla configurazione di log del container.

```
"logConfiguration": {
	"logDriver": "splunk",
	"options": {
		"splunk-url": "https://cloud.splunk.com:8080",
		"splunk-token": "...",
		"tag": "...",
		...
	},
	"secretOptions": [{
		"name": "splunk-token",
		"valueFrom": "/ecs/logconfig/splunkcred"
	}]
}
```

`firelensConfiguration`  
Tipo: oggetto [FirelensConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FirelensConfiguration.html)  
Obbligatorio: no  
La FireLens configurazione per il contenitore. Si utilizza per specificare e configurare un router di log per i log del container. Per ulteriori informazioni, consulta [Inviare i log di Amazon ECS a un servizio o AWS AWS Partner](using_firelens.md).  

```
{
    "firelensConfiguration": {
        "type": "fluentd",
        "options": {
            "KeyName": ""
        }
    }
}
```  
`options`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
La key/value mappa delle opzioni da usare durante la configurazione del log router. Questo campo è facoltativo e può essere utilizzato per aggiungere ulteriori metadati, ad esempio il processo, la definizione di attività, il cluster e i dettagli dell'istanza di container all'evento di log. Se specificato, la sintassi da utilizzare è `"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf|filepath"}`. Per ulteriori informazioni, consulta [Esempio di definizione dell'attività Amazon ECS: indirizzare i log a FireLens](firelens-taskdef.md).  
`type`  
Tipo: stringa  
Obbligatorio: sì  
Il router di log da utilizzare. I valori validi sono `fluentd` o `fluentbit`.

#### Requisiti per le risorse
<a name="container_definition_resourcerequirements-managed-instances"></a>

`resourceRequirements`  
Tipo: matrice di oggetti [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Obbligatorio: no  
Il tipo e la quantità di una risorsa da assegnare a un container. L’unica risorsa supportata è la GPU.    
`type`  
Tipo: stringa  
Obbligatorio: sì  
Il tipo di risorsa da assegnare a un container. Il valore supportato è `GPU`.  
`value`  
Tipo: stringa  
Obbligatorio: sì  
Il valore per il tipo di risorsa specificato.  
Se si utilizza il tipo `GPU`, il valore è il numero di `GPUs` fisiche che l'agente del container Amazon ECS prenota per il container. Il numero di GPUs quelli riservati a tutti i contenitori di un'attività non può superare il numero di quelli disponibili GPUs sull'istanza del contenitore su cui viene avviata l'attività.  
GPUs non sono disponibili per le attività in esecuzione su Fargate.

#### Timeout container
<a name="container_definition_timeout-managed-instances"></a>

`startTimeout`  
Tipo: Integer  
Obbligatorio: no  
Valori di esempio: `120`  
Tempo di attesa (in secondi) prima di rinunciare a risolvere le dipendenze per un container.  
Ad esempio, vengono specificati due container in una definizione di attività: `containerA` ha una dipendenza sul `containerB` quando raggiunge lo stato `COMPLETE`, `SUCCESS` o `HEALTHY`. Se per `containerB` è specificato un valore `startTimeout` e non raggiunge lo stato desiderato entro tale periodo di tempo, allora `containerA` non viene avviato.  
Se un container non soddisfa un vincolo di dipendenza o si verifica un timeout prima di rispondere al vincolo, Amazon ECS non avanza i container dipendenti allo stato successivo.
Il valore massimo è 600 secondi (10 minuti).

`stopTimeout`  
Tipo: Integer  
Obbligatorio: no  
Valori di esempio: `120`  
Durata (in secondi) di attesa prima che sia forzata la chiusura se il container non si arresta da solo normalmente.  
Se il parametro non è specificato, viene utilizzato il valore predefinito di 30 secondi. Il valore massimo è di 86.400 secondi (24 ore).

#### Dipendenze per i container
<a name="container_definition_dependency-managed-instances"></a>

`dependsOn`  
Tipo: matrice di oggetti [ContainerDependency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html)  
Obbligatorio: no  
Le dipendenze definite per l'avvio e la chiusura dei container. Un contenitore può contenere più dipendenze. Se una dipendenza è definita per l'avvio del container, per la sua chiusura è invertita. Per un esempio, consulta [Dipendenze per i container](example_task_definitions.md#example_task_definition-containerdependency).  
Se un container non soddisfa un vincolo di dipendenza o si verifica un timeout prima di rispondere al vincolo, Amazon ECS non avanza i container dipendenti allo stato successivo.
Questo parametro richiede che l'attività o il servizio utilizzi la versione della piattaforma `1.3.0` o successive (Linux) o `1.0.0` (Windows).  

```
"dependsOn": [
    {
        "containerName": "string",
        "condition": "string"
    }
]
```  
`containerName`  
Tipo: stringa  
Obbligatorio: sì  
Il nome del container che deve soddisfare la condizione specificata.  
`condition`  
Tipo: stringa  
Obbligatorio: sì  
La condizione di dipendenza del container. Di seguito sono elencate le condizioni disponibili e il loro comportamento:  
+ `START`: questa condizione emula il comportamento dei collegamenti e dei volumi. La condizione convalida l'avvio di un container dipendente prima di consentire l'avvio di altri container.
+ `COMPLETE`: questa condizione verifica l'esecuzione fino al completamento (uscita) di un container dipendente prima di consentire l'avvio di altri container. Può rivelarsi utile per container non essenziali che eseguono uno script e quindi escono. Questa condizione non può essere impostata su un container essenziale.
+ `SUCCESS`: questa condizione è uguale a `COMPLETE`, ma richiede anche che il container esca con stato `zero`. Questa condizione non può essere impostata su un container essenziale.
+ `HEALTHY`: questa condizione verifica che il container dipendente superi il controllo dell'integrità del container prima di consentire l'avvio di altri container. Ciò richiede che per il container dipendente siano configurati i controlli dell'integrità nella definizione di attività. Questa condizione è confermata solo all'avvio dell'attività.

#### Controlli di sistema
<a name="container_definition_systemcontrols-managed-instances"></a>

`systemControls`  
Tipo: oggetto [SystemControl](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SystemControl.html)  
Obbligatorio: no  
Un elenco di parametri kernel associati a un namespace da impostare nel container. Questo parametro è mappato a `Sysctls` nella creazione container del comando del docker e l'opzione `--sysctl` per docker run. Ad esempio, puoi configurare l'impostazione `net.ipv4.tcp_keepalive_time` per mantenere le connessioni di lunga durata.  
Non è consigliabile specificare i parametri `systemControls` correlati alla rete per più container in un'unica attività che utilizza anche la modalità di rete `awsvpc` o `host`. Ciò comporta i seguenti svantaggi:  
+ Se sono stati impostati `systemControls` per qualsiasi container, si applicano a tutti i container nell'attività. Se sono stati impostati diversi `systemControls` per più container in un'unica attività, il container che viene avviato per ultimo determina quale `systemControls` diventa effettivo.
Se stai impostando un namespace della risorsa IPC per utilizzare i container nell'attività, ai controlli di sistema si applicano le seguenti condizioni. Per ulteriori informazioni, consulta [Modalità IPC](task_definition_parameters.md#task_definition_ipcmode).  
+ Per le attività che utilizzano la modalità `host` IPC, i valori `systemControls` del namespace IPC non sono supportati.
+ Per le attività che utilizzano la modalità IPC `task`, i valori di `systemControls` del namespace IPC si applicano a tutti i container all'interno di un'attività.

```
"systemControls": [
    {
         "namespace":"string",
         "value":"string"
    }
]
```  
`namespace`  
▬Tipo: stringa  
Obbligatorio: no  
Il parametro kernel associato a un namespace per il quale impostare un parametro `value`.  
Valori del namespace IPC validi: `"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"` e `Sysctls` che iniziano con `"fs.mqueue.*"`  
Valori dello namespace di rete validi: `Sysctls` che iniziano con `"net.*"`. In Fargate, vengono accettati solo i namespace `Sysctls` esistenti all'interno del container.  
Tutti questi valori sono supportati da Fargate.  
`value`  
▬Tipo: stringa  
Obbligatorio: no  
Il valore per il parametro kernel associato a un namespace specificato in `namespace`.

#### Interactive
<a name="container_definition_interactive-managed-instances"></a>

`interactive`  
Tipo: Booleano  
Obbligatorio: no  
Quando questo parametro è `true`, puoi implementare le applicazioni containerizzate che richiedono l'allocazione di `stdin` o `tty`. Questo parametro è mappato a `OpenStdin` nella creazione container del comando del docker e l'opzione `--interactive` per docker run.  
Il valore predefinito è `false`.

#### Pseudoterminale
<a name="container_definition_pseudoterminal-managed-instances"></a>

`pseudoTerminal`  
Tipo: Booleano  
Obbligatorio: no  
Quando il parametro è `true`, è allocato un TTY. Questo parametro è mappato a `Tty` nella creazione container del comando del docker e l'opzione `--tty` per docker run.  
Il valore predefinito è `false`.

### Parametri Linux
<a name="container_definition_linuxparameters-managed-instances"></a>

`linuxParameters`  
Tipo: oggetto [LinuxParameters](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LinuxParameters.html)  
Obbligatorio: no  
Le modifiche specifiche di Linux che vengono applicate al container, ad esempio le funzionalità kernel Linux.    
`capabilities`  
Tipo: oggetto [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html)  
Obbligatorio: no  
La funzionalità di Linux per il container che vengono aggiunte alla configurazione predefinita fornita da Docker o eliminate da questa.  
`devices`  
Tipo: matrice di oggetti [Device](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Device.html)  
Obbligatorio: no  
Qualsiasi dispositivi host da esporre nel container. Questo parametro è mappato a `Devices` nella creazione container del comando del docker e l'opzione `--device` per docker run.  
`initProcessEnabled`  
Tipo: Booleano  
Obbligatorio: no  
Esegui un processo `init` nel container che inoltra segnali e raccoglie i processi. Questo parametro è mappato all'opzione `--init` su docker run.  
`maxSwap`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: Integer  
Obbligatorio: no  
La quantità totale di memoria di swap (in MiB) che un container può utilizzare. Questo parametro viene convertito nell'opzione `--memory-swap` in docker run dove il valore sarebbe la somma della memoria del container più il valore `maxSwap`.  
`swappiness`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: Integer  
Obbligatorio: no  
In questo modo è possibile ottimizzare il comportamento swappiness di memoria di un container. Un valore `swappiness` delle cause `0` per cui lo swap non avviene a meno che non sia assolutamente necessario. Un valore `swappiness` di `100` produrrà lo swap delle pagine in modo molto aggressivo. I valori validi sono numeri interi compresi tra `0` e `100`. Se il parametro `swappiness` non è specificato, viene utilizzato un valore predefinito `60`. Se non viene specificato un valore per `maxSwap`, questo parametro verrà ignorato. Questo parametro è mappato all'opzione `--memory-swappiness` su docker run.  
`sharedMemorySize`  
Questo parametro non è supportato per le attività eseguite su Istanze gestite Amazon ECS.
Tipo: Integer  
Obbligatorio: no  
Le dimensioni (in MiB) del volume `/dev/shm`. Questo parametro è mappato all'opzione `--shm-size` su docker run.  
`tmpfs`  
Tipo: matrice di oggetti [Tmpfs](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Tmpfs.html)  
Obbligatorio: no  
Percorso del container, opzioni di montaggio e dimensioni (in MiB) del montaggio del volume tmpfs. Questo parametro è mappato all'opzione `--tmpfs` su docker run.

# Parametri di definizione di attività Amazon ECS per Fargate
<a name="task_definition_parameters"></a>

Le definizioni delle attività sono suddivise in parti separate: la famiglia di attività, il ruolo dell'attività AWS Identity and Access Management (IAM), la modalità di rete, le definizioni dei contenitori, i volumi e i tipi di avvio. Le definizioni della famiglia e del container sono richieste in una definizione di attività. Al contrario, il ruolo dell'attività, la modalità di rete, i volumi e i tipi di avvio sono facoltativi.

Puoi utilizzare questi parametri in un file JSON per configurare la definizione del processo.

Di seguito sono riportate descrizioni più dettagliate per ogni parametro di definizione delle attività per Fargate.

## Family
<a name="family"></a>

`family`  
Tipo: stringa  
Obbligatorio: sì  
Quando registri una definizione di attività, le assegni una famiglia, ovvero una sorta di nome per più versioni della definizione di attività, specificando un numero di revisione. Alla prima definizione di attività registrata in una determinata famiglia viene assegnato il numero di revisione 1 e a qualsiasi definizione di attività registrata successivamente viene assegnato un numero di revisione sequenziale.

## Capacity
<a name="requires_compatibilities"></a>

Quando si registra una definizione di attività, è possibile specificare la capacità che Amazon ECS deve convalidare per tale definizione. Se la definizione di attività non viene convalidata in base alle compatibilità specificate, viene restituita un'eccezione client. 

Il parametro seguente è permesso in una definizione di attività.

`requiresCompatibilities`  
Tipo: array di stringhe  
Obbligatorio: no  
Valori validi: `FARGATE`  
La capacità per la quale è stata convalidata la definizione di attività. In questo modo viene avviato un controllo per garantire che tutti i parametri utilizzati nella definizione di attività soddisfino i requisiti di Fargate.

## Ruolo del processo
<a name="task_role_arn"></a>

`taskRoleArn`  
▬Tipo: stringa  
Obbligatorio: no  
Quando registri una definizione di attività, puoi fornire un ruolo di attività per un ruolo IAM che consenta ai contenitori inclusi nell'attività di chiamare per tuo conto i dati specificati nelle politiche associate. AWS APIs Per ulteriori informazioni, consulta [Ruolo IAM dell'attività Amazon ECS](task-iam-roles.md).

## Ruolo per l'esecuzione del processo
<a name="execution_role_arn"></a>

`executionRoleArn`  
Tipo: String  
Obbligatorio: condizionale  
L'Amazon Resource Name (ARN) del ruolo di esecuzione dell'attività che concede all'agente container Amazon ECS l'autorizzazione a effettuare chiamate AWS API per tuo conto.   
Il ruolo IAM di esecuzione del processo è richiesto in base ai requisiti del processo. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).

## Modalità di rete
<a name="network_mode"></a>

`networkMode`  
Tipo: stringa  
Obbligatorio: sì  
La modalità di rete Docker da utilizzare per i container nel processo. Per i processi Amazon ECS ospitati su Fargate, è necessaria la modalità di rete `awsvpc`.

## Piattaforma di runtime
<a name="runtime-platform"></a>

`operatingSystemFamily`  
Tipo: String  
Obbligatorio: condizionale  
Di default: LINUX  
Questo parametro è richiesto per le attività Amazon ECS ospitate su Fargate.  
Quando registri una definizione di attività, devi specificare la famiglia del sistema operativo.   
I valori validi sono `LINUX`, `WINDOWS_SERVER_2025_FULL`, `WINDOWS_SERVER_2025_CORE`, `WINDOWS_SERVER_2022_FULL`, `WINDOWS_SERVER_2022_CORE`, `WINDOWS_SERVER_2019_FULL` e `WINDOWS_SERVER_2019_CORE`.  
Tutte le definizioni di attività utilizzate in un servizio devono avere lo stesso valore per questo parametro.  
Quando una definizione di attività fa parte di un servizio, questo valore deve corrispondere al valore `platformFamily` del servizio.

`cpuArchitecture`  
Tipo: String  
Obbligatorio: condizionale  
Valore di default: X86\$164  
Se il parametro viene lasciato come `null`, il valore predefinito viene assegnato automaticamente all'avvio di un'attività ospitata su Fargate.  
Quando registri una definizione di attività, devi specificare l'architettura della CPU. I valori validi sono `X86_64` e `ARM64`.  
Tutte le definizioni di attività utilizzate in un servizio devono avere lo stesso valore per questo parametro.  
Quando si dispone di attività Linux, è possibile impostare il valore su `ARM64`. Per ulteriori informazioni, consulta [Definizioni di attività Amazon ECS per carichi di lavoro ARM a 64 bit](ecs-arm64.md).

## Dimensioni processo
<a name="task_size"></a>

Quando registri una definizione di attività, puoi specificare la quantità totale di CPU e memoria utilizzata per l'attività. Questo valore è separato dai valori `cpu` e `memory` a livello di definizione del container. Per le attività ospitate su Fargate (sia Linux sia Windows), questi campi sono obbligatori e sono supportati valori specifici per `cpu` e `memory`.

Il parametro seguente è permesso in una definizione di attività:

`cpu`  
Tipo: stringa  
Obbligatorio: sì  
I parametri di CPU e memoria a livello di attività sono obbligatori e utilizzati per determinare il tipo e la dimensione dell'istanza su cui vengono eseguite le attività. Per le attività Windows, questi valori non vengono applicati durante il runtime, poiché Windows non dispone di un meccanismo nativo in grado di imporre facilmente limiti collettivi di risorse su un gruppo di container. Se si desidera applicare i limiti delle risorse, consigliamo di utilizzare le risorse a livello di container per quelli di Windows.
Il limite rigido di unità CPU da presentare per il processo. Puoi specificare i valori della CPU nel file JSON come stringa in unità CPU o in modalità virtuale CPUs (v). CPUs Ad esempio, è possibile specificare un valore di CPU come `1024` in unità CPU o `1 vCPU` in vCPUs. Quando la definizione dell'attività viene registrata, un valore vCPU viene convertito in un numero intero che indica le unità CPU.  
Questo campo è obbligatorio ed è necessario utilizzare uno dei seguenti valori che determina l'intervallo di valori validi per il parametro `memory`. La tabella seguente illustra le combinazioni valide di CPU e memoria a livello di attività.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/task_definition_parameters.html)

`memory`  
Tipo: stringa  
Obbligatorio: sì  
I parametri di CPU e memoria a livello di attività sono obbligatori e utilizzati per determinare il tipo e la dimensione dell'istanza su cui vengono eseguite le attività. Per le attività Windows, questi valori non vengono applicati durante il runtime, poiché Windows non dispone di un meccanismo nativo in grado di imporre facilmente limiti collettivi di risorse su un gruppo di container. Se si desidera applicare i limiti delle risorse, consigliamo di utilizzare le risorse a livello di container per quelli di Windows.
Il limite rigido di memoria da presentare al processo. È possibile specificare i valori di memoria nella definizione dell'attività come stringa in mebibytes (MiB) o gigabytes (GB). Ad esempio, è possibile specificare un valore di memoria `3072` in MiB o `3 GB` in GB. Quando la definizione di attività è registrata, un valore GB viene convertito in un numero intero che indica il MiB.  
Questo campo è obbligatorio ed è necessario utilizzare uno dei seguenti valori che determina l'intervallo di valori validi per il parametro `cpu`:      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/AmazonECS/latest/developerguide/task_definition_parameters.html)

## Definizioni del container
<a name="container_definitions"></a>

Quando registri una definizione di attività, devi specificare un elenco di definizioni del container che vengono trasmesse al daemon Docker in un'istanza di container. I seguenti parametri sono consentiti in una definizione del container.

**Topics**
+ [

### Parametri standard di definizione del container
](#standard_container_definition_params)
+ [

### Parametri avanzati di definizione del container
](#advanced_container_definition_params)
+ [

### Altri parametri di definizione del container
](#other_container_definition_params)

### Parametri standard di definizione del container
<a name="standard_container_definition_params"></a>

I seguenti parametri di definizione di attività sono obbligatori o utilizzati nella maggior parte delle definizioni del container.

**Topics**
+ [

#### Nome
](#container_definition_name)
+ [

#### Immagine
](#container_definition_image)
+ [

#### Memoria
](#container_definition_memory)
+ [

#### Mappature di porte
](#container_definition_portmappings)
+ [

#### Credenziali del repository privato
](#container_definition_repositoryCredentials)

#### Nome
<a name="container_definition_name"></a>

`name`  
Tipo: stringa  
Obbligatorio: sì  
Il nome di un container. Sono consentiti fino a 255 lettere (maiuscole e minuscole), numeri, trattini e trattini bassi. Se colleghi più container in una definizione di attività, il parametro `name` di uno dei container può essere inserito nel parametro `links` di un altro container. Questo per collegare i container.

#### Immagine
<a name="container_definition_image"></a>

`image`  
Tipo: stringa  
Obbligatorio: sì  
L'immagine utilizzata per avviare un container. Questa stringa viene trasmessa direttamente al daemon Docker. Per impostazione predefinita, le immagini nel registro Docker Hub sono disponibili. Puoi anche specificare altri repository con `repository-url/image:tag` o `repository-url/image@digest`. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole); sono consentiti numeri, trattini, caratteri di sottolineatura, due punti, punti, barre e cancelletti. Questo parametro è mappato su `Image` nel comando creazione container e nel parametro `IMAGE` del docker di esecuzione del comando.  
+ Quando viene avviato un nuovo processo, l'agente del container Amazon ECS esegue il pull della versione più recente dell'immagine e del tag specificati per il container da utilizzare. Tuttavia, gli aggiornamenti successivi a un'immagine del repository non vengono propagate alle attività già in esecuzione.
+ Quando non specifichi un tag o un digest nel percorso dell'immagine nella definizione dell'attività, l'agente contenitore Amazon ECS utilizza il `latest` tag per estrarre l'immagine specificata. 
+  Gli aggiornamenti successivi a un'immagine del repository non vengono propagati alle attività già in esecuzione.
+ Le immagini nei registri privati sono supportate. Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).
+ Le immagini nei repository Amazon ECR possono essere specificate utilizzando la convenzione di denominazione `registry/repository:tag` o `registry/repository@digest`, ad esempio, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest` o `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE`.
+ Le immagini in repository ufficiali su Docker Hub utilizzano un singolo nome (ad esempio `ubuntu` o `mongo`).
+ Le immagini in altri repository su Docker Hub vengono qualificate con un nome di organizzazione (ad esempio, `amazon/amazon-ecs-agent`).
+ Le immagini in altri archivi online vengono ulteriormente qualificate da un nome di dominio (ad esempi, `quay.io/assemblyline/ubuntu`).

`versionConsistency`  
Tipo: String  
Valori validi: `enabled`\$1`disabled`  
Obbligatorio: no  
Specificare se Amazon ECS risolverà il tag dell'immagine del container fornito nella definizione del container in un digest di immagini. Per impostazione predefinita, questo comportamento è `enabled`. Se si imposta il valore per un container come `disabled`, Amazon ECS non risolverà il tag dell'immagine del container in un digest e utilizzerà l'URI dell'immagine originale specificato nella definizione del container per l'implementazione. Per ulteriori informazioni sulla risoluzione dell'immagine del container, consultare [Risoluzione dell’immagine del container](deployment-type-ecs.md#deployment-container-image-stability).

#### Memoria
<a name="container_definition_memory"></a>

`memory`  
Tipo: Integer  
Obbligatorio: no  
La quantità (in MiB) della memoria da presentare al container. Se il container tenta di superare la memoria specificata qui, viene terminato. La quantità totale di memoria prenotata per tutti i container all'interno di un processo deve essere inferiore al valore `memory` del processo, se specificato. Questo parametro è mappato a `Memory` nella creazione container del comando del docker e l'opzione `--memory` per docker run.  
Il daemon Docker 20.10.0 o versione successiva prenota un minimo di 6 MiB di memoria per un container. Pertanto, non specificare meno di 6 MiB di memoria per i container.  
Il daemon Docker 19.03.13-ce o versione precedente prenota un minimo di 4 MiB di memoria per un container. Pertanto, non specificare meno di 4 MiB di memoria per i container.  
Per ottimizzare l'utilizzo delle risorse, assegnando all'attività quanta più memoria possibile per un determinato tipo di istanza, consulta [Allocazione della memoria di un'istanza di container Amazon ECS Linux](memory-management.md).

`memoryReservation`  
Tipo: Integer  
Obbligatorio: no  
Il limite flessibile (in MiB) della memoria da prenotare per il container. Quando la memoria di sistema è in conflitto, Docker tenta di conservare la memoria del container entro questo limite flessibile. Tuttavia, il container può utilizzare una quantità maggiore di memoria, se necessario. Il container può utilizzare memoria fino al limite rigido specificato con il parametro `memory` (se applicabile) o tutta la memoria disponibile sull'istanza di container, a seconda di quale evento si verifica prima. Questo parametro è mappato a `MemoryReservation` nella creazione container del comando del docker e l'opzione `--memory-reservation` per docker run.  
Se non viene specificato un valore di memoria a livello di attività, è necessario specificare un numero intero diverso da zero per uno o entrambi i codici `memory` o `memoryReservation` in una definizione del container. Se specifichi entrambe, `memory` deve essere superiore a `memoryReservation`. Se specifichi `memoryReservation`, tale valore viene sottratto dalle risorse di memoria disponibili per l'istanza di container in cui il container viene posizionato. in caso contrario, viene utilizzato il valore `memory`.  
Ad esempio, supponiamo che il container normalmente utilizza 128 MiB di memoria, ma con picchi occasionali di 256 MiB di memoria per brevi periodi di tempo. Puoi impostare un valore di `memoryReservation` di 128 MiB e un limite rigido `memory` di 300 MiB. Questa configurazione consente al container di riservare 128 MiB di memoria solo dalle risorse restanti nell'istanza di container. Allo stesso tempo, questa configurazione consente al container di utilizzare più risorse di memoria quando necessario.  
Questo parametro non è supportato per i container Windows.
Il daemon Docker 20.10.0 o versione successiva prenota un minimo di 6 MiB di memoria per un container. Pertanto, non specificare meno di 6 MiB di memoria per i container.  
Il daemon Docker 19.03.13-ce o versione precedente prenota un minimo di 4 MiB di memoria per un container. Pertanto, non specificare meno di 4 MiB di memoria per i container.  
Per ottimizzare l'utilizzo delle risorse, assegnando all'attività quanta più memoria possibile per un determinato tipo di istanza, consulta [Allocazione della memoria di un'istanza di container Amazon ECS Linux](memory-management.md).

#### Mappature di porte
<a name="container_definition_portmappings"></a>

`portMappings`  
Tipo: array di oggetti  
Obbligatorio: no  
Le mappature delle porte espongono le porte di rete del container al mondo esterno. Ciò consente ai client di accedere all'applicazione. Viene anche utilizzato per la comunicazione tra container all'interno della stessa attività.  
Per le definizioni di attività che utilizzano la modalità di rete `awsvpc`, specifica solo il parametro `containerPort`. `hostPort` viene sempre ignorato e la porta del container viene mappata automaticamente su una casuale con numero alto sull'host.  
La mappatura delle porte su Windows usa l’indirizzo gateway `NetNAT` anziché `localhost`. Non vi è alcun loopback per le mappature delle porte su Windows, perciò non è possibile accedere alla porta mappata di un container dall'host stesso.   
La maggior parte dei campi di questo parametro (inclusi `containerPort`, `hostPort` e `protocol`) è associata a `PortBindings` nella sezione creazione container del comando e l'opzione `--publish` per docker run. Se la modalità di rete di una definizione di attività è impostata su `host`, le porte host devono essere non definite o devono corrispondere alla porta del container nella mappatura della porta.  
Dopo che un processo raggiunge lo stato `RUNNING`, gli incarichi manuali e automatici relativi alle porte del container e dell'host sono visibili nelle posizioni seguenti:  
+ Console: sezione **Binding di rete** della descrizione di un container per un processo selezionato.
+ AWS CLI: la sezione `networkBindings` dell'output del comando **describe-tasks**.
+ API: risposta `DescribeTasks`.
+ Metadati: l'endpoint dei metadati dell'attività.  
`appProtocol`  
▬Tipo: stringa  
Obbligatorio: no  
Il protocollo dell'applicazione utilizzato per la mappatura delle porte. Questo parametro si applica solo a Service Connect. Ti consigliamo di impostare questo parametro in maniera coerente con il protocollo utilizzato dall'applicazione. Se imposti questo parametro, Amazon ECS aggiunge la gestione delle connessioni specifica del protocollo al proxy Service Connect. Se imposti questo parametro, Amazon ECS aggiunge la telemetria specifica del protocollo nella console Amazon ECS e. CloudWatch  
Se non imposti un valore per questo parametro, viene utilizzato TCP. Amazon ECS, tuttavia, non aggiunge la telemetria specifica del protocollo TCP.  
Per ulteriori informazioni, consulta [Usa Service Connect per connettere i servizi Amazon ECS con nomi brevi](service-connect.md).  
Valori di protocollo validi: `"http" | "http2" | "grpc" `  
`containerPort`  
Tipo: numero intero  
Obbligatorio: sì, quando si utilizzano `portMappings`  
Il numero di porta nel container associato alla porta dell'host definito dall'utente o assegnata automaticamente.  
Per le attività che utilizzano la modalità di rete `awsvpc`, utilizzare `containerPort` per specificare le porte esposte.  
Per i container Windows su Fargate, non è possibile utilizzare la porta 3150 per `containerPort`. Questo perché la porta è riservata.  
`containerPortRange`  
▬Tipo: stringa  
Obbligatorio: no  
L'intervallo dei numeri di porta nel container associato all'intervallo di porte host mappato in maniera dinamica.   
È possibile impostare questo parametro solo utilizzando l'API `register-task-definition`. L'opzione è disponibile nel parametro `portMappings`. Per ulteriori informazioni, consulta [register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html) nella *documentazione di riferimento AWS Command Line Interface *.  
Quando specifichi un `containerPortRange`, si applicano le seguenti regole:  
+ È necessario utilizzare la modalità di rete `awsvpc`.
+ Questo parametro è disponibile per sistemi operativi sia Linux che Windows.
+ L'istanza di container deve avere almeno la versione 1.67.0 dell'agente del container e almeno la versione 1.67.0-1 del pacchetto `ecs-init`.
+ Puoi specificare fino a 100 intervalli di porte per container.
+ Non specificare un `hostPortRange`. Il valore dell'`hostPortRange` è impostato come indicato di seguito:
  + Per i container in un'attività con la modalità di rete `awsvpc`, la `hostPort` è impostata sullo stesso valore della `containerPort`. Questa è una strategia di mappatura statica.
+ I valori validi di `containerPortRange` sono compresi tra 1 e 65535.
+ Una porta può essere inclusa solo in una sola mappatura delle porte per ogni container.
+ Non puoi specificare intervalli di porte sovrapposti.
+ La prima porta nell'intervallo deve essere minore dell'ultima porta nell'intervallo.
+ Docker consiglia di disattivare il proxy docker nel file di configurazione del daemon Docker quando disponi di un numero elevato di porte.

  [Per ulteriori informazioni, consulta il numero \$111185 su.](https://github.com/moby/moby/issues/11185) GitHub

  Per informazioni sulla modalità di disattivazione del proxy docker nel file di configurazione del daemon Docker, consulta [Daemon Docker](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon) nella *Guida per lo sviluppatore di Amazon ECS*.
Puoi effettuare la chiamata a [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) per visualizzare l'`hostPortRange`, cioè le porte dell'host associate alle porte del container.  
Gli intervalli di porte non sono inclusi negli eventi delle attività di Amazon ECS, a EventBridge cui vengono inviati. Per ulteriori informazioni, consulta [Automatizza le risposte agli errori di Amazon ECS utilizzando EventBridge](cloudwatch_event_stream.md).  
`hostPortRange`  
▬Tipo: stringa  
Obbligatorio: no  
L'intervallo di numeri di porta sull'host utilizzato con il collegamento di rete. Questo viene assegnato da Docker e consegnato dall'agente Amazon ECS.  
`hostPort`  
Tipo: Integer  
Obbligatorio: no  
Il numero di porta nell'istanza di container per prenotare per il container.  
`hostPort` può essere lasciato vuoto o deve essere lo stesso valore di `containerPort`.  
L'intervallo di porte temporanee predefinite per Docker versione 1.6.0 e successive è elencato nell'istanza in `/proc/sys/net/ipv4/ip_local_port_range`. Se questo parametro kernel non è disponibile, viene utilizzato l'intervallo delle porte temporaneo di default da `49153–65535`. Non tentare di specificare una porta dell'host nell'intervallo di porte effimere. Questo perché sono riservate per l'assegnazione automatica. In generale, le porte al di sotto di `32768` non rientrano nell'intervallo delle porte temporanee.   
Le porte prenotate di default sono `22` per SSH, le porte Docker `2375` e `2376` e le porte `51678-51680` dell'agente del container di Amazon ECS. Qualsiasi porta dell'host precedentemente specificata dall'utente per un'attività in esecuzione viene prenotata anche mentre tale attività è in esecuzione. Dopo l'arresto di un'attività, la porta dell'host viene rilasciata. Le porte prenotate correnti vengono visualizzate nel parametro `remainingResources` dell'output **describe-container-instances**. Un'istanza di container può contenere fino a 100 porte prenotate alla volta, incluse quelle predefinite. Le porte assegnate automaticamente non vengono conteggiate ai fini della quota di 100 porte prenotate.  
`name`  
Tipo: String  
Obbligatorio: no, necessario per configurare Service Connect e VPC Lattice in un servizio  
Il nome utilizzato per la mappatura delle porte. Questo parametro si applica solo a Service Connect e VPC Lattice. Questo parametro è il nome utilizzato nella configurazione di Service Connect e VPC Lattice di un servizio.  
Per ulteriori informazioni, consulta [Usa Service Connect per connettere i servizi Amazon ECS con nomi brevi](service-connect.md).  
Nell'esempio seguente, vengono visualizzati entrambi i campi obbligatori per Service Connect e VPC Lattice.  

```
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]
```  
`protocol`  
▬Tipo: stringa  
Obbligatorio: no  
Il protocollo utilizzato per la mappatura delle porte. I valori validi sono `tcp` e `udp`. Il valore predefinito è `tcp`.  
È supportato solo `tcp` per Service Connect. Ricorda che `tcp` è implicito se questo campo non è impostato. 
Se specifichi una porta dell'host, utilizza la seguente sintassi.  

```
"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]
```
Se desideri una porta dell'host assegnata automaticamente, utilizza la seguente sintassi.  

```
"portMappings": [
    {
        "containerPort": integer
    }
    ...
]
```

#### Credenziali del repository privato
<a name="container_definition_repositoryCredentials"></a>

`repositoryCredentials`  
Tipo: oggetto [RepositoryCredentials](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RepositoryCredentials.html)  
Obbligatorio: no  
Le credenziali dell'archivio per l'autenticazione di un registro privato.  
Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).    
 `credentialsParameter`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `repositoryCredentials`  
L'Amazon Resource Name (ARN) del segreto contenente le credenziali dell'archivio privato.  
Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).  
Quando utilizzi l'API Amazon ECS o AWS SDKs se il segreto esiste nella stessa regione dell'attività che stai avviando, puoi utilizzare l'ARN completo o il nome del segreto. AWS CLI Quando si utilizza il Console di gestione AWS, è necessario specificare l'ARN completo del segreto.
Di seguito viene riportato un frammento di una definizione di attività che mostra i parametri obbligatori:  

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

### Parametri avanzati di definizione del container
<a name="advanced_container_definition_params"></a>

I seguenti parametri avanzati di definizione del container forniscono funzionalità estese al comando di esecuzione del docker che viene utilizzato per lanciare container nelle istanze di container di Amazon ECS.

**Topics**
+ [

#### Politica di riavvio
](#container_definition_restart_policy)
+ [

#### Controllo dell’integrità
](#container_definition_healthcheck)
+ [

#### Ambiente
](#container_definition_environment)
+ [

#### Impostazioni di rete
](#container_definition_network)
+ [

#### Archiviazione e registrazione
](#container_definition_storage)
+ [

#### Sicurezza
](#container_definition_security)
+ [

#### Limiti delle risorse
](#container_definition_limits)
+ [

#### Etichette Docker
](#container_definition_labels)

#### Politica di riavvio
<a name="container_definition_restart_policy"></a>

`restartPolicy`  
La politica di riavvio del container e i parametri di configurazione associati. Quando configuri una politica di riavvio per un container, Amazon ECS può riavviare il container senza dover sostituire l'attività. Per ulteriori informazioni, consulta [Riavviare singoli container nelle attività Amazon ECS con policy di riavvio dei container](container-restart-policy.md).    
`enabled`  
Tipo: Booleano  
Obbligatorio: sì  
Specificare se è abilitata una politica di riavvio per il container.  
`ignoredExitCodes`  
Tipo: array di numeri interi  
Obbligatorio: no  
Un elenco di codici di uscita che Amazon ECS ignorerà e non tenterà di riavviare. È possibile specificare fino a 50 codici di uscita dei container. Per impostazione predefinita, Amazon ECS non ignora alcun codice di uscita.  
`restartAttemptPeriod`  
Tipo: Integer  
Obbligatorio: no  
Un periodo di tempo (in secondi) durante il quale il container deve essere eseguito prima che venga tentato un riavvio. Un container può essere riavviato solo una volta ogni `restartAttemptPeriod` secondi. Se un container non è in grado di funzionare per questo periodo di tempo ed esce in anticipo, non verrà riavviato. È possibile specificare un `restartAttemptPeriod` minimo di 60 secondi e un `restartAttemptPeriod` massimo di 1.800 secondi. Per impostazione predefinita, un container deve funzionare per 300 secondi prima di poter essere riavviato.

#### Controllo dell’integrità
<a name="container_definition_healthcheck"></a>

`healthCheck`  
Comando di controllo dell'integrità del container e parametri di configurazione associati per il container. Per ulteriori informazioni, consulta [Determina lo stato delle attività di Amazon ECS utilizzando i controlli dell’integrità dei container](healthcheck.md).    
`command`  
Matrice di stringhe che rappresenta il comando eseguito dal container per determinare l'integrità. La matrice di stringhe può iniziare con `CMD` per eseguire direttamente gli argomenti del comando oppure con `CMD-SHELL` per eseguire il comando con la shell predefinita del container. Se non è specificato nessuno dei due, viene utilizzato `CMD`.  
Quando si registra una definizione di attività in Console di gestione AWS, utilizzare un elenco di comandi separati da virgole. Questi comandi vengono convertiti in stringa dopo la creazione della definizione delle attività. Di seguito è riportato un esempio di input per il controllo dell'integrità.  

```
CMD-SHELL, curl -f http://localhost/ || exit 1
```
Quando si registra una definizione di attività utilizzando il pannello Console di gestione AWS JSON, o il AWS CLI APIs, racchiude l'elenco dei comandi tra parentesi. Di seguito è riportato un esempio di input per il controllo dell'integrità.  

```
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
```
Un codice di uscita 0, senza output `stderr`, indica l'esito positivo, mentre un codice di uscita diverso da zero indica un errore.   
`interval`  
Intervallo di tempo (in secondi) tra ogni controllo dell'integrità. Puoi specificare un valore compreso tra 5 e 300 secondi. Il valore di predefinito è 30 secondi.  
`timeout`  
Periodo di tempo in secondi per cui attendere che un controllo dell'integrità venga superato prima di considerarlo un errore. Puoi specificare un valore compreso tra 2 e 60 secondi. Il valore predefinito è 5 secondi.  
`retries`  
Numero di tentativi per cui riprovare un controllo dello stato non riuscito prima che il container venga considerato non integro. Puoi specificare un valore compreso tra 1 e 10 tentativi. Il valore predefinito è tre tentativi.  
`startPeriod`  
Periodo di tolleranza facoltativo entro il quale concedere ai container il tempo necessario per il bootstrap prima che i controlli dell'integrità non riusciti vengano conteggiati rispetto al numero massimo di nuovi tentativi. È possibile specificare un valore compreso tra 0 e 300 secondi. Per impostazione predefinita, `startPeriod` è disabilitato.  
Se un controllo dello stato va a buon fine all'interno di `startPeriod`, il container è considerato integro e gli errori successivi vengono conteggiati rispetto al numero massimo di nuovi tentativi.

#### Ambiente
<a name="container_definition_environment"></a>

`cpu`  
Tipo: Integer  
Obbligatorio: no  
Il numero di unità `cpu` che l'agente del container Amazon ECS riserverà per il container. Su Linux, questo parametro è mappato a `CpuShares` nella sezione [Creazione di un container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate).  
Questo campo è facoltativo solo per le attività che utilizzano Fargate. La quantità totale di CPU riservata per tutti i container all'interno di un'attività deve essere inferiore al valore `cpu` a livello di attività.  
I container Linux condividono unità CPU non assegnate con altri container nell'istanza di container con lo stesso rapporto della quantità assegnata. Ad esempio, supponiamo di eseguire un'attività di container singolo in un tipo di istanza single core con 512 unità di CPU specificate per tale container. Inoltre, tale attività è l'unica in esecuzione sull'istanza di container. In questo esempio, il container può utilizzare la condivisione completa di 1.024 unità CPU in qualsiasi momento. Tuttavia, si supponga di aver avviato un'altra copia della stessa attività su quell'istanza di container. A ogni attività viene garantito un minimo di 512 unità CPU quando necessario. Analogamente, se l'altro container non utilizza la CPU rimanente, ogni container può passare a un maggiore utilizzo della CPU. Tuttavia, se entrambe le attività sono sempre attive al 100%, sono limitate a 512 unità CPU.  
Sulle istanze di container Linux, il daemon Docker nell'istanza di container utilizza il valore CPU per calcolare i relativi rapporti di quote di CPU per i container in esecuzione. Il valore minimo valido per la quota di CPU ammesso dal kernel Linux è 2, mentre quello massimo valido per la quota di CPU ammesso dal kernel Linux è 262.144. Tuttavia, il parametro CPU non è obbligatorio e puoi usare valori di CPU minori di 2 e superiori a 262.144 nelle definizioni del container. Per i valori di CPU minori di 2 (incluso un valore null) e superiori a 262.144, il comportamento varia in base alla versione dell'agente del container Amazon ECS:  
Sulle istanze di container Windows, la quota di CPU viene applicata come assoluta. I container Windows hanno accesso solo alla quantità di CPU specificata nella definizione delle attività. Un valore di CPU null o zero viene trasmesso a Docker come `0`, che Windows interpreta come l'1% di una CPU.  
Per ulteriori esempi, consulta [Modalità di gestione delle risorse di CPU e memoria di Amazon ECS](https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/).

`gpu`  
Questo parametro non è supportato per i container ospitati su Fargate.  
Tipo: oggetto [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Obbligatorio: no  
Il numero di `GPUs` fisiche che l'agente del container Amazon ECS riserva per il container. Il numero di contenitori GPUs riservati per tutti i contenitori di un'attività non deve superare il numero di disponibili GPUs sull'istanza del contenitore su cui viene avviata l'attività. Per ulteriori informazioni, consulta [Definizioni di attività Amazon ECS per carichi di lavoro GPU](ecs-gpu.md).

`Elastic Inference accelerator`  
Questo parametro non è supportato per i container ospitati su Fargate.  
Tipo: oggetto [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Obbligatorio: no  
Per il tipo `InferenceAccelerator`, il `value` corrisponde a `deviceName` per un `InferenceAccelerator` specificato in una definizione di attività. Per ulteriori informazioni, consulta [Nome dell'acceleratore Elastic Inference (obsoleto)](#elastic-Inference-accelerator).

`essential`  
Tipo: Booleano  
Obbligatorio: no  
Si supponga che il parametro `essential` di un container sia contrassegnato come `true` e che tale container abbia esito negativo o si arresti per qualsiasi motivo. Di conseguenza, tutti gli altri container che fanno parte dell'attività vengono arrestati. Se il parametro `essential` di un container è contrassegnato come `false`, il suo esito negativo non influenza il resto dei container in un'attività. Se questo parametro viene omesso, un container si considera essenziale.  
Tutti i processi devono avere almeno un container essenziale. Supponiamo di avere un'applicazione composta da più container. In questo caso, si raggruppano i container utilizzati per uno scopo comune in componenti e si separano i diversi componenti in più definizioni delle attività. Per ulteriori informazioni, consulta [Progetta la tua applicazione per Amazon ECS](application_architecture.md).  

```
"essential": true|false
```

`entryPoint`  
Le versioni precedenti dell'agente del container Amazon ECS non gestiscono correttamente i parametri `entryPoint`. In caso di problemi durante l'utilizzo `entryPoint`, aggiorna l'agente del container o inserisci i comandi e gli argomenti come elementi di matrice `command`.
Tipo: array di stringhe  
Obbligatorio: no  
Il punto di ingresso che viene trasmesso al container.   

```
"entryPoint": ["string", ...]
```

`command`  
Tipo: array di stringhe  
Obbligatorio: no  
Il comando che viene inviato al container. Questo parametro è mappato a `Cmd` nella creazione container del comando e il parametro `COMMAND` per docker run. In caso di più argomenti, ognuno di questi deve essere una stringa separata nella matrice.  

```
"command": ["string", ...]
```

`workingDirectory`  
▬Tipo: stringa  
Obbligatorio: no  
La directory di lavoro nel container in cui eseguire i comandi. Questo parametro è mappato a `WorkingDir` nella sezione [Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) di [Docker Remote API](https://docs.docker.com/reference/api/engine/version/v1.38/) e l'opzione `--workdir` a [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).  

```
"workingDirectory": "string"
```

`environmentFiles`  
Non è disponibile per i contenitori Windows su Fargate.  
Tipo: array di oggetti  
Obbligatorio: no  
Un elenco di file contenenti le variabili di ambiente da passare a un container. Questo parametro è mappato all'opzione `--env-file` al comando esecuzione del docker.  
Puoi specificare fino a 10 file di ambiente. Il file deve avere un'estensione `.env`. Ogni riga di un file di ambiente deve contenere una variabile di ambiente nel formato `VARIABLE=VALUE`. Le righe che iniziano con `#` vengono trattate come commenti e vengono ignorate.   
Se nella definizione del container sono specificate singole variabili di ambiente, hanno la precedenza sulle variabili contenute in un file di ambiente. Se vengono specificati più file di ambiente che contengono la stessa variabile, vengono elaborati dall'alto verso il basso. Consigliamo di utilizzare nomi di variabili univoci. Per ulteriori informazioni, consulta [Passare una singola variabile di ambiente a un container Amazon ECS](taskdef-envfiles.md).    
`value`  
Tipo: stringa  
Obbligatorio: sì  
L'Amazon Resource Name (ARN) dell'oggetto Amazon S3 contenente il file della variabile di ambiente.  
`type`  
Tipo: stringa  
Obbligatorio: sì  
Il tipo di file da utilizzare L’unico valore supportato è `s3`.

`environment`  
Tipo: array di oggetti  
Obbligatorio: no  
Le variabili di ambiente da passare a un container. Questo parametro è mappato a `Env` nella creazione container del comando del docker e l'opzione `--env` al comando per docker run.  
Non è consigliabile utilizzare variabili di ambiente non crittografate per informazioni sensibili, ad esempio dati di credenziali.  
`name`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `environment`  
Il nome della variabile di ambiente.  
`value`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `environment`  
Il valore della variabile di ambiente.

```
"environment" : [
    { "name" : "string", "value" : "string" },
    { "name" : "string", "value" : "string" }
]
```

`secrets`  
Tipo: array di oggetti  
Obbligatorio: no  
Un oggetto che rappresenta il segreto da esporre al container. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipo: stringa  
Obbligatorio: sì  
Il valore da impostare come variabile di ambiente sul container.  
`valueFrom`  
Tipo: stringa  
Obbligatorio: sì  
Il segreto da esporre al container. I valori supportati sono l'Amazon Resource Name (ARN) completo del Gestione dei segreti AWS segreto o l'ARN completo del parametro nel Parameter Store. AWS Systems Manager   
Se il parametro Systems Manager Parameter Store o il parametro Secrets Manager esiste nella Regione AWS stessa operazione che si sta avviando, è possibile utilizzare l'ARN completo o il nome del segreto. Se il parametro esiste in una Regione diversa, deve essere specificato l'ARN completo.

```
"secrets": [
    {
        "name": "environment_variable_name",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }
]
```

#### Impostazioni di rete
<a name="container_definition_network"></a>

`disableNetworking`  
Questo parametro non è supportato per le attività eseguite su Fargate.  
Tipo: Booleano  
Obbligatorio: no  
Quando questo parametro è true, le reti sono disabilitate all'interno del container.  
Il valore predefinito è `false`.  

```
"disableNetworking": true|false
```

`links`  
Questo parametro non è supportato per le attività che utilizzano la modalità di rete `awsvpc`.  
Tipo: array di stringhe  
Obbligatorio: no  
Il parametro `link` consente ai container di comunicare tra loro senza la necessità di mappatura delle porte. Questo parametro è supportato solo se la modalità di rete di una definizione delle attività è impostata su `bridge`. Il costrutto `name:internalName` è analogo a `name:alias` nei collegamenti Docker. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini e trattini bassi.  
I container che vengono posizionati nella stessa istanza di container potrebbero comunicare tra loro senza necessità di collegamenti o mappature delle porte dell'host. L'isolamento di rete su un'istanza di container è controllato da gruppi di sicurezza e impostazioni VPC.

```
"links": ["name:internalName", ...]
```

`hostname`  
▬Tipo: stringa  
Obbligatorio: no  
Il nome host da utilizzare per il container. Questo parametro è mappato a `Hostname` nella creazione container del docker e l'opzione `--hostname` per docker run.  
Se utilizzi la modalità di rete `awsvpc`, il parametro `hostname` non è supportato.

```
"hostname": "string"
```

`dnsServers`  
Non è supportato per le attività eseguite su Fargate.  
Tipo: array di stringhe  
Obbligatorio: no  
Un elenco di server DNS presentato al container.  

```
"dnsServers": ["string", ...]
```

`extraHosts`  
Questo parametro non è supportato per le attività che utilizzano la modalità di rete `awsvpc`.  
Tipo: array di oggetti  
Obbligatorio: no  
Un elenco di nomi host e mappature di indirizzi IP da aggiungere al file `/etc/hosts` nel container.   
Questo parametro è mappato a `ExtraHosts` nella creazione container del comando del docker e l'opzione `--add-host` per docker run.  

```
"extraHosts": [
      {
        "hostname": "string",
        "ipAddress": "string"
      }
      ...
    ]
```  
`hostname`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `extraHosts`  
Il nome host da utilizzare nella voce `/etc/hosts`.  
`ipAddress`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `extraHosts`  
L'indirizzo IP da utilizzare nella voce `/etc/hosts`.

#### Archiviazione e registrazione
<a name="container_definition_storage"></a>

`readonlyRootFilesystem`  
Tipo: Booleano  
Obbligatorio: no  
Se il parametro è true, al container viene assegnato l'accesso in sola lettura al file system radice. Questo parametro è mappato a `ReadonlyRootfs` nella creazione container del comando del docker e l'opzione `--read-only` per docker run.  
Questo parametro non è supportato per i container Windows.
Il valore predefinito è `false`.  

```
"readonlyRootFilesystem": true|false
```

`mountPoints`  
Tipo: array di oggetti  
Obbligatorio: no  
I punti di montaggio per i volumi di dati nel container. Questo parametro è mappato ai `Volumes` nella creazione container dell'API Docker e l'opzione `--volume` per docker run.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`. I container Windows non possono montare le directory su un'unità diversa e i punti di montaggio non possono essere utilizzati tra le unità. È necessario specificare i punti di montaggio per collegare un volume Amazon EBS direttamente a un'attività Amazon ECS.    
`sourceVolume`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il nome del volume da montare.  
`containerPath`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il percorso nel container in cui verrà montato il volume.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.  
Per le attività su istanze EC2 che eseguono il sistema operativo Windows, lasciare il valore predefinito di `false`.

`volumesFrom`  
Tipo: array di oggetti  
Obbligatorio: no  
I volumi di dati da montare da un altro container. Questo parametro è mappato a `VolumesFrom` nella creazione container del comando del docker e l'opzione `--volumes-from` per docker run.    
`sourceContainer`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `volumesFrom`  
Il nome del container da cui montare volumi.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.

```
"volumesFrom": [
                {
                  "sourceContainer": "string",
                  "readOnly": true|false
                }
              ]
```

`logConfiguration`  
Tipo: oggetto [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)  
Obbligatorio: no  
La specifica di configurazione dei log per il container.  
Per definizioni dell'attività di esempio che utilizzano una configurazione di log, consulta [Esempio di definizione di attività di Amazon ECS](example_task_definitions.md).  
Questo parametro è mappato a `LogConfig` nella creazione container del comando del docker e l'opzione `--log-driver` per docker run. Per impostazione predefinita, i container utilizzano lo stesso driver di log utilizzato dal daemon Docker. Tuttavia, il container può utilizzare un driver di log diverso da quello del daemon Docker, specificando un driver di log con questo parametro nella definizione del container. Per utilizzare un altro driver di log per un container, il sistema di log deve essere configurato correttamente nell'istanza di container (o su un altro server di log per le opzioni di logging in remoto).   
Si noti quanto segue quando si specifica una configurazione di log per i container:  
+ Amazon ECS supporta un sottoinsieme dei driver di log disponibili per il daemon Docker.
+ Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull'istanza di container.
+ È necessario installare qualsiasi software aggiuntivo al di fuori dell'attività. Ad esempio, gli aggregatori di output Fluentd o un host remoto che esegue Logstash per inviare i log Gelf.

```
"logConfiguration": {
      "logDriver": "awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens",
      "options": {"string": "string"
        ...},
	"secretOptions": [{
		"name": "string",
		"valueFrom": "string"
	}]
}
```  
`logDriver`  
Tipo: String  
Valori validi: `"awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens"`  
Obbligatorio: sì, quando viene utilizzato `logConfiguration`  
Il driver di log da utilizzare per il container. Per impostazione predefinita, i valori validi elencati in precedenza sono driver di log con i quali l'agente del container Amazon ECS può comunicare.  
I driver di log supportati sono `awslogs`, `splunk` e `awsfirelens`.  
Per ulteriori informazioni su come utilizzare il driver di `awslogs` registro nelle definizioni delle attività per inviare i log dei contenitori a CloudWatch Logs, vedere. [Invia i log di Amazon ECS a CloudWatch](using_awslogs.md)  
Per ulteriori informazioni sull'utilizzo del driver di log `awsfirelens`, consulta [Routing di log personalizzato](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).  
Se disponi di un driver personalizzato che non è elencato, puoi eseguire il fork del progetto Amazon ECS Container Agent [disponibile su GitHub](https://github.com/aws/amazon-ecs-agent) e personalizzarlo in modo che funzioni con quel driver. Ti consigliamo di inviare le richieste pull per le modifiche che desideri siano incluse. Tuttavia, attualmente non forniamo il supporto per eseguire copie modificate di questo software.
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container.  
`options`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
La key/value mappa delle opzioni di configurazione da inviare al driver di registro.  
Le opzioni che è possibile specificare dipendono dal driver di log. Alcune delle opzioni che puoi specificare quando utilizzi il `awslogs` router per indirizzare i log ad Amazon CloudWatch includono:    
`awslogs-create-group`  
Obbligatorio: no  
Specifica se desideri che il gruppo di log venga creato automaticamente. Se questa opzione non è specificata, viene impostata in modo predefinito su `false`.  
La tua policy IAM deve includere l'autorizzazione `logs:CreateLogGroup`prima di provare a utilizzare `awslogs-create-group`.  
`awslogs-region`  
Obbligatorio: sì  
Specificate il Regione AWS driver di `awslogs` registro a cui inviare i log Docker. Puoi scegliere di inviare tutti i log dai cluster di diverse regioni a una singola regione in Logs. CloudWatch In questo modo saranno tutti visibili in un'unica posizione. In caso contrario, puoi separarli per regione per una maggiore granularità. Assicurati che il gruppo di log specificato esista nella regione definita tramite questa opzione.  
`awslogs-group`  
Obbligatorio: sì  
Assicurati di specificare un gruppo di log a cui il driver di log `awslogs` invia i flussi di log.  
`awslogs-stream-prefix`  
Obbligatorio: sì  
Utilizza l'opzione `awslogs-stream-prefix` per associare un flusso di log al prefisso selezionato, al nome del container e all'ID dell'attività Amazon ECS al quale appartiene il container. Se specifichi un prefisso con questa opzione, il flusso di log assume il formato seguente.  

```
prefix-name/container-name/ecs-task-id
```
Se non specifichi un prefisso con questa opzione, il flusso di log viene denominato secondo l'ID del container assegnato dal daemon Docker nell'istanza di container. Poiché è difficile ricollegare i log al container che li ha inviati con il solo ID container Docker (disponibile solo sulle istanze di container), è consigliabile specificare un prefisso con questa opzione.  
Per i servizi Amazon ECS, puoi utilizzare il nome del servizio come prefisso. In questo modo puoi ricollegare i flussi di log al servizio a cui appartiene il container, al nome del container che li ha inviati e all'ID dell'attività a cui appartiene il container.  
Perché i log compaiano nell'apposito riquadro della console Amazon ECS, devi specificare un prefisso per il flusso dei log.  
`awslogs-datetime-format`  
Obbligatorio: no  
Questa opzione definisce un modello di inizio multilinea nel formato `strftime` Python. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. In questo modo la riga associata è il delimitatore tra i messaggi di log.  
Un esempio di un caso d'uso per l'utilizzo di questo formato è per l'analisi di output, ad esempio uno dump dello stack, che potrebbe altrimenti essere registrato in più voci. Il modello corretto consente di acquisirlo in una sola voce.  
Per ulteriori informazioni, consulta [awslogs-datetime-format](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-datetime-format).  
Non è possibile configurare entrambe le opzioni `awslogs-datetime-format` e `awslogs-multiline-pattern`.  
Il logging multilinea esegue un'espressione regolare per l'analisi e il confronto di tutti i messaggi di log. L'operazione potrebbe avere ripercussioni negative sulle prestazioni del logging.  
`awslogs-multiline-pattern`  
Obbligatorio: no  
Questa opzione definisce un modello di inizio multilinea che utilizza un'espressione regolare. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. In questo modo la riga associata è il delimitatore tra i messaggi di log.  
Per ulteriori informazioni, consulta [awslogs-multiline-pattern](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-multiline-pattern).  
Questa opzione viene ignorata se anche `awslogs-datetime-format` è configurato.  
Non è possibile configurare entrambe le opzioni `awslogs-datetime-format` e `awslogs-multiline-pattern`.  
Il logging multilinea esegue un'espressione regolare per l'analisi e il confronto di tutti i messaggi di log. L'operazione potrebbe avere ripercussioni negative sulle prestazioni del logging.
Le seguenti opzioni si applicano a tutti i driver di log supportati.    
`mode`  
Obbligatorio: no  
Valori validi: `non-blocking` \$1 `blocking`  
Questa opzione definisce la modalità di consegna dei messaggi di log dal container al driver di log specificato utilizzando `logDriver`. La modalità di distribuzione scelta influisce sulla disponibilità dell'applicazione quando il flusso di log dal container viene interrotto.  
Se si utilizza la modalità `blocking` e il flusso di log viene interrotto, le chiamate provenienti dal codice del container e utilizzate per la scrittura sui flussi `stdout` e `stderr` verranno bloccate. Di conseguenza, il thread di registrazione dell'applicazione si bloccherà. Ciò può causare la mancata risposta dell'applicazione e la presenza di errori nel controllo d'integrità del container.   
Se utilizzi la modalità `non-blocking`, i log del container vengono invece archiviati in un buffer intermedio in memoria configurato con l'opzione `max-buffer-size`. In questo modo si evita la mancata risposta dell'applicazione quando non è possibile inviare i log. Ti consigliamo di utilizzare questa modalità se vuoi garantire la disponibilità del servizio nonostante una certa perdita di log. Per ulteriori informazioni, consultare [Preventing log loss with non-blocking mode in the `awslogs` container log driver](https://aws.amazon.com/blogs/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/).  
È possibile impostare un valore predefinito `mode` per tutti i container in un Regione AWS specifico utilizzando le impostazioni dell'account `defaultLogDriverMode`. Se non si specifica l'opzione `mode` in `logConfiguration` o non si configura l'impostazione dell'account, Amazon ECS utilizzerà per impostazione predefinita la modalità `non-blocking`. Per ulteriori informazioni sulle impostazioni dell'account, consultare [Modalità driver log predefinita](ecs-account-settings.md#default-log-driver-mode).  
Quando viene utilizzata la modalità `non-blocking`, l'opzione di log `max-buffer-size` controlla la dimensione del buffer utilizzato per l'archiviazione dei messaggi intermedi. Assicurati di specificare una dimensione del buffer adeguata in base all'applicazione in uso. La quantità totale di memoria allocata a livello di attività deve essere superiore a quella allocata per tutti i container oltre al driver di log del buffer di memoria.  
Il 25 giugno 2025, Amazon ECS ha cambiato la modalità predefinita del driver di log da `blocking` a `non-blocking` per dare priorità alla disponibilità delle attività rispetto al logging. Per continuare a utilizzare la modalità `blocking` dopo questa modifica, procedere in uno dei seguenti modi:  
+ Impostare l'opzione `mode` nella definizione del container `logConfiguration` come `blocking`.
+ Impostare le impostazioni dell'account `defaultLogDriverMode` su `blocking`.  
`max-buffer-size`  
Obbligatorio: no  
Valore predefinito: `10m`  
Quando viene utilizzata la modalità `non-blocking`, l'opzione di log `max-buffer-size` controlla la dimensione del buffer utilizzato per l'archiviazione dei messaggi intermedi. Assicurati di specificare una dimensione del buffer adeguata in base all'applicazione in uso. Quando il buffer è pieno, non è possibile archiviare ulteriori log. I log che non possono essere archiviati vengono persi. 
Per indirizzare i log utilizzando il router di log `splunk`, è necessario specificare `splunk-token` e `splunk-url`.  
Quando si utilizza il router di `awsfirelens` log per indirizzare i log verso una AWS Partner Network destinazione Servizio AWS OR per l'archiviazione e l'analisi dei log, è possibile impostare l'`log-driver-buffer-limit`opzione per limitare il numero di righe di registro memorizzate nel buffer prima di essere inviate al contenitore del log router. Può aiutarti a risolvere potenziali problemi di perdita di log perché un throughput elevato potrebbe comportare l'esaurimento della memoria per il buffer all'interno di Docker. Per ulteriori informazioni, consulta [Configurazione dei log di Amazon ECS per un throughput elevato](firelens-docker-buffer-limit.md).  
Le altre opzioni che è possibile specificare quando si utilizza `awsfirelens` per indirizzare i log dipendono dalla destinazione. Quando esporti i log in Amazon Data Firehose, puoi specificare Regione AWS il `region` with e un nome per il flusso di log con. `delivery_stream`  
Quando si esportano i log in flusso di dati Amazon Kinesis, è possibile specificare Regione AWS con `region` e un nome per il flusso di dati con `stream`.  
 Quando esporti i log su Amazon OpenSearch Service, puoi specificare opzioni come`Name`, `Host` (Endpoint del OpenSearch servizio senza protocollo),`Port`,`Index`,`Type`, `Aws_auth` `Aws_region``Suppress_Type_Name`, e. `tls`  
Quando si esportano i log in Amazon S3, è possibile specificare il bucket utilizzando l'opzione `bucket`. È possibile anche specificare `region`, `total_file_size`, `upload_timeout` e `use_put_object` come opzioni.  
Questo parametro richiede la versione 1.19 o successiva di Docker Remote API sull'istanza di container.  
`secretOptions`  
Tipo: array di oggetti  
Obbligatorio: no  
Un oggetto che rappresenta il segreto da inviare alla configurazione di log. I segreti utilizzati nella configurazione di log possono includere un token di autenticazione, un certificato o una chiave di crittografia. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipo: stringa  
Obbligatorio: sì  
Il valore da impostare come variabile di ambiente sul container.  
`valueFrom`  
Tipo: stringa  
Obbligatorio: sì  
Il segreto da esporre alla configurazione di log del container.

```
"logConfiguration": {
	"logDriver": "splunk",
	"options": {
		"splunk-url": "https://cloud.splunk.com:8080",
		"splunk-token": "...",
		"tag": "...",
		...
	},
	"secretOptions": [{
		"name": "splunk-token",
		"valueFrom": "/ecs/logconfig/splunkcred"
	}]
}
```

`firelensConfiguration`  
Tipo: oggetto [FirelensConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FirelensConfiguration.html)  
Obbligatorio: no  
La FireLens configurazione per il contenitore. Si utilizza per specificare e configurare un router di log per i log del container. Per ulteriori informazioni, consulta [Inviare i log di Amazon ECS a un servizio o AWS AWS Partner](using_firelens.md).  

```
{
    "firelensConfiguration": {
        "type": "fluentd",
        "options": {
            "KeyName": ""
        }
    }
}
```  
`options`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
La key/value mappa delle opzioni da usare durante la configurazione del log router. Questo campo è facoltativo e può essere utilizzato per aggiungere ulteriori metadati, ad esempio il processo, la definizione di attività, il cluster e i dettagli dell'istanza di container all'evento di log. Se specificato, la sintassi da utilizzare è `"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf|filepath"}`. Per ulteriori informazioni, consulta [Esempio di definizione dell'attività Amazon ECS: indirizzare i log a FireLens](firelens-taskdef.md).  
`type`  
Tipo: stringa  
Obbligatorio: sì  
Il router di log da utilizzare. I valori validi sono `fluentd` o `fluentbit`.

#### Sicurezza
<a name="container_definition_security"></a>

Per ulteriori informazioni sulla sicurezza di container, consultare [Best practice per la sicurezza delle attività e dei container di Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-tasks-containers.html).

`credentialSpecs`  
Tipo: array di stringhe  
Obbligatorio: no  
Un elenco di file ARNs in SSM o Amazon S3 in un file spec `CredSpec` () delle credenziali che configura il contenitore per l'autenticazione Active Directory. Consigliamo di utilizzare questo parametro anziché `dockerSecurityOptions`. Il numero massimo di è 1. ARNs   
Esistono due formati per ogni ARN.    
credentialspecdomainless:MyARN  
Utilizza `credentialspecdomainless:MyARN` per fornire un file `CredSpec` con una sezione aggiuntiva per un segreto in Secrets Manager. Specifica le credenziali di accesso al dominio nel campo segreto.  
Ogni attività eseguita su qualsiasi istanza di container può aggiungere domini diversi.  
Puoi utilizzare questo formato senza aggiungere l'istanza di container a un dominio.  
credentialspec:MyARN  
Utilizza `credentialspec:MyARN` per fornire un nome a un file `CredSpec` per un singolo dominio.  
Devi aggiungere l'istanza di container al dominio prima di iniziare qualsiasi attività che utilizzi questa definizione delle attività.
In entrambi i formati, sostituisci `MyARN` con l'ARN in SSM o Amazon S3.  
Il file `credspec` deve fornire un ARN in Secrets Manager per un segreto contenente il nome utente, la password e il dominio a cui collegarsi. Per una maggiore sicurezza, l'istanza non viene aggiunta al dominio per l'autenticazione senza dominio. Le altre applicazioni sull'istanza non possono utilizzare le credenziali senza dominio. Puoi utilizzare questo parametro per eseguire attività sulla stessa istanza, anche se le attività devono aggiungere domini diversi. Per ulteriori informazioni, vedere [Usare g MSAs per Windows Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) e [Using g MSAs for Linux Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html).

`user`  
▬Tipo: stringa  
Obbligatorio: no  
L'utente da usare all'interno del container. Questo parametro è mappato a `User` nella creazione container del comando del docker e l'opzione `--user` per docker run.  
Quando esegui attività che utilizzano la modalità di rete `host`, non eseguire container utilizzando l'utente root (UID 0). Come best practice per la sicurezza, utilizza sempre un utente non root.
È possibile specificare `user` utilizzando i seguenti formati. Un eventuale UID o GID deve essere specificato come numero intero positivo.  
+ `user`
+ `user:group`
+ `uid`
+ `uid:gid`
+ `user:gid`
+ `uid:group`
Questo parametro non è supportato per i container Windows.

```
"user": "string"
```

#### Limiti delle risorse
<a name="container_definition_limits"></a>

`ulimits`  
Tipo: array di oggetti  
Obbligatorio: no  
Un elenco di valori `ulimit` da definire per un container. Questo valore sovrascrive l'impostazione della quota di risorse predefinite per il sistema operativo. Questo parametro è mappato a `Ulimits` nella creazione container del comando del docker e l'opzione `--ulimit` per docker run.  
I processi di Amazon ECS ospitati su Fargate utilizzano i valori del limite di risorse predefinito impostato dal sistema operativo, ad eccezione del parametro del limite di risorse `nofile`. Il limite di risorse `nofile` imposta una restrizione sul numero di file aperti che un container può utilizzare. Su Fargate, il limite flessibile `nofile` predefinito è ` 65535` mentre il limite rigido è `65535`. Puoi impostare i valori di entrambi i limiti fino a `1048576`. Per ulteriori informazioni, consulta [Limiti delle risorse dei processi](fargate-tasks-services.md#fargate-resource-limits).  
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container.  
Questo parametro non è supportato per i container Windows.

```
"ulimits": [
      {
        "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack",
        "softLimit": integer,
        "hardLimit": integer
      }
      ...
    ]
```  
`name`  
Tipo: String  
Valori validi: `"core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"`  
Obbligatorio: sì, quando si utilizzano `ulimits`  
`type` di `ulimit`.  
`hardLimit`  
Tipo: numero intero  
Obbligatorio: sì, quando si utilizzano `ulimits`  
Il limite rigido per il tipo `ulimit`. Il valore può essere specificato in byte, secondi o come conteggio, a seconda del `type` di `ulimit`.  
`softLimit`  
Tipo: numero intero  
Obbligatorio: sì, quando si utilizzano `ulimits`  
Il limite flessibile per il tipo `ulimit`. Il valore può essere specificato in byte, secondi o come conteggio, a seconda del `type` di `ulimit`.

#### Etichette Docker
<a name="container_definition_labels"></a>

`dockerLabels`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
Una key/value mappa di etichette da aggiungere al contenitore. Questo parametro è mappato a `Labels` nella creazione container del comando del docker e l'opzione `--label` per docker run.   
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container.  

```
"dockerLabels": {"string": "string"
      ...}
```

### Altri parametri di definizione del container
<a name="other_container_definition_params"></a>

I seguenti parametri di definizione del container possono essere utilizzati quando si registrano le definizioni di attività nella console Amazon ECS utilizzando l'opzione **Configure via JSON** (Configura tramite JSON). Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

**Topics**
+ [

#### Parametri Linux
](#container_definition_linuxparameters)
+ [

#### Dipendenze per i container
](#container_definition_dependson)
+ [

#### Timeout del container
](#container_definition_timeout)
+ [

#### Controlli di sistema
](#container_definition_systemcontrols)
+ [

#### Interactive
](#container_definition_interactive)
+ [

#### Pseudoterminale
](#container_definition_pseudoterminal)

#### Parametri Linux
<a name="container_definition_linuxparameters"></a>

`linuxParameters`  
Tipo: oggetto [LinuxParameters](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LinuxParameters.html)  
Obbligatorio: no  
Linux-opzioni specifiche applicate al contenitore, ad esempio [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).  
Questo parametro non è supportato per i container Windows.

```
"linuxParameters": {
      "capabilities": {
        "add": ["string", ...],
        "drop": ["string", ...]
        }
      }
```  
`capabilities`  
Tipo: oggetto [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html)  
Obbligatorio: no  
Le funzionalità di Linux per il container che vengono eliminate dalla configurazione predefinita fornita da Docker. Per ulteriori informazioni su queste funzionalità di Linux, consulta la pagina del manuale Linux [capabilities(7)](http://man7.org/linux/man-pages/man7/capabilities.7.html).    
`add`  
Tipo: array di stringhe  
Valori validi: `"SYS_PTRACE"`  
Campo obbligatorio: no  
Le funzionalità di Linux per il container da aggiungere alla configurazione predefinita fornita da Docker. Questo parametro è mappato a `CapAdd` nella creazione container del comando del docker e l'opzione `--cap-add` per docker run.  
`drop`  
Tipo: array di stringhe  
Valori validi: `"ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"`  
Campo obbligatorio: no  
Le funzionalità di Linux per il container da eliminare dalla configurazione predefinita fornita da Docker. Questo parametro è mappato a `CapDrop` nella creazione container del comando del docker e l'opzione `--cap-drop` per docker run.  
`devices`  
Qualsiasi dispositivi host da esporre nel container. Questo parametro è mappato a `Devices` nella creazione container del comando del docker e l'opzione `--device` per docker run.  
Il parametro `devices` non è supportato quando si utilizza il tipo di avvio Fargate.
Tipo: matrice di oggetti [Device](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Device.html)  
Obbligatorio: no    
`hostPath`  
Il percorso per il dispositivo nell'istanza di container dell'host.  
Tipo: stringa  
Obbligatorio: sì  
`containerPath`  
Il percorso nel container in cui esporre il dispositivo dell'host.  
▬Tipo: stringa  
Obbligatorio: no  
`permissions`  
Le autorizzazioni esplicite da fornire al container per il dispositivo. Di default, il container dispone di autorizzazioni per `read`, `write` e `mknod` sul dispositivo.  
Tipo: array di stringhe  
Valori validi: `read` \$1 `write` \$1 `mknod`  
`initProcessEnabled`  
Esegui un processo `init` nel container che inoltra segnali e raccoglie i processi. Questo parametro è mappato all'opzione `--init` su docker run.  
Questo parametro richiede la versione 1.25 o successiva di Docker Remote API sull'istanza di container.  
`maxSwap`  
Non è supportato per le attività eseguite su Fargate.  
La quantità totale di memoria di swap (in MiB) che un container può utilizzare. Questo parametro viene convertito nell'opzione `--memory-swap` in docker run dove il valore sarebbe la somma della memoria del container più il valore `maxSwap`.  
Se viene specificato il valore `maxSwap` di `0`, il container non utilizzerà lo swap. I valori accettati sono `0` o qualsiasi numero intero positivo. Se il parametro `maxSwap` viene omesso, il container utilizza la configurazione di swap per l'istanza di container su cui è in esecuzione. È necessario impostare un valore `maxSwap` per il parametro `swappiness` da utilizzare.  
`sharedMemorySize`  
Valore per le dimensioni (in MiB) del volume `/dev/shm`. Questo parametro è mappato all'opzione `--shm-size` su docker run.  
Se si utilizzano attività che ricorrono a Fargate, il parametro `sharedMemorySize` non è supportato.
Tipo: numero intero  
`tmpfs`  
Il percorso del container, le opzioni di montaggio e le dimensioni massime (in MiB) del montaggio tmpfs. Questo parametro è mappato all'opzione `--tmpfs` su docker run.  
Tipo: matrice di oggetti [Tmpfs](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Tmpfs.html)  
Obbligatorio: no    
`containerPath`  
Percorso assoluto in cui deve essere montato il volume tmpfs.  
Tipo: stringa  
Obbligatorio: sì  
`mountOptions`  
L'elenco delle opzioni di montaggio del volume tmpfs.  
Tipo: array di stringhe  
Obbligatorio: no  
Valori validi: `"defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"`  
`size`  
Le dimensioni massime (in MiB) del volume tmpfs.  
Tipo: numero intero  
Obbligatorio: sì

#### Dipendenze per i container
<a name="container_definition_dependson"></a>

`dependsOn`  
Tipo: matrice di oggetti [ContainerDependency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html)  
Obbligatorio: no  
Le dipendenze definite per l'avvio e la chiusura dei container. Un contenitore può contenere più dipendenze. Se una dipendenza è definita per l'avvio del container, per la sua chiusura è invertita. Per un esempio, consulta [Dipendenze per i container](example_task_definitions.md#example_task_definition-containerdependency).  
Se un container non soddisfa un vincolo di dipendenza o si verifica un timeout prima di rispondere al vincolo, Amazon ECS non avanza i container dipendenti allo stato successivo.
Questo parametro richiede che l'attività o il servizio utilizzi la versione della piattaforma `1.3.0` o successive (Linux) o `1.0.0` (Windows).  

```
"dependsOn": [
    {
        "containerName": "string",
        "condition": "string"
    }
]
```  
`containerName`  
Tipo: stringa  
Obbligatorio: sì  
Il nome del container che deve soddisfare la condizione specificata.  
`condition`  
Tipo: stringa  
Obbligatorio: sì  
La condizione di dipendenza del container. Di seguito sono elencate le condizioni disponibili e il loro comportamento:  
+ `START`: questa condizione emula il comportamento dei collegamenti e dei volumi. La condizione convalida l'avvio di un container dipendente prima di consentire l'avvio di altri container.
+ `COMPLETE`: questa condizione verifica l'esecuzione fino al completamento (uscita) di un container dipendente prima di consentire l'avvio di altri container. Può rivelarsi utile per container non essenziali che eseguono uno script e quindi escono. Questa condizione non può essere impostata su un container essenziale.
+ `SUCCESS`: questa condizione è uguale a `COMPLETE`, ma richiede anche che il container esca con stato `zero`. Questa condizione non può essere impostata su un container essenziale.
+ `HEALTHY`: questa condizione verifica che il container dipendente superi il controllo dell'integrità del container prima di consentire l'avvio di altri container. Ciò richiede che per il container dipendente siano configurati i controlli dell'integrità nella definizione di attività. Questa condizione è confermata solo all'avvio dell'attività.

#### Timeout del container
<a name="container_definition_timeout"></a>

`startTimeout`  
Tipo: Integer  
Obbligatorio: no  
Valori di esempio: `120`  
Tempo di attesa (in secondi) prima di rinunciare a risolvere le dipendenze per un container.  
Ad esempio, vengono specificati due container in una definizione di attività: `containerA` ha una dipendenza sul `containerB` quando raggiunge lo stato `COMPLETE`, `SUCCESS` o `HEALTHY`. Se per `containerB` è specificato un valore `startTimeout` e non raggiunge lo stato desiderato entro tale periodo di tempo, allora `containerA` non viene avviato.  
Se un container non soddisfa un vincolo di dipendenza o si verifica un timeout prima di rispondere al vincolo, Amazon ECS non avanza i container dipendenti allo stato successivo.
Questo parametro richiede che l'attività o il servizio utilizzi la versione della piattaforma `1.3.0` o successive (Linux). Il valore massimo è 120 secondi.

`stopTimeout`  
Tipo: Integer  
Obbligatorio: no  
Valori di esempio: `120`  
Durata (in secondi) di attesa prima che sia forzata la chiusura se il container non si arresta da solo normalmente.  
Questo parametro richiede che l'attività o il servizio utilizzi la versione della piattaforma `1.3.0` o successive (Linux). Se il parametro non è specificato, viene utilizzato il valore predefinito di 30 secondi. Il valore massimo è 120 secondi.

#### Controlli di sistema
<a name="container_definition_systemcontrols"></a>

`systemControls`  
Tipo: oggetto [SystemControl](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SystemControl.html)  
Obbligatorio: no  
Un elenco di parametri kernel associati a un namespace da impostare nel container. Questo parametro è mappato a `Sysctls` nella creazione container del comando del docker e l'opzione `--sysctl` per docker run. Ad esempio, puoi configurare l'impostazione `net.ipv4.tcp_keepalive_time` per mantenere le connessioni di lunga durata.  
Non è consigliabile specificare i parametri `systemControls` correlati alla rete per più container in un'unica attività che utilizza anche la modalità di rete `awsvpc` o `host`. Ciò comporta i seguenti svantaggi:  
+ Se sono stati impostati `systemControls` per qualsiasi container, si applicano a tutti i container nell'attività. Se sono stati impostati diversi `systemControls` per più container in un'unica attività, il container che viene avviato per ultimo determina quale `systemControls` diventa effettivo.
Se stai impostando un namespace della risorsa IPC per utilizzare i container nell'attività, ai controlli di sistema si applicano le seguenti condizioni. Per ulteriori informazioni, consulta [Modalità IPC](#task_definition_ipcmode).  
+ Per le attività che utilizzano la modalità `host` IPC, i valori `systemControls` del namespace IPC non sono supportati.
+ Per le attività che utilizzano la modalità IPC `task`, i valori di `systemControls` del namespace IPC si applicano a tutti i container all'interno di un'attività.
Questo parametro non è supportato per i container Windows.
Questo parametro è supportato solo per le attività ospitate su AWS Fargate se le attività utilizzano la versione della piattaforma `1.4.0` o successive (Linux). Non è supportato per i container Windows su Fargate.

```
"systemControls": [
    {
         "namespace":"string",
         "value":"string"
    }
]
```  
`namespace`  
▬Tipo: stringa  
Obbligatorio: no  
Il parametro kernel associato a un namespace per il quale impostare un parametro `value`.  
Valori del namespace IPC validi: `"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"` e `Sysctls` che iniziano con `"fs.mqueue.*"`  
Valori dello namespace di rete validi: `Sysctls` che iniziano con `"net.*"`. In Fargate, vengono accettati solo i namespace `Sysctls` esistenti all'interno del container.  
Tutti questi valori sono supportati da Fargate.  
`value`  
▬Tipo: stringa  
Obbligatorio: no  
Il valore per il parametro kernel associato a un namespace specificato in `namespace`.

#### Interactive
<a name="container_definition_interactive"></a>

`interactive`  
Tipo: Booleano  
Obbligatorio: no  
Quando questo parametro è `true`, puoi implementare le applicazioni containerizzate che richiedono l'allocazione di `stdin` o `tty`. Questo parametro è mappato a `OpenStdin` nella creazione container del comando del docker e l'opzione `--interactive` per docker run.  
Il valore predefinito è `false`.

#### Pseudoterminale
<a name="container_definition_pseudoterminal"></a>

`pseudoTerminal`  
Tipo: Booleano  
Obbligatorio: no  
Quando il parametro è `true`, è allocato un TTY. Questo parametro è mappato a `Tty` nella creazione container del comando del docker e l'opzione `--tty` per docker run.  
Il valore predefinito è `false`.

## Nome dell'acceleratore Elastic Inference (obsoleto)
<a name="elastic-Inference-accelerator"></a>

Il requisito della risorsa dell'acceleratore di Elastic Inference per la definizione di attività. 

**Nota**  
Amazon Elastic Inference (EI) non è più disponibile per i clienti.

I parametri seguenti sono permessi nella definizione di un processo:

`deviceName`  
Tipo: stringa  
Obbligatorio: sì  
Il nome del dispositivo dell'acceleratore di inferenza elastica. Il `deviceName` deve anche essere riferito in una definizione del container; consulta [Elastic Inference accelerator](#ContainerDefinition-elastic-inference).

`deviceType`  
Tipo: stringa  
Obbligatorio: sì  
L'acceleratore di inferenza elastica da utilizzare.

## Configurazione del proxy
<a name="proxyConfiguration"></a>

`proxyConfiguration`  
Tipo: oggetto [ProxyConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ProxyConfiguration.html)  
Obbligatorio: no  
I dettagli di configurazione del proxy App Mesh.  
Questo parametro non è supportato per i container Windows.

```
"proxyConfiguration": {
    "type": "APPMESH",
    "containerName": "string",
    "properties": [
        {
           "name": "string",
           "value": "string"
        }
    ]
}
```  
`type`  
Tipo: String  
Valori del valore: `APPMESH`  
Obbligatorio: no  
Il tipo di proxy. L’unico valore supportato è `APPMESH`.  
`containerName`  
Tipo: stringa  
Obbligatorio: sì  
Il nome del container che agirà come proxy App Mesh.  
`properties`  
Tipo: matrice di oggetti [KeyValuePair](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KeyValuePair.html)  
Obbligatorio: no  
Il set di parametri di configurazione di rete per il plug-in Container Network Interface (CNI), specificati come coppie chiave-valore.  
+ `IgnoredUID`: (obbligatorio) l'ID utente (UID) del container proxy come definito dal parametro `user` in una definizione del container. Serve a garantire che il proxy ignori il proprio traffico. Se è specificato `IgnoredGID`, questo campo può rimanere vuoto.
+ `IgnoredGID`: (obbligatorio) l'ID gruppo (GID) del container proxy come definito dal parametro `user` in una definizione del container. Serve a garantire che il proxy ignori il proprio traffico. Se è specificato `IgnoredUID`, questo campo può rimanere vuoto.
+ `AppPorts` (obbligatorio): l'elenco delle porte utilizzate dall'applicazione. Il traffico di rete per queste porte viene inoltrato alle porte `ProxyIngressPort` e `ProxyEgressPort`.
+ `ProxyIngressPort` (obbligatorio): specifica la porta a cui è diretto il traffico in entrata per le `AppPorts`.
+ `ProxyEgressPort` (obbligatorio): specifica la porta a cui è diretto il traffico in uscita da `AppPorts`.
+ `EgressIgnoredPorts`: (obbligatorio) il traffico in uscita diretto verso le porte specificate viene ignorato e non reindirizzato alla `ProxyEgressPort`. Può essere un elenco vuoto.
+ `EgressIgnoredIPs`: (obbligatorio) il traffico in uscita diretto verso gli indirizzi IP specificati viene ignorato e non reindirizzato alla `ProxyEgressPort`. Può essere un elenco vuoto.  
`name`  
▬Tipo: stringa  
Obbligatorio: no  
Nome della coppia chiave-valore.  
`value`  
▬Tipo: stringa  
Obbligatorio: no  
Valore della coppia chiave-valore.

## Volumi
<a name="volumes"></a>

Quando si registra una definizione di attività, è possibile eventualmente specificare un elenco di volumi da trasferire al daemon Docker su un'istanza di container, che diventerà poi accessibile ad altri container nella stessa istanza.

Di seguito sono elencati i tipi di volumi di dati che è possibile utilizzare:
+ Volumi Amazon EBS: forniscono un'archiviazione a blocchi conveniente, durevole e ad alte prestazioni per carichi di lavoro containerizzati a uso intensivo di dati. È possibile collegare 1 volume Amazon EBS a ogni attività Amazon ECS durante l'esecuzione di un'attività isolata oppure durante la creazione o l'aggiornamento di un servizio. I volumi Amazon EBS sono supportati per le attività Linux ospitate su Fargate. Per ulteriori informazioni, consulta [Usare i volumi Amazon EBS con Amazon ECS](ebs-volumes.md).
+ Volumi Amazon EFS: offre uno spazio di archiviazione di file semplice, scalabile e persistente da utilizzare con i processi Amazon ECS. Con Amazon EFS, la capacità di storage è elastica. Cresce e si riduce automaticamente man mano che aggiungi e rimuovi file. Le tue applicazioni possono disporre dello spazio di archiviazione di cui hanno bisogno e quando ne hanno bisogno. I volumi Amazon EFS sono supportati per le attività ospitate su istanze di Fargate. Per ulteriori informazioni, consulta [Usare i volumi Amazon EFS con Amazon ECS](efs-volumes.md).
+ FSx per volumi Windows File Server: fornisce file server Microsoft Windows completamente gestiti. Questi server di file sono supportati da un file system Windows. Quando si utilizza FSx Windows File Server insieme ad Amazon ECS, è possibile effettuare il provisioning delle attività Windows con uno storage di file persistente, distribuito, condiviso e statico. Per ulteriori informazioni, consulta [Utilizzo FSx per volumi Windows File Server con Amazon ECS](wfsx-volumes.md).

  Questa opzione non è supportata per i container Windows su Fargate.
+ Montaggi vincolati: un file o una directory sulla macchina host montato in un container. I volumi host di montaggio vincolato sono supportati durante l'esecuzione delle attività. Per usare i volumi host di montaggi vincolati, specifica un valore `host` e un valore opzionale `sourcePath` nella definizione di attività.

Per ulteriori informazioni, consulta [Opzioni di archiviazione per le attività di Amazon ECS](using_data_volumes.md).

I seguenti parametri sono consentiti in una definizione del container.

`name`  
▬Tipo: stringa  
Obbligatorio: no  
Nome del volume. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini (`-`) e trattini bassi (`_`). Nel parametro `sourceVolume` dell'oggetto `mountPoints` della definizione del container viene fatto riferimento a questo nome.

`host`  
Obbligatorio: no  
Il parametro `host` viene utilizzato per legare il ciclo di vita del montaggio vincolato all'istanza host di Amazon EC2 anziché al processo, dove invece è archiviato. Se il parametro `host` è vuoto, il daemon Docker assegna un percorso host per il tuo volume di dati, ma non è garantito che i dati vengano mantenuti dopo che viene interrotta l'esecuzione del container a essi associato.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`.  
Il `sourcePath` parametro è supportato solo quando si utilizzano attività ospitate su istanze Amazon EC2 o Amazon ECS Managed Instances.  
`sourcePath`  
▬Tipo: stringa  
Obbligatorio: no  
Quando viene utilizzato il parametro `host`, specifica un `sourcePath` per dichiarare il percorso sull'istanza Amazon EC2 dell'host presentata al container. Se questo parametro è vuoto, il daemon Docker assegna automaticamente un percorso host. Se il parametro `host` contiene una posizione del file `sourcePath`, il volume di dati rimane nella posizione specificata sull'istanza Amazon EC2 dell'host finché non viene eliminato manualmente. Se il valore `sourcePath` non esiste nell'istanza Amazon EC2 dell'host, viene creato automaticamente dal daemon Docker. Se la posizione è presente, i contenuti della cartella del percorso di origine vengono esportati.

`configuredAtLaunch`  
Tipo: Booleano  
Obbligatorio: no  
Specificare se un volume è configurabile all'avvio. Se impostato su `true`, è possibile configurare il volume quando si esegue un'attività autonoma o quando si crea o si aggiorna un servizio. Se impostato su `true`, non sarà possibile fornire un'altra configurazione di volume nella definizione dell'attività. Questo parametro deve essere impostato su `true` per configurare un volume Amazon EBS da allegare a un'attività. L'impostazione di `configuredAtLaunch` su `true` e il rinvio della configurazione del volume alla fase di avvio consentono di creare definizioni di attività che non sono limitate a un tipo di volume o a impostazioni di volume specifiche. In questo modo, la definizione dell'attività è riutilizzabile in diversi ambienti di esecuzione. Per ulteriori informazioni consulta [Amazon EBS volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html).

`dockerVolumeConfiguration`  
Tipo: oggetto [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizzano volumi docker. I volumi Docker sono supportati solo se i processi vengono eseguiti su istanze EC2. I container Windows supportano solo l’uso del driver `local`. Per utilizzare i montaggi vincolati, specifica invece un `host`.    
`scope`  
Tipo: String  
Valori validi: `task` \$1 `shared`  
Obbligatorio: no  
L'ambito del volume Docker che determina il suo ciclo di vita. I volumi Docker che rientrano nell'ambito `task` vengono automaticamente assegnati all'avvio del processo e distrutti quando il processo viene arrestato. I volumi Docker che vengono definiti come `shared` vengono mantenuti dopo l'arresto del processo.  
`autoprovision`  
Tipo: Booleano  
Valore predefinito: `false`  
Obbligatorio: no  
Se questo valore è `true`, viene creato il volume Docker, se non è già presente. Questo campo è utilizzato solo se `scope` è `shared`. Se `scope` è `task`, questo parametro deve essere omesso.  
`driver`  
▬Tipo: stringa  
Obbligatorio: no  
Il driver del volume Docker da utilizzare. Il valore del driver deve corrispondere al nome del driver fornito da Docker perché questo nome è utilizzato per il posizionamento dell'attività. Se il driver è stato installato utilizzando la CLI del plugin Docker, utilizzare `docker plugin ls` per richiamare il nome del driver dall'istanza di container. Se il driver è stato installato utilizzando un altro metodo, utilizzare il rilevamento del plugin Docker per richiamare il nome del driver.  
`driverOpts`  
▬Tipo: stringa  
Obbligatorio: no  
Una mappa delle opzioni specifiche del driver Docker da inviare. Questo parametro fa riferimento a `DriverOpts` nella sezione Crea un volume di Docker.  
`labels`  
▬Tipo: stringa  
Obbligatorio: no  
Metadati personalizzati da aggiungere al volume Docker.

`efsVolumeConfiguration`  
Tipo: oggetto [EFSVolumedi configurazione](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html)  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizzano volumi Amazon EFS.    
`fileSystemId`  
Tipo: stringa  
Obbligatorio: sì  
L'ID del file system Amazon EFS da utilizzare.  
`rootDirectory`  
▬Tipo: stringa  
Obbligatorio: no  
La directory all'interno del file system Amazon EFS da montare come directory principale all'interno dell'host. Se questo parametro viene omesso, verrà utilizzata la radice del volume Amazon EFS. La specifica di `/` avrà lo stesso effetto dell'omissione di questo parametro.  
Se un punto di accesso EFS è specificato in `authorizationConfig`, il parametro della directory radice deve essere omesso o impostato su `/` per applicare il percorso impostato sul punto di accesso EFS.  
`transitEncryption`  
Tipo: String  
Valori validi: `ENABLED` \$1 `DISABLED`  
Obbligatorio: no  
Specifica se abilitare o meno la crittografia per i dati Amazon EFS in transito tra l'host Amazon ECS e il server Amazon EFS. Se si utilizza l'autorizzazione IAM di Amazon EFS, è necessario abilitare la crittografia di transito. Se questo parametro viene omesso, viene utilizzato il comportamento predefinito di `DISABLED`. Per ulteriori informazioni, consulta [Encrypting Data in Transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`transitEncryptionPort`  
Tipo: Integer  
Obbligatorio: no  
La porta da utilizzare per l'invio di dati crittografati tra l'host Amazon ECS e il server Amazon EFS. Se non si specifica una porta di crittografia di transito, l'attività utilizzerà la strategia di selezione della porta usata dall'helper per il montaggio di Amazon EFS. Per ulteriori informazioni, consulta [Assistente per il montaggio di EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`authorizationConfig`  
Tipo: oggetto [EFSAuthorizationConfig](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSAuthorizationConfig.html)  
Obbligatorio: no  
I dettagli di configurazione dell'autorizzazione per il file system Amazon EFS.    
`accessPointId`  
▬Tipo: stringa  
Obbligatorio: no  
L'ID del punto di accesso da utilizzare. Se viene specificato un punto di accesso, il valore della directory root specificato in `efsVolumeConfiguration` deve essere omesso o impostato su `/` per applicare il percorso impostato sul punto di accesso EFS. Se si utilizza un punto di accesso, la crittografia di transito deve essere abilitata in `EFSVolumeConfiguration`. Per ulteriori informazioni, consulta [Utilizzo dei punti di accesso Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`iam`  
Tipo: String  
Valori validi: `ENABLED` \$1 `DISABLED`  
Obbligatorio: no  
Specificare se utilizzare o meno il ruolo IAM dell'attività Amazon ECS riportato in una definizione di attività durante il montaggio del file system Amazon EFS. Se abilitato, la crittografia di transito deve essere abilitata nella casella `EFSVolumeConfiguration`. Se questo parametro viene omesso, viene utilizzato il comportamento predefinito di `DISABLED`. Per ulteriori informazioni consulta [Ruoli IAM per le attività](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

`FSxWindowsFileServerVolumeConfiguration`  
Tipo: oggetto [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html)  
Obbligatorio: sì  
Questo parametro viene specificato quando utilizzi un file system [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) per l'archiviazione delle attività.    
`fileSystemId`  
Tipo: stringa  
Obbligatorio: sì  
L' FSx ID del file system Windows File Server da utilizzare.  
`rootDirectory`  
Tipo: stringa  
Obbligatorio: sì  
La directory all'interno del FSx file system Windows File Server da montare come directory principale all'interno dell'host.  
`authorizationConfig`    
`credentialsParameter`  
Tipo: stringa  
Obbligatorio: sì  
Le opzioni delle credenziali di autorizzazione.  

**opzioni:**
+ Nome della risorsa Amazon (ARN) del segreto [Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).
+ ARN di un parametro [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).  
`domain`  
Tipo: stringa  
Obbligatorio: sì  
Un nome di dominio completo ospitato da una directory [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) (AWS Managed Microsoft AD) o da una directory EC2 Active autonoma.

## Tag
<a name="tags"></a>

Quando registri una definizione di attività, puoi facoltativamente specificare tag di metadati applicati alla definizione di attività. I tag consentono di suddividere in categorie e organizzare la definizione di attività. Ciascun tag è formato da una chiave e da un valore facoltativo. Li definisci entrambi. Per ulteriori informazioni, consulta [Aggiunta di tag alle risorse Amazon ECS](ecs-using-tags.md).

**Importante**  
Non aggiungere Informazioni personali di identificazione o altre informazioni riservate o sensibili nei tag. I tag sono accessibili a molti AWS servizi, inclusa la fatturazione. I tag non sono destinati a essere utilizzati per dati privati o sensibili.

I seguenti parametri sono consentiti in un oggetto di tag.

`key`  
▬Tipo: stringa  
Obbligatorio: no  
Una parte di una coppia chiave-valore che costituisce un tag. Una chiave è un'etichetta generale che funge da categoria per più valori di tag specifici.

`value`  
▬Tipo: stringa  
Obbligatorio: no  
La parte facoltativa di una coppia chiave-valore che costituisce un tag. Un valore agisce come descrittore all'interno di una categoria di tag (chiave).

## Altri parametri di definizione di attività
<a name="other_task_definition_params"></a>

I seguenti parametri di definizione di attività possono essere utilizzati quando si registrano le definizioni di attività nella console Amazon ECS con l'opzione **Configure via JSON** (Configura tramite JSON). Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

**Topics**
+ [

### Archiviazione temporanea
](#task_definition_ephemeralStorage)
+ [

### Modalità IPC
](#task_definition_ipcmode)
+ [

### Modalità PID
](#task_definition_pidmode)
+ [

### Iniezione di guasti
](#task_definition_faultInjection)

### Archiviazione temporanea
<a name="task_definition_ephemeralStorage"></a>

`ephemeralStorage`  
Tipo: oggetto [EphemeralStorage](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EphemeralStorage.html)  
Obbligatorio: no  
La quantità di archiviazione temporanea in GB da allocare per l'attività. Questo parametro viene utilizzato per espandere la quantità totale di archiviazione temporanea disponibile, oltre l'importo predefinito, per le attività ospitate su AWS Fargate. Per ulteriori informazioni, consulta [Utilizzo di montaggio vincolato con Amazon ECS](bind-mounts.md).  
Questo parametro è supportato solo sulla versione della piattaforma `1.4.0` o successive (Linux) oppure `1.0.0` o successive (Windows).

### Modalità IPC
<a name="task_definition_ipcmode"></a>

`ipcMode`  
Non è supportato per le attività eseguite su Fargate.  
▬Tipo: stringa  
Obbligatorio: no  
Il namespace della risorsa IPC da utilizzare per i container nell'attività. I valori validi sono `host`, `task` o `none`. Se è specificato `host`, tutti i container all'interno delle attività che hanno specificato la modalità `host` IPC sulla stessa istanza di container condividono le stesse risorse IPC con l'istanza host Amazon EC2. Se è stato specificato `task`, tutti i container all'interno dell'attività specificata condividono le stesse risorse IPC. Se è stato specificato `none`, le risorse IPC all'interno dei container di un'attività sono private e non condivise con altri container in un'attività o sull'istanza di container. Se non è stato specificato alcun valore, la condivisione del namespace della risorsa IPC dipende dalle impostazioni del daemon Docker sull'istanza del container.  
Se viene utilizzata la modalità `host` IPC, tieni presente che esiste un maggiore rischio di esposizione a spazi dei nomi IPC indesiderati.  
Se stai impostando parametri kernel associati a un namespace utilizzando `systemControls` per i container nell'attività, al namespace della risorsa IPC si applica quanto segue.   
+ Per le attività che utilizzano la modalità `host` IPC, spazi dei nomi IPC correlati a `systemControls` non sono supportati.
+ Per le attività che utilizzano la modalità `task` IPC, `systemControls` correlati al namespace IPC vengono applicati a tutti i container all'interno di un'attività.

**Nota**  
Questo parametro non è supportato per i container o le attività Windows che utilizzano il tipo di avvio Fargate.

### Modalità PID
<a name="task_definition_pidmode"></a>

`pidMode`  
Tipo: String  
Valori validi: `host` \$1 `task`  
Obbligatorio: no  
Il namespace del processo da utilizzare per i container nell'attività. I valori validi sono `host` o `task`. Per i container Linux, l'unico valore valido è `task`. Ad esempio, i sidecar di monitoraggio potrebbero aver bisogno di `pidMode` per accedere a informazioni su altri container in esecuzione nella stessa attività.  
Se è stato specificato `task`, tutti i container all'interno dell'attività specificata condividono lo stesso namespace del processo.  
Se non è stato specificato alcun valore, l'impostazione predefinita è un namespace privato per ogni container. 

**Nota**  
Questo parametro è supportato solo per le attività ospitate su AWS Fargate se le attività utilizzano la versione della piattaforma `1.4.0` o successive (Linux). Non è supportato per i container Windows su Fargate.

### Iniezione di guasti
<a name="task_definition_faultInjection"></a>

`enableFaultInjection`  
Tipo: Booleano  
Valori validi: `true` \$1 `false`  
Obbligatorio: no  
Se questo parametro è impostato su `true`, nel payload di un'attività, Amazon ECS e Fargate accettano richieste di iniezione di guasti dai container della stessa. Il valore del parametro è `false` per impostazione predefinita.

# Parametri di definizione di attività Amazon ECS per Amazon EC2
<a name="task_definition_parameters_ec2"></a>

Le definizioni delle attività sono suddivise in parti separate: la famiglia di attività, il ruolo dell'attività AWS Identity and Access Management (IAM), la modalità di rete, le definizioni dei contenitori, i volumi, i vincoli di posizionamento delle attività e la capacità. Le definizioni della famiglia e del container sono richieste in una definizione di attività. Al contrario, il ruolo dell'attività, la modalità di rete, i volumi, i vincoli di posizionamento delle attività e il tipo di avvio sono facoltativi.

Puoi utilizzare questi parametri in un file JSON per configurare la definizione del processo.

Di seguito sono riportate descrizioni più dettagliate per ogni parametro di definizione di attività per Amazon EC2

## Family
<a name="family_ec2"></a>

`family`  
Tipo: stringa  
Obbligatorio: sì  
Quando registri una definizione di attività, le assegni una famiglia, ovvero una sorta di nome per più versioni della definizione di attività, specificando un numero di revisione. Alla prima definizione di attività registrata in una determinata famiglia viene assegnato il numero di revisione 1 e a qualsiasi definizione di attività registrata successivamente viene assegnato un numero di revisione sequenziale.

## Capacity
<a name="requires_compatibilities_ec2"></a>

Quando si registra una definizione di attività, è possibile specificare la capacità che Amazon ECS deve convalidare per tale definizione. Se la definizione di attività non viene convalidata in base alle compatibilità specificate, viene restituita un'eccezione client.

Il parametro seguente è permesso in una definizione di attività.

`requiresCompatibilities`  
Tipo: array di stringhe  
Obbligatorio: no  
Valori validi: `EC2`   
La capacità per la quale è stata convalidata la definizione di attività. In questo modo viene avviato un controllo per garantire che tutti i parametri utilizzati nella definizione di attività soddisfino i requisiti di Amazon EC2.

## Ruolo del processo
<a name="task_role_arn_ec2"></a>

`taskRoleArn`  
▬Tipo: stringa  
Obbligatorio: no  
Quando registri una definizione di attività, puoi fornire un ruolo di attività per un ruolo IAM che consente ai contenitori inclusi nell'attività di chiamare per tuo AWS APIs conto i dati specificati nelle politiche associate. Per ulteriori informazioni, consulta [Ruolo IAM dell'attività Amazon ECS](task-iam-roles.md).  
All'avvio dell'AMI Windows Server ottimizzata per Amazon ECS, i ruoli IAM per le attività su Windows richiedono che l'opzione `-EnableTaskIAMRole` sia impostata. I container devono anche eseguire un codice di configurazione per utilizzare la funzionalità. Per ulteriori informazioni, consulta [Configurazione aggiuntiva delle istanze Windows di Amazon EC2](task-iam-roles.md#windows_task_IAM_roles).

## Ruolo per l'esecuzione del processo
<a name="execution_role_arn_ec2"></a>

`executionRoleArn`  
Tipo: String  
Obbligatorio: condizionale  
L'Amazon Resource Name (ARN) del ruolo di esecuzione dell'attività che concede all'agente container Amazon ECS l'autorizzazione a effettuare chiamate AWS API per tuo conto.   
Il ruolo IAM di esecuzione del processo è richiesto in base ai requisiti del processo. Per ulteriori informazioni, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).

## Modalità di rete
<a name="network_mode_ec2"></a>

`networkMode`  
▬Tipo: stringa  
Obbligatorio: no  
La modalità di rete Docker da utilizzare per i container nel processo. Per le attività Amazon ECS ospitate su istanze Linux di Amazon EC2, i valori validi sono `none`, `bridge`, `awsvpc` e `host`. Se non viene specificata alcuna modalità di rete, la modalità di rete predefinita è. `bridge` Per le attività di Amazon ECS ospitate su istanze Windows di Amazon EC2, i valori `default` validi sono, e. `awsvpc` Se non viene specificata alcuna modalità di rete, viene utilizzata la modalità `default`.  
Se la modalità di rete è impostata su `none`, i container dell'attività non dispongono di connettività esterna e non è possibile specificare le mappature delle porte nella definizione del container.  
Se la modalità di rete è `bridge`, l'attività utilizza la rete virtuale integrata di Docker su Linux che viene eseguita all'interno di ogni istanza Amazon EC2 che ospita l'attività. La rete virtuale integrata su Linux utilizza il driver di rete `bridge` Docker.  
Se la modalità di rete è `host`, l'attività utilizza la rete dell'host che ignora la rete virtuale integrata di Docker e mappa le porte del container direttamente all'interfaccia di rete elastica (ENI) dell'istanza Amazon EC2 che ospita l'attività. Le mappature dinamiche delle porte non possono essere utilizzate in questa modalità di rete. Un container in una definizione di attività che utilizza questa modalità deve specificare un numero di `hostPort` specifico. Un numero di porta su un host non può essere utilizzato da più attività. Di conseguenza, non sarà possibile eseguire più attività con la stessa definizione di attività su una singola istanza Amazon EC2.  
Quando si eseguono attività che utilizzano la modalità di rete `host`, per una maggiore sicurezza, non eseguire container utilizzando l'utente root (UID 0). Come best practice per la sicurezza, utilizza sempre un utente non root.
Se la modalità di rete è `awsvpc`, al processo viene assegnata un'interfaccia di rete elastica e, quando crei un servizio o esegui un processo con la definizione di attività, devi specificare `NetworkConfiguration`. Per ulteriori informazioni, consulta [Opzioni di rete di attività di Amazon ECS per EC2](task-networking.md).  
Se la modalità di rete è `default`, l'attività utilizza la rete virtuale integrata di Docker su Windows che viene eseguita all'interno di ogni istanza Amazon EC2 che ospita l'attività. La rete virtuale integrata su Windows utilizza il driver di rete `nat` Docker.   
Le modalità di rete `host` e `awsvpc` offrono le massime prestazioni di rete per i container perché utilizzano lo stack di rete di Amazon EC2. Con le modalità di rete `host` e `awsvpc`, le porte dei container esposte sono mappate direttamente alla porta host corrispondente (per la modalità di rete `host`) o alla porta dell'interfaccia di rete elastica collegata (per la modalità di rete `awsvpc`). Pertanto, non puoi utilizzare le mappature delle porte host dinamiche.  
La modalità di rete consentita dipende dal sistema operativo dell'istanza EC2 sottostante. Con Linux, può essere utilizzata qualsiasi modalità di rete. Se Windows, possono essere utilizzate le modalità `default` e `awsvpc`. 

## Piattaforma di runtime
<a name="runtime-platform_ec2"></a>

`operatingSystemFamily`  
Tipo: String  
Obbligatorio: condizionale  
Di default: LINUX  
Quando registri una definizione di attività, devi specificare la famiglia del sistema operativo.   
I valori validi sono `LINUX`, `WINDOWS_SERVER_2025_FULL`, `WINDOWS_SERVER_2025_CORE`, `WINDOWS_SERVER_2022_CORE`, `WINDOWS_SERVER_2022_FULL`, `WINDOWS_SERVER_2019_FULL`, `WINDOWS_SERVER_2019_CORE`, `WINDOWS_SERVER_2016_FULL`, `WINDOWS_SERVER_2004_CORE` e`WINDOWS_SERVER_20H2_CORE`.  
Tutte le definizioni di attività utilizzate in un servizio devono avere lo stesso valore per questo parametro.  
Quando una definizione di attività fa parte di un servizio, questo valore deve corrispondere al valore `platformFamily` del servizio.

`cpuArchitecture`  
Tipo: String  
Obbligatorio: condizionale  
Quando registri una definizione di attività, puoi specificare l'architettura della CPU. I valori validi sono `X86_64` e `ARM64`. Se non specifichi un valore, Amazon ECS tenta di inserire attività sull'architettura CPU disponibile in base alla configurazione del provider di capacità. Per garantire che le attività vengano posizionate su un'architettura CPU specifica, specifica un valore per `cpuArchitecture` nella definizione dell'attività.  
Tutte le definizioni di attività utilizzate in un servizio devono avere lo stesso valore per questo parametro.  
Quando si dispone di attività Linux, è possibile impostare il valore su `ARM64`. Per ulteriori informazioni, consulta [Definizioni di attività Amazon ECS per carichi di lavoro ARM a 64 bit](ecs-arm64.md).

## Dimensioni processo
<a name="task_size_ec2"></a>

Quando registri una definizione di attività, puoi specificare la quantità totale di CPU e memoria utilizzata per l'attività. Questo valore è separato dai valori `cpu` e `memory` a livello di definizione del container. Per le attività ospitate su istanze Amazon EC2, questi campi sono facoltativi.

**Nota**  
I parametri della CPU e della memoria a livello di processo vengono ignorati per i container Windows. Ti consigliamo di specificare risorse a livello di container per i container Windows.

`cpu`  
Tipo: String  
Obbligatorio: condizionale  
Questo parametro non è supportato per i container Windows.
Il limite rigido di unità CPU da presentare per il processo. È possibile specificare i valori della CPU nel file JSON come stringa in unità CPU o in modalità virtuale CPUs (vCPUs). Ad esempio, è possibile specificare un valore di CPU come `1024` in unità CPU o `1 vCPU` in vCPUs. Quando la definizione dell'attività viene registrata, un valore vCPU viene convertito in un numero intero che indica le unità CPU.  
Questo campo è facoltativo. Se il cluster non dispone di istanze di container registrate con le unità CPU richieste disponibili, l’attività non va a buon fine. I valori supportati sono compresi tra `0.125` v CPUs e `192` v. CPUs

`memory`  
Tipo: String  
Obbligatorio: condizionale  
Questo parametro non è supportato per i container Windows.
Il limite rigido di memoria da presentare al processo. È possibile specificare i valori di memoria nella definizione dell'attività come stringa in mebibytes (MiB) o gigabytes (GB). Ad esempio, è possibile specificare un valore di memoria `3072` in MiB o `3 GB` in GB. Quando la definizione di attività è registrata, un valore GB viene convertito in un numero intero che indica il MiB.  
Questo campo è facoltativo e può essere utilizzato qualsiasi valore. Se viene specificato un valore di memoria a livello di attività, il valore di memoria a livello di container è facoltativo. Se il cluster non dispone di istanze di container registrate con la memoria richiesta disponibile, l'attività non va a buon fine. Puoi ottimizzare l'utilizzo delle risorse assegnando alle attività quanta più memoria possibile per un determinato tipo di istanza. Per ulteriori informazioni, consulta [Allocazione della memoria di un'istanza di container Amazon ECS Linux](memory-management.md).

## Definizioni del container
<a name="container_definitions_ec2"></a>

Quando registri una definizione di attività, devi specificare un elenco di definizioni del container che vengono trasmesse al daemon Docker in un'istanza di container. I seguenti parametri sono consentiti in una definizione del container.

**Topics**
+ [

### Parametri standard di definizione del container
](#standard_container_definition_params_ec2)
+ [

### Parametri avanzati di definizione del container
](#advanced_container_definition_params_ec2)
+ [

### Altri parametri di definizione del container
](#other_container_definition_params_ec2)

### Parametri standard di definizione del container
<a name="standard_container_definition_params_ec2"></a>

I seguenti parametri di definizione di attività sono obbligatori o utilizzati nella maggior parte delle definizioni del container.

**Topics**
+ [

#### Nome
](#container_definition_name_ec2)
+ [

#### Immagine
](#container_definition_image_ec2)
+ [

#### Memoria
](#container_definition_memory_ec2)
+ [

#### Mappature di porte
](#container_definition_portmappings_ec2)
+ [

#### Credenziali del repository privato
](#container_definition_repositoryCredentials_ec2)

#### Nome
<a name="container_definition_name_ec2"></a>

`name`  
Tipo: stringa  
Obbligatorio: sì  
Il nome di un container. Sono consentite fino a 255 lettere (maiuscole e minuscole), numeri, trattini e caratteri di sottolineatura. Se colleghi più container in una definizione di attività, il parametro `name` di uno dei container può essere inserito nel parametro `links` di un altro container. Questo per collegare i container.

#### Immagine
<a name="container_definition_image_ec2"></a>

`image`  
Tipo: stringa  
Obbligatorio: sì  
L'immagine utilizzata per avviare un container. Questa stringa viene trasmessa direttamente al daemon Docker. Per impostazione predefinita, le immagini nel registro Docker Hub sono disponibili. Puoi anche specificare altri repository con `repository-url/image:tag` o `repository-url/image@digest`. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole); sono consentiti numeri, trattini, caratteri di sottolineatura, due punti, punti, barre e cancelletti. Questo parametro è mappato su `Image` nel comando creazione container e nel parametro `IMAGE` del docker di esecuzione del comando.  
+ Quando viene avviato un nuovo processo, l'agente del container Amazon ECS esegue il pull della versione più recente dell'immagine e del tag specificati per il container da utilizzare. Tuttavia, gli aggiornamenti successivi a un'immagine del repository non vengono propagate alle attività già in esecuzione.
+ Quando non specifichi un tag o un digest nel percorso dell'immagine nella definizione dell'attività, l'agente contenitore Amazon ECS utilizza il `latest` tag per estrarre l'immagine specificata. 
+  Gli aggiornamenti successivi a un'immagine del repository non vengono propagati alle attività già in esecuzione.
+ Le immagini nei registri privati sono supportate. Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).
+ Le immagini nei repository Amazon ECR possono essere specificate utilizzando la convenzione di denominazione `registry/repository:tag` o `registry/repository@digest`, ad esempio, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest` o `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE`.
+ Le immagini in repository ufficiali su Docker Hub utilizzano un singolo nome (ad esempio `ubuntu` o `mongo`).
+ Le immagini in altri repository su Docker Hub vengono qualificate con un nome di organizzazione (ad esempio, `amazon/amazon-ecs-agent`).
+ Le immagini in altri archivi online vengono ulteriormente qualificate da un nome di dominio (ad esempi, `quay.io/assemblyline/ubuntu`).

`versionConsistency`  
Tipo: String  
Valori validi: `enabled`\$1`disabled`  
Obbligatorio: no  
Specificare se Amazon ECS risolverà il tag dell'immagine del container fornito nella definizione del container in un digest di immagini. Per impostazione predefinita, questo comportamento è `enabled`. Se si imposta il valore per un container come `disabled`, Amazon ECS non risolverà il tag dell'immagine del container in un digest e utilizzerà l'URI dell'immagine originale specificato nella definizione del container per l'implementazione. Per ulteriori informazioni sulla risoluzione dell'immagine del container, consultare [Risoluzione dell’immagine del container](deployment-type-ecs.md#deployment-container-image-stability).

#### Memoria
<a name="container_definition_memory_ec2"></a>

`memory`  
Tipo: Integer  
Obbligatorio: no  
La quantità (in MiB) della memoria da presentare al container. Se il container tenta di superare la memoria specificata qui, viene terminato. La quantità totale di memoria prenotata per tutti i container all'interno di un processo deve essere inferiore al valore `memory` del processo, se specificato. Questo parametro è mappato a `Memory` nella creazione container del comando del docker e l'opzione `--memory` per docker run.  
È necessario specificare un valore di memoria a livello di attività o uno a livello di container. Se specifichi sia un valore di `memory` a livello di container che un valore di `memoryReservation`, `memory` deve essere maggiore del valore di `memoryReservation`. Se specifichi `memoryReservation`, tale valore viene sottratto dalle risorse di memoria disponibili per l'istanza di container in cui il container viene posizionato. in caso contrario, viene utilizzato il valore `memory`.  
Il daemon Docker 20.10.0 o versione successiva prenota un minimo di 6 MiB di memoria per un container. Pertanto, non specificare meno di 6 MiB di memoria per i container.  
Il daemon Docker 19.03.13-ce o versione precedente prenota un minimo di 4 MiB di memoria per un container. Pertanto, non specificare meno di 4 MiB di memoria per i container.  
Per ottimizzare l'utilizzo delle risorse, assegnando all'attività quanta più memoria possibile per un determinato tipo di istanza, consulta [Allocazione della memoria di un'istanza di container Amazon ECS Linux](memory-management.md).

`memoryReservation`  
Tipo: Integer  
Obbligatorio: no  
Il limite flessibile (in MiB) della memoria da prenotare per il container. Quando la memoria di sistema è in conflitto, Docker tenta di conservare la memoria del container entro questo limite flessibile. Tuttavia, il container può utilizzare una quantità maggiore di memoria, se necessario. Il container può utilizzare memoria fino al limite rigido specificato con il parametro `memory` (se applicabile) o tutta la memoria disponibile sull'istanza di container, a seconda di quale evento si verifica prima. Questo parametro è mappato a `MemoryReservation` nella creazione container del comando del docker e l'opzione `--memory-reservation` per docker run.  
Se non viene specificato un valore di memoria a livello di attività, è necessario specificare un numero intero diverso da zero per uno o entrambi i codici `memory` o `memoryReservation` in una definizione del container. Se specifichi entrambe, `memory` deve essere superiore a `memoryReservation`. Se specifichi `memoryReservation`, tale valore viene sottratto dalle risorse di memoria disponibili per l'istanza di container in cui il container viene posizionato. in caso contrario, viene utilizzato il valore `memory`.  
Ad esempio, supponiamo che il container normalmente utilizza 128 MiB di memoria, ma con picchi occasionali di 256 MiB di memoria per brevi periodi di tempo. Puoi impostare un valore di `memoryReservation` di 128 MiB e un limite rigido `memory` di 300 MiB. Questa configurazione consente al container di riservare 128 MiB di memoria solo dalle risorse restanti nell'istanza di container. Allo stesso tempo, questa configurazione consente al container di utilizzare più risorse di memoria quando necessario.  
Questo parametro non è supportato per i container Windows.
Il daemon Docker 20.10.0 o versione successiva prenota un minimo di 6 MiB di memoria per un container. Pertanto, non specificare meno di 6 MiB di memoria per i container.  
Il daemon Docker 19.03.13-ce o versione precedente prenota un minimo di 4 MiB di memoria per un container. Pertanto, non specificare meno di 4 MiB di memoria per i container.  
Per ottimizzare l'utilizzo delle risorse, assegnando all'attività quanta più memoria possibile per un determinato tipo di istanza, consulta [Allocazione della memoria di un'istanza di container Amazon ECS Linux](memory-management.md).

#### Mappature di porte
<a name="container_definition_portmappings_ec2"></a>

`portMappings`  
Tipo: array di oggetti  
Obbligatorio: no  
Le mappature delle porte espongono le porte di rete del container al mondo esterno. Ciò consente ai client di accedere all'applicazione. Viene anche utilizzato per la comunicazione tra container all'interno della stessa attività.  
Per le definizioni di attività che utilizzano la modalità di rete `awsvpc`, specifica solo il parametro `containerPort`. `hostPort` viene sempre ignorato e la porta del container viene mappata automaticamente su una casuale con numero alto sull'host.  
La mappatura delle porte su Windows usa l’indirizzo gateway `NetNAT` anziché `localhost`. Non vi è alcun loopback per le mappature delle porte su Windows, perciò non è possibile accedere alla porta mappata di un container dall'host stesso.   
La maggior parte dei campi di questo parametro (inclusi `containerPort`, `hostPort` e `protocol`) è associata a `PortBindings` nella sezione creazione container del comando e l'opzione `--publish` per docker run. Se la modalità di rete di una definizione di attività è impostata su `host`, le porte host devono essere non definite o devono corrispondere alla porta del container nella mappatura della porta.  
Dopo che un processo raggiunge lo stato `RUNNING`, gli incarichi manuali e automatici relativi alle porte del container e dell'host sono visibili nelle posizioni seguenti:  
+ Console: sezione **Binding di rete** della descrizione di un container per un processo selezionato.
+ AWS CLI: la sezione `networkBindings` dell'output del comando **describe-tasks**.
+ API: risposta `DescribeTasks`.
+ Metadati: l'endpoint dei metadati dell'attività.  
`appProtocol`  
▬Tipo: stringa  
Obbligatorio: no  
Il protocollo dell'applicazione utilizzato per la mappatura delle porte. Questo parametro si applica solo a Service Connect. Ti consigliamo di impostare questo parametro in maniera coerente con il protocollo utilizzato dall'applicazione. Se imposti questo parametro, Amazon ECS aggiunge la gestione delle connessioni specifica del protocollo al proxy Service Connect. Se imposti questo parametro, Amazon ECS aggiunge la telemetria specifica del protocollo nella console Amazon ECS e. CloudWatch  
Se non imposti un valore per questo parametro, viene utilizzato TCP. Amazon ECS, tuttavia, non aggiunge la telemetria specifica del protocollo TCP.  
Per ulteriori informazioni, consulta [Usa Service Connect per connettere i servizi Amazon ECS con nomi brevi](service-connect.md).  
Valori di protocollo validi: `"http" | "http2" | "grpc" `  
`containerPort`  
Tipo: numero intero  
Obbligatorio: sì, quando si utilizzano `portMappings`  
Il numero di porta nel container associato alla porta dell'host definito dall'utente o assegnata automaticamente.  
Per le attività che utilizzano la modalità di rete `awsvpc`, utilizzare `containerPort` per specificare le porte esposte.  
Supponiamo di utilizzare i container in un'attività con i provider di capacità EC2 e di specificare una porta di container ma non una porta dell'host. Il container riceve quindi automaticamente una porta dell'host nell'intervallo delle porte temporanee. Per ulteriori informazioni, consulta `hostPort`. La mappatura delle porte che sono assegnate automaticamente in questo modo non contano ai fini della quota di 100 porte riservate di un'istanza di container.  
`containerPortRange`  
▬Tipo: stringa  
Obbligatorio: no  
L'intervallo dei numeri di porta nel container associato all'intervallo di porte host mappato in maniera dinamica.   
È possibile impostare questo parametro solo utilizzando l'API `register-task-definition`. L'opzione è disponibile nel parametro `portMappings`. Per ulteriori informazioni, consulta [register-task-definition](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html) nella *documentazione di riferimento AWS Command Line Interface *.  
Quando specifichi un `containerPortRange`, si applicano le seguenti regole:  
+ Devi utilizzare la modalità di rete `bridge` o la modalità di rete `awsvpc`.
+ Questo parametro è disponibile per sistemi operativi sia Linux che Windows.
+ L'istanza di container deve avere almeno la versione 1.67.0 dell'agente del container e almeno la versione 1.67.0-1 del pacchetto `ecs-init`.
+ Puoi specificare fino a 100 intervalli di porte per container.
+ Non specificare un `hostPortRange`. Il valore dell'`hostPortRange` è impostato come indicato di seguito:
  + Per i container in un'attività con la modalità di rete `awsvpc`, la `hostPort` è impostata sullo stesso valore della `containerPort`. Questa è una strategia di mappatura statica.
  + Per i container in un'attività con la modalità di rete `bridge`, l'agente Amazon ECS trova le porte host aperte dall'intervallo effimero predefinito e lo passa a docker per associarle alle porte del container.
+ I valori validi di `containerPortRange` sono compresi tra 1 e 65535.
+ Una porta può essere inclusa solo in una sola mappatura delle porte per ogni container.
+ Non puoi specificare intervalli di porte sovrapposti.
+ La prima porta nell'intervallo deve essere minore dell'ultima porta nell'intervallo.
+ Docker consiglia di disattivare il proxy docker nel file di configurazione del daemon Docker quando disponi di un numero elevato di porte.

  [Per ulteriori informazioni, consulta il numero \$111185 su.](https://github.com/moby/moby/issues/11185) GitHub

  Per informazioni sulla modalità di disattivazione del proxy docker nel file di configurazione del daemon Docker, consulta [Daemon Docker](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon) nella *Guida per lo sviluppatore di Amazon ECS*.
Puoi effettuare la chiamata a [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html) per visualizzare l'`hostPortRange`, cioè le porte dell'host associate alle porte del container.  
Gli intervalli di porte non sono inclusi negli eventi delle attività di Amazon ECS, a EventBridge cui vengono inviati. Per ulteriori informazioni, consulta [Automatizza le risposte agli errori di Amazon ECS utilizzando EventBridge](cloudwatch_event_stream.md).  
`hostPortRange`  
▬Tipo: stringa  
Obbligatorio: no  
L'intervallo di numeri di porta sull'host utilizzato con il collegamento di rete. Questo viene assegnato da Docker e consegnato dall'agente Amazon ECS.  
`hostPort`  
Tipo: Integer  
Obbligatorio: no  
Il numero di porta nell'istanza di container per prenotare per il container.  
Puoi specificare una porta dell'host non riservata per la mappatura delle porte del container. Questa operazione viene definita mappatura *statica* delle porte dell'host. In alternativa, puoi omettere `hostPort` (o impostarlo su `0`) specificando `containerPort`. Il container riceve automaticamente una porta nell'intervallo di porte temporanee per il sistema operativo dell'istanza di container e la versione Docker. Questa operazione viene definita mappatura *dinamica* delle porte dell'host.  
L'intervallo di porte temporanee predefinite per Docker versione 1.6.0 e successive è elencato nell'istanza in `/proc/sys/net/ipv4/ip_local_port_range`. Se questo parametro kernel non è disponibile, viene utilizzato l'intervallo delle porte temporaneo di default da `49153–65535`. Non tentare di specificare una porta dell'host nell'intervallo di porte effimere. Questo perché sono riservate per l'assegnazione automatica. In generale, le porte al di sotto di `32768` non rientrano nell'intervallo delle porte temporanee. È possibile utilizzare l'`ECS_DYNAMIC_HOST_PORT_RANGE`impostazione nella configurazione dell'agente contenitore ECS per specificare un intervallo personalizzato per le porte host assegnate dinamicamente. Ciò può essere utile se le attività non vengono avviate a causa di conflitti di porte con altri processi sull'istanza del contenitore, ad esempio le connessioni in uscita che utilizzano anche porte dell'intervallo di porte temporanee. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).  
Le porte prenotate di default sono `22` per SSH, le porte Docker `2375` e `2376` e le porte `51678-51680` dell'agente del container di Amazon ECS. Qualsiasi porta dell'host precedentemente specificata dall'utente per un'attività in esecuzione viene prenotata anche mentre tale attività è in esecuzione. Dopo l'arresto di un'attività, la porta dell'host viene rilasciata. Le porte attualmente prenotate vengono visualizzate nel parametro `remainingResources` dell'output **describe-container-instances**. Un'istanza di container può contenere fino a 100 porte prenotate alla volta, incluse quelle predefinite. Le porte assegnate automaticamente non vengono conteggiate ai fini della quota di 100 porte prenotate.  
`name`  
Tipo: String  
Obbligatorio: no, necessario per configurare Service Connect e VPC Lattice in un servizio  
Il nome utilizzato per la mappatura delle porte. Questo parametro si applica solo a Service Connect e VPC Lattice. Questo parametro è il nome utilizzato nella configurazione di Service Connect e VPC Lattice di un servizio.  
Per ulteriori informazioni, consulta [Usa Service Connect per connettere i servizi Amazon ECS con nomi brevi](service-connect.md).  
Nell'esempio seguente, vengono visualizzati entrambi i campi obbligatori per Service Connect e VPC Lattice.  

```
"portMappings": [
    {
        "name": string,
        "containerPort": integer
    }
]
```  
`protocol`  
▬Tipo: stringa  
Obbligatorio: no  
Il protocollo utilizzato per la mappatura delle porte. I valori validi sono `tcp` e `udp`. Il valore predefinito è `tcp`.  
È supportato solo `tcp` per Service Connect. Ricorda che `tcp` è implicito se questo campo non è impostato. 
Il supporto UDP è disponibile solo nelle istanze di container che sono state avviate con la versione 1.2.0 dell'agente del container Amazon ECS (ad esempio l'AMI `amzn-ami-2015.03.c-amazon-ecs-optimized`) o successiva o con agenti del container che sono stati aggiornati alla versione 1.3.0 o successiva. Per passare all'ultima versione dell'agente del container, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md).
Se specifichi una porta dell'host, utilizza la seguente sintassi.  

```
"portMappings": [
    {
        "containerPort": integer,
        "hostPort": integer
    }
    ...
]
```
Se desideri una porta dell'host assegnata automaticamente, utilizza la seguente sintassi.  

```
"portMappings": [
    {
        "containerPort": integer
    }
    ...
]
```

#### Credenziali del repository privato
<a name="container_definition_repositoryCredentials_ec2"></a>

`repositoryCredentials`  
Tipo: oggetto [RepositoryCredentials](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RepositoryCredentials.html)  
Obbligatorio: no  
Le credenziali dell'archivio per l'autenticazione di un registro privato.  
Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).    
 `credentialsParameter`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `repositoryCredentials`  
L'Amazon Resource Name (ARN) del segreto contenente le credenziali dell'archivio privato.  
Per ulteriori informazioni, consulta [Utilizzo di immagini non AWS containerizzate in Amazon ECS](private-auth.md).  
Quando utilizzi l'API Amazon ECS o AWS SDKs se il segreto esiste nella stessa regione dell'attività che stai avviando, puoi utilizzare l'ARN completo o il nome del segreto. AWS CLI Quando si utilizza il Console di gestione AWS, è necessario specificare l'ARN completo del segreto.
Di seguito viene riportato un frammento di una definizione di attività che mostra i parametri obbligatori:  

```
"containerDefinitions": [
    {
        "image": "private-repo/private-image",
        "repositoryCredentials": {
            "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name"
        }
    }
]
```

### Parametri avanzati di definizione del container
<a name="advanced_container_definition_params_ec2"></a>

I seguenti parametri avanzati di definizione del container forniscono funzionalità estese al comando di esecuzione del docker che viene utilizzato per lanciare container nelle istanze di container di Amazon ECS.

**Topics**
+ [

#### Politica di riavvio
](#container_definition_restart_policy_ec2)
+ [

#### Controllo dell’integrità
](#container_definition_healthcheck_ec2)
+ [

#### Ambiente
](#container_definition_environment_ec2)
+ [

#### Impostazioni di rete
](#container_definition_network_ec2)
+ [

#### Archiviazione e registrazione
](#container_definition_storage_ec2)
+ [

#### Sicurezza
](#container_definition_security_ec2)
+ [

#### Limiti delle risorse
](#container_definition_limits_ec2)
+ [

#### Etichette Docker
](#container_definition_labels_ec2)

#### Politica di riavvio
<a name="container_definition_restart_policy_ec2"></a>

`restartPolicy`  
La politica di riavvio del container e i parametri di configurazione associati. Quando configuri una politica di riavvio per un container, Amazon ECS può riavviare il container senza dover sostituire l'attività. Per ulteriori informazioni, consulta [Riavviare singoli container nelle attività Amazon ECS con policy di riavvio dei container](container-restart-policy.md).    
`enabled`  
Tipo: Booleano  
Obbligatorio: sì  
Specificare se è abilitata una politica di riavvio per il container.  
`ignoredExitCodes`  
Tipo: array di numeri interi  
Obbligatorio: no  
Un elenco di codici di uscita che Amazon ECS ignorerà e non tenterà di riavviare. È possibile specificare fino a 50 codici di uscita dei container. Per impostazione predefinita, Amazon ECS non ignora alcun codice di uscita.  
`restartAttemptPeriod`  
Tipo: Integer  
Obbligatorio: no  
Un periodo di tempo (in secondi) durante il quale il container deve essere eseguito prima che venga tentato un riavvio. Un container può essere riavviato solo una volta ogni `restartAttemptPeriod` secondi. Se un container non è in grado di funzionare per questo periodo di tempo ed esce in anticipo, non verrà riavviato. È possibile specificare un `restartAttemptPeriod` minimo di 60 secondi e un `restartAttemptPeriod` massimo di 1.800 secondi. Per impostazione predefinita, un container deve funzionare per 300 secondi prima di poter essere riavviato.

#### Controllo dell’integrità
<a name="container_definition_healthcheck_ec2"></a>

`healthCheck`  
Comando di controllo dell'integrità del container e parametri di configurazione associati per il container. Per ulteriori informazioni, consulta [Determina lo stato delle attività di Amazon ECS utilizzando i controlli dell’integrità dei container](healthcheck.md).    
`command`  
Matrice di stringhe che rappresenta il comando eseguito dal container per determinare l'integrità. La matrice di stringhe può iniziare con `CMD` per eseguire direttamente gli argomenti del comando oppure con `CMD-SHELL` per eseguire il comando con la shell predefinita del container. Se non è specificato nessuno dei due, viene utilizzato `CMD`.  
Quando si registra una definizione di attività in Console di gestione AWS, utilizzare un elenco di comandi separati da virgole. Questi comandi vengono convertiti in stringa dopo la creazione della definizione delle attività. Di seguito è riportato un esempio di input per il controllo dell'integrità.  

```
CMD-SHELL, curl -f http://localhost/ || exit 1
```
Quando si registra una definizione di attività utilizzando il pannello Console di gestione AWS JSON, o il AWS CLI APIs, racchiude l'elenco dei comandi tra parentesi. Di seguito è riportato un esempio di input per il controllo dell'integrità.  

```
[ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ]
```
Un codice di uscita 0, senza output `stderr`, indica l'esito positivo, mentre un codice di uscita diverso da zero indica un errore.   
`interval`  
Intervallo di tempo (in secondi) tra ogni controllo dell'integrità. Puoi specificare un valore compreso tra 5 e 300 secondi. Il valore di predefinito è 30 secondi.  
`timeout`  
Periodo di tempo in secondi per cui attendere che un controllo dell'integrità venga superato prima di considerarlo un errore. Puoi specificare un valore compreso tra 2 e 60 secondi. Il valore predefinito è 5 secondi.  
`retries`  
Numero di tentativi per cui riprovare un controllo dello stato non riuscito prima che il container venga considerato non integro. Puoi specificare un valore compreso tra 1 e 10 tentativi. Il valore predefinito è tre tentativi.  
`startPeriod`  
Periodo di tolleranza facoltativo entro il quale concedere ai container il tempo necessario per il bootstrap prima che i controlli dell'integrità non riusciti vengano conteggiati rispetto al numero massimo di nuovi tentativi. Puoi specificare un valore compreso tra 0 e 300 secondi. Per impostazione predefinita, `startPeriod` è disabilitato.  
Se un controllo dello stato va a buon fine all'interno di `startPeriod`, il container è considerato integro e gli errori successivi vengono conteggiati rispetto al numero massimo di nuovi tentativi.

#### Ambiente
<a name="container_definition_environment_ec2"></a>

`cpu`  
Tipo: Integer  
Obbligatorio: no  
Il numero di unità `cpu` che l'agente del container Amazon ECS riserverà per il container. Su Linux, questo parametro è mappato a `CpuShares` nella sezione [Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate).  
Puoi determinare il numero di unità CPU disponibili per ciascun tipo di istanza Amazon EC2. A tale scopo, moltiplica il numero di v CPUs indicato per quel tipo di istanza nella pagina dei dettagli delle istanze [Amazon EC2](https://aws.amazon.com/ec2/instance-types/) per 1.024.
I container Linux condividono unità CPU non assegnate con altri container nell'istanza di container con lo stesso rapporto della quantità assegnata. Ad esempio, supponiamo di eseguire un'attività di container singolo in un tipo di istanza single core con 512 unità di CPU specificate per tale container. Inoltre, tale attività è l'unica in esecuzione sull'istanza di container. In questo esempio, il container può utilizzare la condivisione completa di 1.024 unità CPU in qualsiasi momento. Tuttavia, si supponga di aver avviato un'altra copia della stessa attività su quell'istanza di container. A ogni attività viene garantito un minimo di 512 unità CPU quando necessario. Analogamente, se l'altro container non utilizza la CPU rimanente, ogni container può passare a un maggiore utilizzo della CPU. Tuttavia, se entrambe le attività sono sempre attive al 100%, sono limitate a 512 unità CPU.  
Sulle istanze di container Linux, il daemon Docker nell'istanza di container utilizza il valore CPU per calcolare i relativi rapporti di quote di CPU per i container in esecuzione. Il valore minimo valido per la quota di CPU ammesso dal kernel Linux è 2, mentre quello massimo valido per la quota di CPU ammesso dal kernel Linux è 262.144. Tuttavia, il parametro CPU non è obbligatorio e puoi usare valori di CPU minori di 2 e superiori a 262.144 nelle definizioni del container. Per i valori di CPU minori di 2 (incluso un valore null) e superiori a 262.144, il comportamento varia in base alla versione dell'agente del container Amazon ECS:  
+ **Versioni dell'agente <= 1.1.0:** i valori di CPU null e zero vengono trasmessi a Docker come 0, che Docker successivamente converte in 1.024 quote di CPU. I valori di CPU di 1 vengono trasmessi a Docker come 1 e il kernel Linux li converte in due quote di CPU.
+ **Versioni dell'agente >= 1.2.0**: i valori di CPU null, zero e 1 vengono trasmessi a Docker come due quote di CPU.
+ **Versioni dell'agente >= 1.84.0:** i valori della CPU superiori a 256 vCPU vengono passati a Docker come 256, il che equivale a 262.144 condivisioni CPU.
Sulle istanze di container Windows, la quota di CPU viene applicata come assoluta. I container Windows hanno accesso solo alla quantità di CPU specificata nella definizione delle attività. Un valore di CPU null o zero viene trasmesso a Docker come `0`, che Windows interpreta come l'1% di una CPU.  
Per ulteriori esempi, consulta [Modalità di gestione delle risorse di CPU e memoria di Amazon ECS](https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/).

`gpu`  
Tipo: oggetto [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Obbligatorio: no  
Il numero di `GPUs` fisiche che l'agente del container Amazon ECS riserva per il container. Il numero di contenitori GPUs riservati a tutti i contenitori di un'attività non deve superare il numero di quelli disponibili GPUs sull'istanza del contenitore su cui viene avviata l'attività. Per ulteriori informazioni, consulta [Definizioni di attività Amazon ECS per carichi di lavoro GPU](ecs-gpu.md).  
Questo parametro non è supportato per i container Windows.

`Elastic Inference accelerator`  
Tipo: oggetto [ResourceRequirement](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html)  
Obbligatorio: no  
Per il tipo `InferenceAccelerator`, il `value` corrisponde a `deviceName` per un `InferenceAccelerator` specificato in una definizione di attività. Per ulteriori informazioni, consulta [Nome dell'acceleratore Elastic Inference (obsoleto)](task_definition_parameters.md#elastic-Inference-accelerator).  
Questo parametro non è supportato per i container Windows.

`essential`  
Tipo: Booleano  
Obbligatorio: no  
Si supponga che il parametro `essential` di un container sia contrassegnato come `true` e che tale container abbia esito negativo o si arresti per qualsiasi motivo. Di conseguenza, tutti gli altri container che fanno parte dell'attività vengono arrestati. Se il parametro `essential` di un container è contrassegnato come `false`, il suo esito negativo non influenza il resto dei container in un'attività. Se questo parametro viene omesso, un container si considera essenziale.  
Tutti i processi devono avere almeno un container essenziale. Supponiamo di avere un'applicazione composta da più container. In questo caso, si raggruppano i container utilizzati per uno scopo comune in componenti e si separano i diversi componenti in più definizioni delle attività. Per ulteriori informazioni, consulta [Progetta la tua applicazione per Amazon ECS](application_architecture.md).  

```
"essential": true|false
```

`entryPoint`  
Le versioni precedenti dell'agente del container Amazon ECS non gestiscono correttamente i parametri `entryPoint`. In caso di problemi durante l'utilizzo `entryPoint`, aggiorna l'agente del container o inserisci i comandi e gli argomenti come elementi di matrice `command`.
Tipo: array di stringhe  
Obbligatorio: no  
Il punto di ingresso che viene trasmesso al container.   

```
"entryPoint": ["string", ...]
```

`command`  
Tipo: array di stringhe  
Obbligatorio: no  
Il comando che viene inviato al container. Questo parametro è mappato a `Cmd` nella creazione container del comando e il parametro `COMMAND` per docker run. In caso di più argomenti, ognuno di questi deve essere una stringa separata nella matrice.  

```
"command": ["string", ...]
```

`workingDirectory`  
▬Tipo: stringa  
Obbligatorio: no  
La directory di lavoro nel container in cui eseguire i comandi. Questo parametro è mappato a `WorkingDir` nella sezione [Create a container](https://docs.docker.com/reference/api/engine/version/v1.38/#operation/ContainerCreate) di [Docker Remote API](https://docs.docker.com/reference/api/engine/version/v1.38/) e l'opzione `--workdir` a [https://docs.docker.com/reference/cli/docker/container/run/](https://docs.docker.com/reference/cli/docker/container/run/).  

```
"workingDirectory": "string"
```

`environmentFiles`  
Tipo: array di oggetti  
Obbligatorio: no  
Un elenco di file contenenti le variabili di ambiente da passare a un container. Questo parametro è mappato all'opzione `--env-file` al comando esecuzione del docker.  
Quando FIPS è abilitato, i nomi dei bucket con punti (.) (ad esempio, amzn-s3-demo-bucket1.name.example) non sono supportati. La presenza di punti (.) nel nome del bucket impedisce l'avvio dell'attività perché l'agente non può estrarre il file della variabile di ambiente da Amazon S3.  
Questa funzionalità non è disponibile per i container Windows.  
Puoi specificare fino a 10 file di ambiente. Il file deve avere un'estensione `.env`. Ogni riga di un file di ambiente deve contenere una variabile di ambiente nel formato `VARIABLE=VALUE`. Le righe che iniziano con `#` vengono trattate come commenti e vengono ignorate.   
Se nella definizione del container sono specificate singole variabili di ambiente, hanno la precedenza sulle variabili contenute in un file di ambiente. Se vengono specificati più file di ambiente che contengono la stessa variabile, vengono elaborati dall'alto verso il basso. Consigliamo di utilizzare nomi di variabili univoci. Per ulteriori informazioni, consulta [Passare una singola variabile di ambiente a un container Amazon ECS](taskdef-envfiles.md).    
`value`  
Tipo: stringa  
Obbligatorio: sì  
L'Amazon Resource Name (ARN) dell'oggetto Amazon S3 contenente il file della variabile di ambiente.  
`type`  
Tipo: stringa  
Obbligatorio: sì  
Il tipo di file da utilizzare L’unico valore supportato è `s3`.

`environment`  
Tipo: array di oggetti  
Obbligatorio: no  
Le variabili di ambiente da passare a un container. Questo parametro è mappato a `Env` nella creazione container del comando del docker e l'opzione `--env` al comando per docker run.  
Non è consigliabile utilizzare variabili di ambiente non crittografate per informazioni sensibili, ad esempio dati di credenziali.  
`name`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `environment`  
Il nome della variabile di ambiente.  
`value`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `environment`  
Il valore della variabile di ambiente.

```
"environment" : [
    { "name" : "string", "value" : "string" },
    { "name" : "string", "value" : "string" }
]
```

`secrets`  
Tipo: array di oggetti  
Obbligatorio: no  
Un oggetto che rappresenta il segreto da esporre al container. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipo: stringa  
Obbligatorio: sì  
Il valore da impostare come variabile di ambiente sul container.  
`valueFrom`  
Tipo: stringa  
Obbligatorio: sì  
Il segreto da esporre al container. I valori supportati sono l'Amazon Resource Name (ARN) completo del Gestione dei segreti AWS segreto o l'ARN completo del parametro nel Parameter Store. AWS Systems Manager   
Se il parametro Systems Manager Parameter Store o il parametro Secrets Manager esiste nella Regione AWS stessa operazione che si sta avviando, è possibile utilizzare l'ARN completo o il nome del segreto. Se il parametro esiste in una Regione diversa, deve essere specificato l'ARN completo.

```
"secrets": [
    {
        "name": "environment_variable_name",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }
]
```

#### Impostazioni di rete
<a name="container_definition_network_ec2"></a>

`disableNetworking`  
Tipo: Booleano  
Obbligatorio: no  
Quando questo parametro è true, le reti sono disabilitate all'interno del container.  
Questo parametro non è supportato per i container o le attività Windows che utilizzano la modalità di rete `awsvpc`.
Il valore predefinito è `false`.  

```
"disableNetworking": true|false
```

`links`  
Tipo: array di stringhe  
Obbligatorio: no  
Il parametro `link` consente ai container di comunicare tra loro senza la necessità di mappatura delle porte. Questo parametro è supportato solo se la modalità di rete di una definizione delle attività è impostata su `bridge`. Il costrutto `name:internalName` è analogo a `name:alias` nei collegamenti Docker. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini e trattini bassi.  
Questo parametro non è supportato per i container o le attività Windows che utilizzano la modalità di rete `awsvpc`.
I container che vengono posizionati nella stessa istanza di container potrebbero comunicare tra loro senza necessità di collegamenti o mappature delle porte dell'host. L'isolamento di rete su un'istanza di container è controllato da gruppi di sicurezza e impostazioni VPC.

```
"links": ["name:internalName", ...]
```

`hostname`  
▬Tipo: stringa  
Obbligatorio: no  
Il nome host da utilizzare per il container. Questo parametro è mappato a `Hostname` nella creazione container del docker e l'opzione `--hostname` per docker run.  
Se utilizzi la modalità di rete `awsvpc`, il parametro `hostname` non è supportato.

```
"hostname": "string"
```

`dnsServers`  
Tipo: array di stringhe  
Obbligatorio: no  
Un elenco di server DNS presentato al container.  
Questo parametro non è supportato per i container o le attività Windows che utilizzano la modalità di rete `awsvpc`.

```
"dnsServers": ["string", ...]
```

`dnsSearchDomains`  
Tipo: array di stringhe  
Obbligatorio: no  
Modello: ^[a-zA-Z0-9-.]\$10,253\$1[a-zA-Z0-9]\$1  
Un elenco di domini di ricerca DNS presentato al container. Questo parametro è mappato a `DnsSearch` nella creazione container del comando del docker e l'opzione `--dns-search` per docker run.  
Questo parametro non è supportato per i container o le attività di Windows che utilizzano la modalità di rete `awsvpc`.

```
"dnsSearchDomains": ["string", ...]
```

`extraHosts`  
Tipo: array di oggetti  
Obbligatorio: no  
Un elenco di nomi host e mappature di indirizzi IP da aggiungere al file `/etc/hosts` nel container.   
Questo parametro è mappato a `ExtraHosts` nella creazione container del comando del docker e l'opzione `--add-host` per docker run.  
Questo parametro non è supportato per i container o le attività di Windows che utilizzano la modalità di rete `awsvpc`.

```
"extraHosts": [
      {
        "hostname": "string",
        "ipAddress": "string"
      }
      ...
    ]
```  
`hostname`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `extraHosts`  
Il nome host da utilizzare nella voce `/etc/hosts`.  
`ipAddress`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `extraHosts`  
L'indirizzo IP da utilizzare nella voce `/etc/hosts`.

#### Archiviazione e registrazione
<a name="container_definition_storage_ec2"></a>

`readonlyRootFilesystem`  
Tipo: Booleano  
Obbligatorio: no  
Se il parametro è true, al container viene assegnato l'accesso in sola lettura al file system radice. Questo parametro è mappato a `ReadonlyRootfs` nella creazione container del comando del docker e l'opzione `--read-only` per docker run.  
Questo parametro non è supportato per i container Windows.
Il valore predefinito è `false`.  

```
"readonlyRootFilesystem": true|false
```

`mountPoints`  
Tipo: array di oggetti  
Obbligatorio: no  
I punti di montaggio per i volumi di dati nel container. Questo parametro è mappato ai `Volumes` nella creazione container dell'API Docker e l'opzione `--volume` per docker run.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`. I container Windows non possono montare le directory su un'unità diversa e i punti di montaggio non possono essere utilizzati tra le unità. È necessario specificare i punti di montaggio per collegare un volume Amazon EBS direttamente a un'attività Amazon ECS.    
`sourceVolume`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il nome del volume da montare.  
`containerPath`  
Tipo: String  
Obbligatorio: sì, quando si utilizzano `mountPoints`  
Il percorso nel container in cui verrà montato il volume.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.  
Per le attività eseguite sul sistema operativo Windows, lasciare il valore predefinito di `false`.

`volumesFrom`  
Tipo: array di oggetti  
Obbligatorio: no  
I volumi di dati da montare da un altro container. Questo parametro è mappato a `VolumesFrom` nella creazione container del comando del docker e l'opzione `--volumes-from` per docker run.    
`sourceContainer`  
Tipo: String  
Obbligatorio: sì, quando viene utilizzato `volumesFrom`  
Il nome del container da cui montare volumi.  
`readOnly`  
Tipo: Booleano  
Obbligatorio: no  
Se il valore è `true`, il container avrà accesso in sola lettura al volume. Se il valore è `false`, il container avrà accesso in scrittura al volume. Il valore predefinito è `false`.

```
"volumesFrom": [
                {
                  "sourceContainer": "string",
                  "readOnly": true|false
                }
              ]
```

`logConfiguration`  
Tipo: oggetto [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)  
Obbligatorio: no  
La specifica di configurazione dei log per il container.  
Per definizioni dell'attività di esempio che utilizzano una configurazione di log, consulta [Esempio di definizione di attività di Amazon ECS](example_task_definitions.md).  
Questo parametro è mappato a `LogConfig` nella creazione container del comando del docker e l'opzione `--log-driver` per docker run. Per impostazione predefinita, i container utilizzano lo stesso driver di log utilizzato dal daemon Docker. Tuttavia, il container può utilizzare un driver di log diverso da quello del daemon Docker, specificando un driver di log con questo parametro nella definizione del container. Per utilizzare un altro driver di log per un container, il sistema di log deve essere configurato correttamente nell'istanza di container (o su un altro server di log per le opzioni di logging in remoto).   
Si noti quanto segue quando si specifica una configurazione di log per i container:  
+ Amazon ECS supporta un sottoinsieme dei driver di log disponibili per il daemon Docker.
+ Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull'istanza di container.
+ L'agente del container Amazon ECS in esecuzione in un'istanza di container deve registrare i driver di log disponibili in tale istanza con la variabile di ambiente `ECS_AVAILABLE_LOGGING_DRIVERS` prima che i container posizionati sull'istanza possano utilizzare queste opzioni di configurazione di log. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).

```
"logConfiguration": {
      "logDriver": "awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens",
      "options": {"string": "string"
        ...},
	"secretOptions": [{
		"name": "string",
		"valueFrom": "string"
	}]
}
```  
`logDriver`  
Tipo: String  
Valori validi: `"awslogs","fluentd","gelf","json-file","journald","splunk","syslog","awsfirelens"`  
Obbligatorio: sì, quando viene utilizzato `logConfiguration`  
Il driver di log da utilizzare per il container. Per impostazione predefinita, i valori validi elencati in precedenza sono driver di log con i quali l'agente del container Amazon ECS può comunicare.  
I driver di log supportati sono `awslogs`, `fluentd`, `gelf`, `json-file`, `journald`, `syslog`, `splunk` e `awsfirelens`.  
Per ulteriori informazioni su come utilizzare il driver di `awslogs` registro nelle definizioni delle attività per inviare i log dei contenitori a CloudWatch Logs, vedere. [Invia i log di Amazon ECS a CloudWatch](using_awslogs.md)  
Per ulteriori informazioni sull'utilizzo del driver di log `awsfirelens`, consulta [Routing di log personalizzato](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html).  
Se disponi di un driver personalizzato che non è elencato, puoi eseguire il fork del progetto Amazon ECS Container Agent [disponibile su GitHub](https://github.com/aws/amazon-ecs-agent) e personalizzarlo in modo che funzioni con quel driver. Ti consigliamo di inviare le richieste pull per le modifiche che desideri siano incluse. Tuttavia, attualmente non forniamo il supporto per eseguire copie modificate di questo software.
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container.  
`options`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
La key/value mappa delle opzioni di configurazione da inviare al driver di registro.  
Le opzioni che è possibile specificare dipendono dal driver di log. Alcune delle opzioni che puoi specificare quando utilizzi il `awslogs` router per indirizzare i log ad Amazon CloudWatch includono:    
`awslogs-create-group`  
Obbligatorio: no  
Specifica se desideri che il gruppo di log venga creato automaticamente. Se questa opzione non è specificata, viene impostata in modo predefinito su `false`.  
La tua policy IAM deve includere l'autorizzazione `logs:CreateLogGroup`prima di provare a utilizzare `awslogs-create-group`.  
`awslogs-region`  
Obbligatorio: sì  
Specificate il Regione AWS driver di `awslogs` registro a cui inviare i log Docker. Puoi scegliere di inviare tutti i log dai cluster di diverse regioni a una singola regione in Logs. CloudWatch In questo modo saranno tutti visibili in un'unica posizione. In caso contrario, puoi separarli per regione per una maggiore granularità. Assicurati che il gruppo di log specificato esista nella regione definita tramite questa opzione.  
`awslogs-group`  
Obbligatorio: sì  
Assicurati di specificare un gruppo di log a cui il driver di log `awslogs` invia i flussi di log.  
`awslogs-stream-prefix`  
Obbligatorio: facoltativo  
Utilizza l'opzione `awslogs-stream-prefix` per associare un flusso di log al prefisso selezionato, al nome del container e all'ID dell'attività Amazon ECS al quale appartiene il container. Se specifichi un prefisso con questa opzione, il flusso di log assume il formato seguente.  

```
prefix-name/container-name/ecs-task-id
```
Se non specifichi un prefisso con questa opzione, il flusso di log viene denominato secondo l'ID del container assegnato dal daemon Docker nell'istanza di container. Poiché è difficile ricollegare i log al container che li ha inviati con il solo ID container Docker (disponibile solo sulle istanze di container), è consigliabile specificare un prefisso con questa opzione.  
Per i servizi Amazon ECS, puoi utilizzare il nome del servizio come prefisso. In questo modo puoi ricollegare i flussi di log al servizio a cui appartiene il container, al nome del container che li ha inviati e all'ID dell'attività a cui appartiene il container.  
Perché i log compaiano nell'apposito riquadro della console Amazon ECS, devi specificare un prefisso per il flusso dei log.  
`awslogs-datetime-format`  
Obbligatorio: no  
Questa opzione definisce un modello di inizio multilinea nel formato `strftime` Python. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. In questo modo la riga associata è il delimitatore tra i messaggi di log.  
Un esempio di un caso d'uso per l'utilizzo di questo formato è per l'analisi di output, ad esempio uno dump dello stack, che potrebbe altrimenti essere registrato in più voci. Il modello corretto consente di acquisirlo in una sola voce.  
Per ulteriori informazioni, consulta [awslogs-datetime-format](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-datetime-format).  
Non è possibile configurare entrambe le opzioni `awslogs-datetime-format` e `awslogs-multiline-pattern`.  
Il logging multilinea esegue un'espressione regolare per l'analisi e il confronto di tutti i messaggi di log. L'operazione potrebbe avere ripercussioni negative sulle prestazioni del logging.  
`awslogs-multiline-pattern`  
Obbligatorio: no  
Questa opzione definisce un modello di inizio multilinea che utilizza un'espressione regolare. Un messaggio di log è composto da una riga corrispondente al modello e da tutte le righe successive non corrispondenti al modello. In questo modo la riga associata è il delimitatore tra i messaggi di log.  
Per ulteriori informazioni, consulta [awslogs-multiline-pattern](https://docs.docker.com/engine/logging/drivers/awslogs/#awslogs-multiline-pattern).  
Questa opzione viene ignorata se anche `awslogs-datetime-format` è configurato.  
Non è possibile configurare entrambe le opzioni `awslogs-datetime-format` e `awslogs-multiline-pattern`.  
Il logging multilinea esegue un'espressione regolare per l'analisi e il confronto di tutti i messaggi di log. L'operazione potrebbe avere ripercussioni negative sulle prestazioni del logging.
Le seguenti opzioni si applicano a tutti i driver di log supportati.    
`mode`  
Obbligatorio: no  
Valori validi: `non-blocking` \$1 `blocking`  
Questa opzione definisce la modalità di consegna dei messaggi di log dal container al driver di log specificato utilizzando `logDriver`. La modalità di distribuzione scelta influisce sulla disponibilità dell'applicazione quando il flusso di log dal container viene interrotto.  
Se si utilizza la modalità `blocking` e il flusso di log viene interrotto, le chiamate provenienti dal codice del container e utilizzate per la scrittura sui flussi `stdout` e `stderr` verranno bloccate. Di conseguenza, il thread di registrazione dell'applicazione si bloccherà. Ciò può causare la mancata risposta dell'applicazione e la presenza di errori nel controllo d'integrità del container.   
Se utilizzi la modalità `non-blocking`, i log del container vengono invece archiviati in un buffer intermedio in memoria configurato con l'opzione `max-buffer-size`. In questo modo si evita la mancata risposta dell'applicazione quando non è possibile inviare i log. Ti consigliamo di utilizzare questa modalità se vuoi garantire la disponibilità del servizio nonostante una certa perdita di log. Per ulteriori informazioni, consultare [Preventing log loss with non-blocking mode in the `awslogs` container log driver](https://aws.amazon.com/blogs/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/).  
È possibile impostare un valore predefinito `mode` per tutti i container in un Regione AWS specifico utilizzando le impostazioni dell'account `defaultLogDriverMode`. Se non si specifica l'opzione `mode` in `logConfiguration` o non si configura l'impostazione dell'account, Amazon ECS utilizzerà per impostazione predefinita la modalità `non-blocking`. Per ulteriori informazioni sulle impostazioni dell'account, consultare [Modalità driver log predefinita](ecs-account-settings.md#default-log-driver-mode).  
Quando viene utilizzata la modalità `non-blocking`, l'opzione di log `max-buffer-size` controlla la dimensione del buffer utilizzato per l'archiviazione dei messaggi intermedi. Assicurati di specificare una dimensione del buffer adeguata in base all'applicazione in uso. La quantità totale di memoria allocata a livello di attività deve essere superiore a quella allocata per tutti i container oltre al driver di log del buffer di memoria.  
Il 25 giugno 2025, Amazon ECS ha cambiato la modalità predefinita del driver di log da `blocking` a `non-blocking` per dare priorità alla disponibilità delle attività rispetto al logging. Per continuare a utilizzare la modalità `blocking` dopo questa modifica, procedere in uno dei seguenti modi:  
+ Impostare l'opzione `mode` nella definizione del container `logConfiguration` come `blocking`.
+ Impostare le impostazioni dell'account `defaultLogDriverMode` su `blocking`.  
`max-buffer-size`  
Obbligatorio: no  
Valore predefinito: `10 m`  
Quando viene utilizzata la modalità `non-blocking`, l'opzione di log `max-buffer-size` controlla la dimensione del buffer utilizzato per l'archiviazione dei messaggi intermedi. Assicurati di specificare una dimensione del buffer adeguata in base all'applicazione in uso. Quando il buffer è pieno, non è possibile archiviare ulteriori log. I log che non possono essere archiviati vengono persi. 
Per indirizzare i log utilizzando il router di log `splunk`, è necessario specificare `splunk-token` e `splunk-url`.  
Quando si utilizza il router di `awsfirelens` log per indirizzare i log verso una AWS Partner Network destinazione Servizio AWS OR per l'archiviazione e l'analisi dei log, è possibile impostare l'`log-driver-buffer-limit`opzione per limitare il numero di righe di registro memorizzate nel buffer prima di essere inviate al contenitore del log router. Può aiutarti a risolvere potenziali problemi di perdita di log perché un throughput elevato potrebbe comportare l'esaurimento della memoria per il buffer all'interno di Docker. Per ulteriori informazioni, consulta [Configurazione dei log di Amazon ECS per un throughput elevato](firelens-docker-buffer-limit.md).  
Le altre opzioni che è possibile specificare quando si utilizza `awsfirelens` per indirizzare i log dipendono dalla destinazione. Quando esporti i log in Amazon Data Firehose, puoi specificare Regione AWS il `region` with e un nome per il flusso di log con. `delivery_stream`  
Quando si esportano i log in flusso di dati Amazon Kinesis, è possibile specificare Regione AWS con `region` e un nome per il flusso di dati con `stream`.  
 Quando esporti i log su Amazon OpenSearch Service, puoi specificare opzioni come`Name`, `Host` (Endpoint del OpenSearch servizio senza protocollo),`Port`,`Index`,`Type`, `Aws_auth` `Aws_region``Suppress_Type_Name`, e. `tls`  
Quando si esportano i log in Amazon S3, è possibile specificare il bucket utilizzando l'opzione `bucket`. È possibile anche specificare `region`, `total_file_size`, `upload_timeout` e `use_put_object` come opzioni.  
Questo parametro richiede la versione 1.19 o successiva di Docker Remote API sull'istanza di container.  
`secretOptions`  
Tipo: array di oggetti  
Obbligatorio: no  
Un oggetto che rappresenta il segreto da inviare alla configurazione di log. I segreti utilizzati nella configurazione di log possono includere un token di autenticazione, un certificato o una chiave di crittografia. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).    
`name`  
Tipo: stringa  
Obbligatorio: sì  
Il valore da impostare come variabile di ambiente sul container.  
`valueFrom`  
Tipo: stringa  
Obbligatorio: sì  
Il segreto da esporre alla configurazione di log del container.

```
"logConfiguration": {
	"logDriver": "splunk",
	"options": {
		"splunk-url": "https://cloud.splunk.com:8080",
		"splunk-token": "...",
		"tag": "...",
		...
	},
	"secretOptions": [{
		"name": "splunk-token",
		"valueFrom": "/ecs/logconfig/splunkcred"
	}]
}
```

`firelensConfiguration`  
Tipo: oggetto [FirelensConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FirelensConfiguration.html)  
Obbligatorio: no  
La FireLens configurazione per il contenitore. Si utilizza per specificare e configurare un router di log per i log del container. Per ulteriori informazioni, consulta [Inviare i log di Amazon ECS a un servizio o AWS AWS Partner](using_firelens.md).  

```
{
    "firelensConfiguration": {
        "type": "fluentd",
        "options": {
            "KeyName": ""
        }
    }
}
```  
`options`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
La key/value mappa delle opzioni da usare durante la configurazione del log router. Questo campo è facoltativo e può essere utilizzato per aggiungere ulteriori metadati, ad esempio il processo, la definizione di attività, il cluster e i dettagli dell'istanza di container all'evento di log. Se specificato, la sintassi da utilizzare è `"options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::amzn-s3-demo-bucket/fluent.conf|filepath"}`. Per ulteriori informazioni, consulta [Esempio di definizione dell'attività Amazon ECS: indirizzare i log a FireLens](firelens-taskdef.md).  
`type`  
Tipo: stringa  
Obbligatorio: sì  
Il router di log da utilizzare. I valori validi sono `fluentd` o `fluentbit`.

#### Sicurezza
<a name="container_definition_security_ec2"></a>

Per ulteriori informazioni sulla sicurezza di container, consultare [Best practice per la sicurezza delle attività e dei container di Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-tasks-containers.html).

`credentialSpecs`  
Tipo: array di stringhe  
Obbligatorio: no  
Un elenco di file ARNs in SSM o Amazon S3 in un file spec `CredSpec` () delle credenziali che configura il contenitore per l'autenticazione Active Directory. Consigliamo di utilizzare questo parametro anziché `dockerSecurityOptions`. Il numero massimo di è 1. ARNs   
Esistono due formati per ogni ARN.    
credentialspecdomainless:MyARN  
Utilizza `credentialspecdomainless:MyARN` per fornire un file `CredSpec` con una sezione aggiuntiva per un segreto in Secrets Manager. Specifica le credenziali di accesso al dominio nel campo segreto.  
Ogni attività eseguita su qualsiasi istanza di container può aggiungere domini diversi.  
Puoi utilizzare questo formato senza aggiungere l'istanza di container a un dominio.  
credentialspec:MyARN  
Utilizza `credentialspec:MyARN` per fornire un nome a un file `CredSpec` per un singolo dominio.  
Devi aggiungere l'istanza di container al dominio prima di iniziare qualsiasi attività che utilizzi questa definizione delle attività.
In entrambi i formati, sostituisci `MyARN` con l'ARN in SSM o Amazon S3.  
Il file `credspec` deve fornire un ARN in Secrets Manager per un segreto contenente il nome utente, la password e il dominio a cui collegarsi. Per una maggiore sicurezza, l'istanza non viene aggiunta al dominio per l'autenticazione senza dominio. Le altre applicazioni sull'istanza non possono utilizzare le credenziali senza dominio. Puoi utilizzare questo parametro per eseguire attività sulla stessa istanza, anche se le attività devono aggiungere domini diversi. Per ulteriori informazioni, vedere [Usare g MSAs per Windows Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html) e [Using g MSAs for Linux Containers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html).

`privileged`  
Tipo: Booleano  
Obbligatorio: no  
Se il parametro è true, al container vengono assegnati privilegi elevati nell'istanza di container host (simile all'utente `root`). Si consiglia di non far funzionare i container con `privileged`. Nella maggior parte dei casi, puoi specificare i privilegi esatti necessari utilizzando i parametri specifici anziché `privileged`.  
Questo parametro è mappato a `Privileged` nella creazione container del comando del docker e l'opzione `--privileged` per docker run.  
Questo parametro non è supportato per i container o le attività Windows che utilizzano il tipo di avvio Fargate.
Il valore predefinito è `false`.  

```
"privileged": true|false
```

`user`  
▬Tipo: stringa  
Obbligatorio: no  
L'utente da usare all'interno del container. Questo parametro è mappato a `User` nella creazione container del comando del docker e l'opzione `--user` per docker run.  
Quando esegui attività che utilizzano la modalità di rete `host`, non eseguire container utilizzando l'utente root (UID 0). Come best practice per la sicurezza, utilizza sempre un utente non root.
È possibile specificare `user` utilizzando i seguenti formati. Un eventuale UID o GID deve essere specificato come numero intero positivo.  
+ `user`
+ `user:group`
+ `uid`
+ `uid:gid`
+ `user:gid`
+ `uid:group`
Questo parametro non è supportato per i container Windows.

```
"user": "string"
```

`dockerSecurityOptions`  
Tipo: array di stringhe  
Valori validi: "no-new-privileges" \$1 «AppArmor:profile» \$1 «label:*value*" \$1 «credentialspec:» *CredentialSpecFilePath*  
Obbligatorio: no  
Un elenco di stringhe per fornire una configurazione personalizzata per più sistemi di sicurezza.  
Per le attività Linux, questo parametro può essere utilizzato per fare riferimento a etichette personalizzate per i sistemi di sicurezza su più livelli SELinux e AppArmor .  
Questo parametro può essere utilizzato per fare riferimento a un file di specifica delle credenziali che configura un container per l'autenticazione di Active Directory. Per ulteriori informazioni, consultare [Informazioni su come utilizzare i gMSA per i container Windows EC2 per Amazon ECS](windows-gmsa.md) e [Utilizzo del gMSA per container EC2 Linux su Amazon ECS](linux-gmsa.md).  
Questo parametro è mappato a `SecurityOpt` nella creazione container del comando del docker e l'opzione `--security-opt` per docker run.  

```
"dockerSecurityOptions": ["string", ...]
```
L'agente del container Amazon ECS che viene eseguito su un'istanza di container deve registrarsi con le variabili di ambiente `ECS_SELINUX_CAPABLE=true` o `ECS_APPARMOR_CAPABLE=true` prima che i container posizionati su tale istanza possano utilizzare queste opzioni di sicurezza. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).

#### Limiti delle risorse
<a name="container_definition_limits_ec2"></a>

`ulimits`  
Tipo: array di oggetti  
Obbligatorio: no  
Un elenco di valori `ulimit` da definire per un container. Questo valore sovrascrive l'impostazione della quota di risorse predefinite per il sistema operativo. Questo parametro è mappato a `Ulimits` nella creazione container del comando del docker e l'opzione `--ulimit` per docker run.  
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container.  
Questo parametro non è supportato per i container Windows.

```
"ulimits": [
      {
        "name": "core"|"cpu"|"data"|"fsize"|"locks"|"memlock"|"msgqueue"|"nice"|"nofile"|"nproc"|"rss"|"rtprio"|"rttime"|"sigpending"|"stack",
        "softLimit": integer,
        "hardLimit": integer
      }
      ...
    ]
```  
`name`  
Tipo: String  
Valori validi: `"core" | "cpu" | "data" | "fsize" | "locks" | "memlock" | "msgqueue" | "nice" | "nofile" | "nproc" | "rss" | "rtprio" | "rttime" | "sigpending" | "stack"`  
Obbligatorio: sì, quando si utilizzano `ulimits`  
`type` di `ulimit`.  
`hardLimit`  
Tipo: numero intero  
Obbligatorio: sì, quando si utilizzano `ulimits`  
Il limite rigido per il tipo `ulimit`. Il valore può essere specificato in byte, secondi o come conteggio, a seconda del `type` di `ulimit`.  
`softLimit`  
Tipo: numero intero  
Obbligatorio: sì, quando si utilizzano `ulimits`  
Il limite flessibile per il tipo `ulimit`. Il valore può essere specificato in byte, secondi o come conteggio, a seconda del `type` di `ulimit`.

#### Etichette Docker
<a name="container_definition_labels_ec2"></a>

`dockerLabels`  
Tipo: mappatura stringa a stringa  
Obbligatorio: no  
Una key/value mappa di etichette da aggiungere al contenitore. Questo parametro è mappato a `Labels` nella creazione container del comando del docker e l'opzione `--label` per docker run.   
Questo parametro richiede la versione 1.18 o successiva di Docker Remote API sull’istanza di container.  

```
"dockerLabels": {"string": "string"
      ...}
```

### Altri parametri di definizione del container
<a name="other_container_definition_params_ec2"></a>

I seguenti parametri di definizione del container possono essere utilizzati quando si registrano le definizioni di attività nella console Amazon ECS utilizzando l'opzione **Configure via JSON** (Configura tramite JSON). Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

**Topics**
+ [

#### Parametri Linux
](#container_definition_linuxparameters_ec2)
+ [

#### Dipendenze per i container
](#container_definition_dependson_ec2)
+ [

#### Timeout del container
](#container_definition_timeout_ec2)
+ [

#### Controlli di sistema
](#container_definition_systemcontrols_ec2)
+ [

#### Interactive
](#container_definition_interactive_ec2)
+ [

#### Pseudoterminale
](#container_definition_pseudoterminal_ec2)

#### Parametri Linux
<a name="container_definition_linuxparameters_ec2"></a>

`linuxParameters`  
Tipo: oggetto [LinuxParameters](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LinuxParameters.html)  
Obbligatorio: no  
Linux-opzioni specifiche applicate al contenitore, ad esempio [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).  
Questo parametro non è supportato per i container Windows.

```
"linuxParameters": {
      "capabilities": {
        "add": ["string", ...],
        "drop": ["string", ...]
        }
      }
```  
`capabilities`  
Tipo: oggetto [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities_ec2.html)  
Obbligatorio: no  
Le funzionalità di Linux per il container che vengono aggiunte o eliminate dalla configurazione predefinita fornita da Docker. Per ulteriori informazioni su queste funzionalità di Linux, consulta la pagina del manuale Linux [capabilities(7)](http://man7.org/linux/man-pages/man7/capabilities.7.html).    
`add`  
Tipo: array di stringhe  
Valori validi: `"ALL" | "AUDIT_CONTROL" | "AUDIT_READ" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"`  
Campo obbligatorio: no  
Le funzionalità di Linux per il container da aggiungere alla configurazione predefinita fornita da Docker. Questo parametro è mappato a `CapAdd` nella creazione container del comando del docker e l'opzione `--cap-add` per docker run.  
`add`  
Tipo: array di stringhe  
Valori validi: `"SYS_PTRACE"`  
Campo obbligatorio: no  
Le funzionalità di Linux per il container da aggiungere alla configurazione predefinita fornita da Docker. Questo parametro è mappato a `CapAdd` nella creazione container del comando del docker e l'opzione `--cap-add` per docker run.  
`drop`  
Tipo: array di stringhe  
Valori validi: `"ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | "SYSLOG" | "WAKE_ALARM"`  
Campo obbligatorio: no  
Le funzionalità di Linux per il container da eliminare dalla configurazione predefinita fornita da Docker. Questo parametro è mappato a `CapDrop` nella creazione container del comando del docker e l'opzione `--cap-drop` per docker run.  
`devices`  
Qualsiasi dispositivi host da esporre nel container. Questo parametro è mappato a `Devices` nella creazione container del comando del docker e l'opzione `--device` per docker run.  
Tipo: matrice di oggetti [Device](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Device.html)  
Obbligatorio: no    
`hostPath`  
Il percorso per il dispositivo nell'istanza di container dell'host.  
Tipo: stringa  
Obbligatorio: sì  
`containerPath`  
Il percorso nel container in cui esporre il dispositivo dell'host.  
▬Tipo: stringa  
Obbligatorio: no  
`permissions`  
Le autorizzazioni esplicite da fornire al container per il dispositivo. Di default, il container dispone di autorizzazioni per `read`, `write` e `mknod` sul dispositivo.  
Tipo: array di stringhe  
Valori validi: `read` \$1 `write` \$1 `mknod`  
`initProcessEnabled`  
Esegui un processo `init` nel container che inoltra segnali e raccoglie i processi. Questo parametro è mappato all'opzione `--init` su docker run.  
Questo parametro richiede la versione 1.25 o successiva di Docker Remote API sull'istanza di container.  
`maxSwap`  
La quantità totale di memoria di swap (in MiB) che un container può utilizzare. Questo parametro viene convertito nell'opzione `--memory-swap` in docker run dove il valore sarebbe la somma della memoria del container più il valore `maxSwap`.  
Se viene specificato il valore `maxSwap` di `0`, il container non utilizzerà lo swap. I valori accettati sono `0` o qualsiasi numero intero positivo. Se il parametro `maxSwap` viene omesso, il container utilizza la configurazione di swap per l'istanza di container su cui è in esecuzione. È necessario impostare un valore `maxSwap` per il parametro `swappiness` da utilizzare.  
`sharedMemorySize`  
Valore per le dimensioni (in MiB) del volume `/dev/shm`. Questo parametro è mappato all'opzione `--shm-size` su docker run.  
Tipo: numero intero  
`swappiness`  
Puoi utilizzare questo parametro per ottimizzare il funzionamento swappiness della memoria di un container. Un valore `swappiness` di `0` impedisce che si verifichi lo scambio, a meno che non sia necessario. Un valore `swappiness` di `100` fa sì che le pagine vengano scambiate frequentemente. I valori accettati sono numeri interi compresi tra `0` e `100`. Se non specifichi un valore, viene utilizzato il valore predefinito di `60`. Inoltre, se non specifichi un valore per `maxSwap`, questo parametro verrà ignorato. Questo parametro è mappato all'opzione `--memory-swappiness` su docker run.  
Se utilizzi le attività su Amazon Linux 2023, il parametro `swappiness` non è supportato.  
`tmpfs`  
Il percorso del container, le opzioni di montaggio e le dimensioni massime (in MiB) del montaggio tmpfs. Questo parametro è mappato all'opzione `--tmpfs` su docker run.  
Tipo: matrice di oggetti [Tmpfs](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Tmpfs.html)  
Obbligatorio: no    
`containerPath`  
Percorso assoluto in cui deve essere montato il volume tmpfs.  
Tipo: stringa  
Obbligatorio: sì  
`mountOptions`  
L'elenco delle opzioni di montaggio del volume tmpfs.  
Tipo: array di stringhe  
Obbligatorio: no  
Valori validi: `"defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol"`  
`size`  
Le dimensioni massime (in MiB) del volume tmpfs.  
Tipo: numero intero  
Obbligatorio: sì

#### Dipendenze per i container
<a name="container_definition_dependson_ec2"></a>

`dependsOn`  
Tipo: matrice di oggetti [ContainerDependency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDependency.html)  
Obbligatorio: no  
Le dipendenze definite per l'avvio e la chiusura dei container. Un contenitore può contenere più dipendenze. Se una dipendenza è definita per l'avvio del container, per la sua chiusura è invertita. Per un esempio, consulta [Dipendenze per i container](example_task_definitions.md#example_task_definition-containerdependency).  
Se un container non soddisfa un vincolo di dipendenza o si verifica un timeout prima di rispondere al vincolo, Amazon ECS non avanza i container dipendenti allo stato successivo.
Le istanze richiedono almeno la versione `1.26.0` dell'agente del container per abilitare le dipendenze del container. Tuttavia, ti consigliamo di utilizzare la versione più recente dell'agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md). Se utilizzi l'AMI Amazon Linux ottimizzata per Amazon ECS, l'istanza deve disporre almeno della versione `1.26.0-1` del pacchetto `ecs-init`. Le istanze di container avviate dalla versione `20190301` o successive contengono già le versioni richieste dell'agente del container e di `ecs-init`. Per ulteriori informazioni, consulta [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md).  

```
"dependsOn": [
    {
        "containerName": "string",
        "condition": "string"
    }
]
```  
`containerName`  
Tipo: stringa  
Obbligatorio: sì  
Il nome del container che deve soddisfare la condizione specificata.  
`condition`  
Tipo: stringa  
Obbligatorio: sì  
La condizione di dipendenza del container. Di seguito sono elencate le condizioni disponibili e il loro comportamento:  
+ `START`: questa condizione emula il comportamento dei collegamenti e dei volumi. La condizione convalida l'avvio di un container dipendente prima di consentire l'avvio di altri container.
+ `COMPLETE`: questa condizione verifica l'esecuzione fino al completamento (uscita) di un container dipendente prima di consentire l'avvio di altri container. Può rivelarsi utile per container non essenziali che eseguono uno script e quindi escono. Questa condizione non può essere impostata su un container essenziale.
+ `SUCCESS`: questa condizione è uguale a `COMPLETE`, ma richiede anche che il container esca con stato `zero`. Questa condizione non può essere impostata su un container essenziale.
+ `HEALTHY`: questa condizione verifica che il container dipendente superi il controllo dell'integrità del container prima di consentire l'avvio di altri container. Ciò richiede che per il container dipendente siano configurati i controlli dell'integrità nella definizione di attività. Questa condizione è confermata solo all'avvio dell'attività.

#### Timeout del container
<a name="container_definition_timeout_ec2"></a>

`startTimeout`  
Tipo: Integer  
Obbligatorio: no  
Valori di esempio: `120`  
Tempo di attesa (in secondi) prima di rinunciare a risolvere le dipendenze per un container.  
Ad esempio, vengono specificati due container in una definizione di attività: `containerA` ha una dipendenza sul `containerB` quando raggiunge lo stato `COMPLETE`, `SUCCESS` o `HEALTHY`. Se per `containerB` è specificato un valore `startTimeout` e non raggiunge lo stato desiderato entro tale periodo di tempo, allora `containerA` non viene avviato.  
Se un container non soddisfa un vincolo di dipendenza o si verifica un timeout prima di rispondere al vincolo, Amazon ECS non avanza i container dipendenti allo stato successivo.
Il valore massimo è 120 secondi.

`stopTimeout`  
Tipo: Integer  
Obbligatorio: no  
Valori di esempio: `120`  
Durata (in secondi) di attesa prima che sia forzata la chiusura se il container non si arresta da solo normalmente.  
Se il parametro `stopTimeout` non è specificato, viene utilizzato il valore impostato per la variabile di configurazione dell'agente del container Amazon ECS `ECS_CONTAINER_STOP_TIMEOUT`. Se non sono impostati né il parametro `stopTimeout` né la variabile di configurazione dell'agente `ECS_CONTAINER_STOP_TIMEOUT`, vengono utilizzati i valori predefiniti di 30 secondi per i container Linux e 30 secondi per quelli Windows. Per consentire il valore di timeout di arresto per un container, le istanze di container richiedono almeno la versione 1.26.0 dell'agente del container. Tuttavia, ti consigliamo di utilizzare la versione più recente dell’agente container. Per informazioni sulla verifica della versione dell'agente e sull'aggiornamento alla versione più recente, consulta [Aggiornamento dell'agente del container Amazon ECS](ecs-agent-update.md). Se utilizzi l'AMI Amazon Linux ottimizzata per Amazon ECS, l'istanza deve disporre almeno della versione 1.26.0-1 del pacchetto `ecs-init`. Le istanze di container avviate dalla versione `20190301` o successive contengono già le versioni richieste dell'agente del container e di `ecs-init`. Per ulteriori informazioni, consulta [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md).

#### Controlli di sistema
<a name="container_definition_systemcontrols_ec2"></a>

`systemControls`  
Tipo: oggetto [SystemControl](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_SystemControl.html)  
Obbligatorio: no  
Un elenco di parametri kernel associati a un namespace da impostare nel container. Questo parametro è mappato a `Sysctls` nella creazione container del comando del docker e l'opzione `--sysctl` per docker run. Ad esempio, puoi configurare l'impostazione `net.ipv4.tcp_keepalive_time` per mantenere le connessioni di lunga durata.  
Non è consigliabile specificare i parametri `systemControls` correlati alla rete per più container in un'unica attività che utilizza anche la modalità di rete `awsvpc` o `host`. Ciò comporta i seguenti svantaggi:  
+ Per le attività che utilizzano la modalità di rete `awsvpc`, se hai impostato `systemControls` per qualsiasi container, si applica a tutti i container nell'attività. Se hai impostato diversi `systemControls` per più container in un'unica attività, il container che viene avviato per ultimo determina quale `systemControls` diventa effettivo.
+ Per attività che utilizzano la modalità di rete `host`, il namespace della rete `systemControls` non è supportato.
Se stai impostando un namespace della risorsa IPC per utilizzare i container nell'attività, ai controlli di sistema si applicano le seguenti condizioni. Per ulteriori informazioni, consulta [Modalità IPC](task_definition_parameters.md#task_definition_ipcmode).  
+ Per le attività che utilizzano la modalità `host` IPC, i valori `systemControls` del namespace IPC non sono supportati.
+ Per le attività che utilizzano la modalità IPC `task`, i valori di `systemControls` del namespace IPC si applicano a tutti i container all'interno di un'attività.
Questo parametro non è supportato per i container Windows.

```
"systemControls": [
    {
         "namespace":"string",
         "value":"string"
    }
]
```  
`namespace`  
▬Tipo: stringa  
Obbligatorio: no  
Il parametro kernel associato a un namespace per il quale impostare un parametro `value`.  
Valori del namespace IPC validi: `"kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | "kernel.shm_rmid_forced"` e `Sysctls` che iniziano con `"fs.mqueue.*"`  
Valori del namespace di rete validi: `Sysctls` che iniziano con `"net.*"`  
`value`  
▬Tipo: stringa  
Obbligatorio: no  
Il valore per il parametro kernel associato a un namespace specificato in `namespace`.

#### Interactive
<a name="container_definition_interactive_ec2"></a>

`interactive`  
Tipo: Booleano  
Obbligatorio: no  
Quando questo parametro è `true`, puoi implementare le applicazioni containerizzate che richiedono l'allocazione di `stdin` o `tty`. Questo parametro è mappato a `OpenStdin` nella creazione container del comando del docker e l'opzione `--interactive` per docker run.  
Il valore predefinito è `false`.

#### Pseudoterminale
<a name="container_definition_pseudoterminal_ec2"></a>

`pseudoTerminal`  
Tipo: Booleano  
Obbligatorio: no  
Quando il parametro è `true`, è allocato un TTY. Questo parametro è mappato a `Tty` nella creazione container del comando del docker e l'opzione `--tty` per docker run.  
Il valore predefinito è `false`.

## Nome dell'acceleratore Elastic Inference (obsoleto)
<a name="elastic-Inference-accelerator_ec2"></a>

Il requisito della risorsa dell'acceleratore di Elastic Inference per la definizione di attività. 

**Nota**  
Amazon Elastic Inference (EI) non è più disponibile per i clienti.

I parametri seguenti sono permessi nella definizione di un processo:

`deviceName`  
Tipo: stringa  
Obbligatorio: sì  
Il nome del dispositivo dell'acceleratore di inferenza elastica. Il `deviceName` deve anche essere riferito in una definizione del container; consulta [Elastic Inference accelerator](task_definition_parameters.md#ContainerDefinition-elastic-inference).

`deviceType`  
Tipo: stringa  
Obbligatorio: sì  
L'acceleratore di inferenza elastica da utilizzare.

## Vincoli di posizionamento delle attività
<a name="constraints_ec2"></a>

Quando registri una definizione di attività, puoi specificare vincoli di posizionamento dei processi che definiscono il modo in cui Amazon ECS posiziona i processi.

È possibile utilizzare i vincoli per posizionare le attività in base alla zona di disponibilità, al tipo di istanza o agli attributi personalizzati. Per ulteriori informazioni, consulta [Definisci quali istanze di container utilizza Amazon ECS per le attività](task-placement-constraints.md).

I seguenti parametri sono consentiti in una definizione del container:

`expression`  
▬Tipo: stringa  
Obbligatorio: no  
Un'espressione del linguaggio di query del cluster da applicare al vincolo. Per ulteriori informazioni, consulta [Creare espressioni per definire istanze di container per le attività di Amazon ECS](cluster-query-language.md).

`type`  
Tipo: stringa  
Obbligatorio: sì  
Il tipo di vincolo. Utilizza `memberOf` per limitare la selezione a un gruppo di candidati validi.

## Configurazione del proxy
<a name="proxyConfiguration_ec2"></a>

`proxyConfiguration`  
Tipo: oggetto [ProxyConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ProxyConfiguration.html)  
Obbligatorio: no  
I dettagli di configurazione del proxy App Mesh.  
Per le attività che utilizzano EC2, per abilitare una configurazione proxy le istanze di container richiedono almeno la versione 1.26.0 dell'agente del container e almeno la versione 1.26.0-1 del pacchetto `ecs-init`. Se le istanze di container sono avviate dall'AMI ottimizzata per Amazon ECS versione `20190301` o successiva, contengono le versioni richieste dell'agente container e di `ecs-init`. Per ulteriori informazioni, consulta [Linux ottimizzato per Amazon ECS AMIs](ecs-optimized_AMI.md).  
Questo parametro non è supportato per i container Windows.

```
"proxyConfiguration": {
    "type": "APPMESH",
    "containerName": "string",
    "properties": [
        {
           "name": "string",
           "value": "string"
        }
    ]
}
```  
`type`  
Tipo: String  
Valori del valore: `APPMESH`  
Obbligatorio: no  
Il tipo di proxy. L’unico valore supportato è `APPMESH`.  
`containerName`  
Tipo: stringa  
Obbligatorio: sì  
Il nome del container che agirà come proxy App Mesh.  
`properties`  
Tipo: matrice di oggetti [KeyValuePair](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KeyValuePair.html)  
Obbligatorio: no  
Il set di parametri di configurazione di rete per il plug-in Container Network Interface (CNI), specificati come coppie chiave-valore.  
+ `IgnoredUID`: (obbligatorio) l'ID utente (UID) del container proxy come definito dal parametro `user` in una definizione del container. Serve a garantire che il proxy ignori il proprio traffico. Se è specificato `IgnoredGID`, questo campo può rimanere vuoto.
+ `IgnoredGID`: (obbligatorio) l'ID gruppo (GID) del container proxy come definito dal parametro `user` in una definizione del container. Serve a garantire che il proxy ignori il proprio traffico. Se è specificato `IgnoredUID`, questo campo può rimanere vuoto.
+ `AppPorts` (obbligatorio): l'elenco delle porte utilizzate dall'applicazione. Il traffico di rete per queste porte viene inoltrato alle porte `ProxyIngressPort` e `ProxyEgressPort`.
+ `ProxyIngressPort` (obbligatorio): specifica la porta a cui è diretto il traffico in entrata per le `AppPorts`.
+ `ProxyEgressPort` (obbligatorio): specifica la porta a cui è diretto il traffico in uscita da `AppPorts`.
+ `EgressIgnoredPorts`: (obbligatorio) il traffico in uscita diretto verso le porte specificate viene ignorato e non reindirizzato alla `ProxyEgressPort`. Può essere un elenco vuoto.
+ `EgressIgnoredIPs`: (obbligatorio) il traffico in uscita diretto verso gli indirizzi IP specificati viene ignorato e non reindirizzato alla `ProxyEgressPort`. Può essere un elenco vuoto.  
`name`  
▬Tipo: stringa  
Obbligatorio: no  
Nome della coppia chiave-valore.  
`value`  
▬Tipo: stringa  
Obbligatorio: no  
Valore della coppia chiave-valore.

## Volumi
<a name="volumes_ec2"></a>

Quando si registra una definizione di attività, è possibile eventualmente specificare un elenco di volumi da trasferire al daemon Docker su un'istanza di container, che diventerà poi accessibile ad altri container nella stessa istanza.

Di seguito sono elencati i tipi di volumi di dati che è possibile utilizzare:
+ Volumi Amazon EBS: forniscono un'archiviazione a blocchi conveniente, durevole e ad alte prestazioni per carichi di lavoro containerizzati a uso intensivo di dati. È possibile collegare 1 volume Amazon EBS a ogni attività Amazon ECS durante l'esecuzione di un'attività isolata oppure durante la creazione o l'aggiornamento di un servizio. I volumi Amazon EBS sono supportati per le attività Linux. Per ulteriori informazioni, consulta [Usare i volumi Amazon EBS con Amazon ECS](ebs-volumes.md).
+ Volumi Amazon EFS: offre uno spazio di archiviazione di file semplice, scalabile e persistente da utilizzare con i processi Amazon ECS. Con Amazon EFS, la capacità di storage è elastica. Cresce e si riduce automaticamente man mano che aggiungi e rimuovi file. Le tue applicazioni possono disporre dello spazio di archiviazione di cui hanno bisogno e quando ne hanno bisogno. I volumi Amazon EFS sono supportati. Per ulteriori informazioni, consulta [Usare i volumi Amazon EFS con Amazon ECS](efs-volumes.md).
+ FSx per volumi Windows File Server: fornisce file server Microsoft Windows completamente gestiti. Questi server di file sono supportati da un file system Windows. Quando si utilizza FSx Windows File Server insieme ad Amazon ECS, è possibile effettuare il provisioning delle attività Windows con uno storage di file persistente, distribuito, condiviso e statico. Per ulteriori informazioni, consulta [Utilizzo FSx per volumi Windows File Server con Amazon ECS](wfsx-volumes.md).

  Questa opzione non è supportata per i container Windows su Fargate.
+ Volumi docker: un volume gestito da Docker creato in `/var/lib/docker/volumes` sull'istanza host Amazon EC2. I driver del volume Docker (detti anche plug-in) vengono utilizzati per integrare i volumi ai sistemi di archiviazione esterni, ad esempio Amazon EBS. È possibile utilizzare il driver del volume `local` integrato o un driver di volume di terza parte. I volumi Docker sono supportati solo quando si eseguono attività su istanze Amazon EC2. I container Windows supportano solo l’uso del driver `local`. Per usare i volumi Docker, specifica `dockerVolumeConfiguration` nella definizione di attività.
+ Montaggi vincolati: un file o una directory sulla macchina host montato in un container. I volumi host di montaggio vincolato sono supportati. Per usare i volumi host di montaggi vincolati, specifica un valore `host` e un valore opzionale `sourcePath` nella definizione di attività.

Per ulteriori informazioni, consulta [Opzioni di archiviazione per le attività di Amazon ECS](using_data_volumes.md).

I seguenti parametri sono consentiti in una definizione del container.

`name`  
▬Tipo: stringa  
Obbligatorio: no  
Nome del volume. Il nome può contenere un massimo di 255 lettere (maiuscole e minuscole), numeri, trattini (`-`) e trattini bassi (`_`). Nel parametro `sourceVolume` dell'oggetto `mountPoints` della definizione del container viene fatto riferimento a questo nome.

`host`  
Obbligatorio: no  
Il parametro `host` viene utilizzato per legare il ciclo di vita del montaggio vincolato all'istanza host di Amazon EC2 anziché al processo, dove invece è archiviato. Se il parametro `host` è vuoto, il daemon Docker assegna un percorso host per il tuo volume di dati, ma non è garantito che i dati vengano mantenuti dopo che viene interrotta l'esecuzione del container a essi associato.  
I container Windows possono montare intere directory sulla stessa unità di `$env:ProgramData`.  
Il `sourcePath` parametro è supportato solo quando si utilizzano attività ospitate su istanze Amazon EC2 o Amazon ECS Managed Instances.  
`sourcePath`  
▬Tipo: stringa  
Obbligatorio: no  
Quando viene utilizzato il parametro `host`, specifica un `sourcePath` per dichiarare il percorso sull'istanza Amazon EC2 dell'host presentata al container. Se questo parametro è vuoto, il daemon Docker assegna automaticamente un percorso host. Se il parametro `host` contiene una posizione del file `sourcePath`, il volume di dati rimane nella posizione specificata sull'istanza Amazon EC2 dell'host finché non viene eliminato manualmente. Se il valore `sourcePath` non esiste nell'istanza Amazon EC2 dell'host, viene creato automaticamente dal daemon Docker. Se la posizione è presente, i contenuti della cartella del percorso di origine vengono esportati.

`configuredAtLaunch`  
Tipo: Booleano  
Obbligatorio: no  
Specificare se un volume è configurabile all'avvio. Se impostato su `true`, è possibile configurare il volume quando si esegue un'attività autonoma o quando si crea o si aggiorna un servizio. Se impostato su `true`, non sarà possibile fornire un'altra configurazione di volume nella definizione dell'attività. Questo parametro deve essere impostato su `true` per configurare un volume Amazon EBS da allegare a un'attività. L'impostazione di `configuredAtLaunch` su `true` e il rinvio della configurazione del volume alla fase di avvio consentono di creare definizioni di attività che non sono limitate a un tipo di volume o a impostazioni di volume specifiche. In questo modo, la definizione dell'attività è riutilizzabile in diversi ambienti di esecuzione. Per ulteriori informazioni consulta [Amazon EBS volumes](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html).

`dockerVolumeConfiguration`  
Tipo: oggetto [DockerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DockerVolumeConfiguration.html)  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizzano volumi docker. I volumi Docker sono supportati solo se i processi vengono eseguiti su istanze EC2. I container Windows supportano solo l’uso del driver `local`. Per utilizzare i montaggi vincolati, specifica invece un `host`.    
`scope`  
Tipo: String  
Valori validi: `task` \$1 `shared`  
Obbligatorio: no  
L'ambito del volume Docker che determina il suo ciclo di vita. I volumi Docker che rientrano nell'ambito `task` vengono automaticamente assegnati all'avvio del processo e distrutti quando il processo viene arrestato. I volumi Docker che vengono definiti come `shared` vengono mantenuti dopo l'arresto del processo.  
`autoprovision`  
Tipo: Booleano  
Valore predefinito: `false`  
Obbligatorio: no  
Se questo valore è `true`, viene creato il volume Docker, se non è già presente. Questo campo è utilizzato solo se `scope` è `shared`. Se `scope` è `task`, questo parametro deve essere omesso.  
`driver`  
▬Tipo: stringa  
Obbligatorio: no  
Il driver del volume Docker da utilizzare. Il valore del driver deve corrispondere al nome del driver fornito da Docker perché questo nome è utilizzato per il posizionamento dell'attività. Se il driver è stato installato utilizzando la CLI del plugin Docker, utilizzare `docker plugin ls` per richiamare il nome del driver dall'istanza di container. Se il driver è stato installato utilizzando un altro metodo, utilizzare il rilevamento del plugin Docker per richiamare il nome del driver.  
`driverOpts`  
▬Tipo: stringa  
Obbligatorio: no  
Una mappa delle opzioni specifiche del driver Docker da inviare. Questo parametro fa riferimento a `DriverOpts` nella sezione Crea un volume di Docker.  
`labels`  
▬Tipo: stringa  
Obbligatorio: no  
Metadati personalizzati da aggiungere al volume Docker.

`efsVolumeConfiguration`  
Tipo: oggetto [EFSVolumedi configurazione](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSVolumeConfiguration.html)  
Obbligatorio: no  
Questo parametro viene specificato quando si utilizzano volumi Amazon EFS.    
`fileSystemId`  
Tipo: stringa  
Obbligatorio: sì  
L'ID del file system Amazon EFS da utilizzare.  
`rootDirectory`  
▬Tipo: stringa  
Obbligatorio: no  
La directory all'interno del file system Amazon EFS da montare come directory principale all'interno dell'host. Se questo parametro viene omesso, verrà utilizzata la radice del volume Amazon EFS. La specifica di `/` avrà lo stesso effetto dell'omissione di questo parametro.  
Se un punto di accesso EFS è specificato in `authorizationConfig`, il parametro della directory radice deve essere omesso o impostato su `/` per applicare il percorso impostato sul punto di accesso EFS.  
`transitEncryption`  
Tipo: String  
Valori validi: `ENABLED` \$1 `DISABLED`  
Obbligatorio: no  
Specifica se abilitare o meno la crittografia per i dati Amazon EFS in transito tra l'host Amazon ECS e il server Amazon EFS. Se si utilizza l'autorizzazione IAM di Amazon EFS, è necessario abilitare la crittografia di transito. Se questo parametro viene omesso, viene utilizzato il comportamento predefinito di `DISABLED`. Per ulteriori informazioni, consulta [Encrypting Data in Transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`transitEncryptionPort`  
Tipo: Integer  
Obbligatorio: no  
La porta da utilizzare per l'invio di dati crittografati tra l'host Amazon ECS e il server Amazon EFS. Se non si specifica una porta di crittografia di transito, l'attività utilizzerà la strategia di selezione della porta usata dall'helper per il montaggio di Amazon EFS. Per ulteriori informazioni, consulta [Assistente per il montaggio di EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`authorizationConfig`  
Tipo: oggetto [EFSAuthorizationConfig](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_EFSAuthorizationConfig.html)  
Obbligatorio: no  
I dettagli di configurazione dell'autorizzazione per il file system Amazon EFS.    
`accessPointId`  
▬Tipo: stringa  
Obbligatorio: no  
L'ID del punto di accesso da utilizzare. Se viene specificato un punto di accesso, il valore della directory root specificato in `efsVolumeConfiguration` deve essere omesso o impostato su `/` per applicare il percorso impostato sul punto di accesso EFS. Se si utilizza un punto di accesso, la crittografia di transito deve essere abilitata in `EFSVolumeConfiguration`. Per ulteriori informazioni, consulta [Utilizzo dei punti di accesso Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) nella *Guida per l'utente di Amazon Elastic File System*.  
`iam`  
Tipo: String  
Valori validi: `ENABLED` \$1 `DISABLED`  
Obbligatorio: no  
Specificare se utilizzare o meno il ruolo IAM dell'attività Amazon ECS riportato in una definizione di attività durante il montaggio del file system Amazon EFS. Se abilitato, la crittografia di transito deve essere abilitata nella casella `EFSVolumeConfiguration`. Se questo parametro viene omesso, viene utilizzato il comportamento predefinito di `DISABLED`. Per ulteriori informazioni consulta [Ruoli IAM per le attività](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

`FSxWindowsFileServerVolumeConfiguration`  
Tipo: oggetto [FSxWindowsFileServerVolumeConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html)  
Obbligatorio: sì  
Questo parametro viene specificato quando utilizzi un file system [Amazon FSx for Windows File Server](https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html) per l'archiviazione delle attività.    
`fileSystemId`  
Tipo: stringa  
Obbligatorio: sì  
L' FSx ID del file system Windows File Server da utilizzare.  
`rootDirectory`  
Tipo: stringa  
Obbligatorio: sì  
La directory all'interno del FSx file system Windows File Server da montare come directory principale all'interno dell'host.  
`authorizationConfig`    
`credentialsParameter`  
Tipo: stringa  
Obbligatorio: sì  
Le opzioni delle credenziali di autorizzazione.  

**opzioni:**
+ Nome della risorsa Amazon (ARN) del segreto [Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html).
+ ARN di un parametro [AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).  
`domain`  
Tipo: stringa  
Obbligatorio: sì  
Un nome di dominio completo ospitato da una directory [AWS Directory Service for Microsoft Active Directory](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html) (AWS Managed Microsoft AD) o da una directory EC2 Active autonoma.

## Tag
<a name="tags_ec2"></a>

Quando registri una definizione di attività, puoi facoltativamente specificare tag di metadati applicati alla definizione di attività. I tag consentono di suddividere in categorie e organizzare la definizione di attività. Ciascun tag è formato da una chiave e da un valore facoltativo. Li definisci entrambi. Per ulteriori informazioni, consulta [Aggiunta di tag alle risorse Amazon ECS](ecs-using-tags.md).

**Importante**  
Non aggiungere Informazioni personali di identificazione o altre informazioni riservate o sensibili nei tag. I tag sono accessibili a molti AWS servizi, inclusa la fatturazione. I tag non sono destinati a essere utilizzati per dati privati o sensibili.

I seguenti parametri sono consentiti in un oggetto di tag.

`key`  
▬Tipo: stringa  
Obbligatorio: no  
Una parte di una coppia chiave-valore che costituisce un tag. Una chiave è un'etichetta generale che funge da categoria per più valori di tag specifici.

`value`  
▬Tipo: stringa  
Obbligatorio: no  
La parte facoltativa di una coppia chiave-valore che costituisce un tag. Un valore agisce come descrittore all'interno di una categoria di tag (chiave).

## Altri parametri di definizione di attività
<a name="other_task_definition_params_ec2"></a>

I seguenti parametri di definizione di attività possono essere utilizzati quando si registrano le definizioni di attività nella console Amazon ECS con l'opzione **Configure via JSON** (Configura tramite JSON). Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

**Topics**
+ [

### Modalità IPC
](#task_definition_ipcmode_ec2)
+ [

### Modalità PID
](#task_definition_pidmode_ec2)
+ [

### Iniezione di guasti
](#task_definition_faultInjection_ec2)

### Modalità IPC
<a name="task_definition_ipcmode_ec2"></a>

`ipcMode`  
▬Tipo: stringa  
Obbligatorio: no  
Il namespace della risorsa IPC da utilizzare per i container nell'attività. I valori validi sono `host`, `task` o `none`. Se è specificato `host`, tutti i container all'interno delle attività che hanno specificato la modalità `host` IPC sulla stessa istanza di container condividono le stesse risorse IPC con l'istanza host Amazon EC2. Se è stato specificato `task`, tutti i container all'interno dell'attività specificata condividono le stesse risorse IPC. Se è stato specificato `none`, le risorse IPC all'interno dei container di un'attività sono private e non condivise con altri container in un'attività o sull'istanza di container. Se non è stato specificato alcun valore, la condivisione del namespace della risorsa IPC dipende dalle impostazioni del daemon Docker sull'istanza del container.  
Se viene utilizzata la modalità `host` IPC, tieni presente che esiste un maggiore rischio di esposizione a spazi dei nomi IPC indesiderati.  
Se stai impostando parametri kernel associati a un namespace utilizzando `systemControls` per i container nell'attività, al namespace della risorsa IPC si applica quanto segue.   
+ Per le attività che utilizzano la modalità `host` IPC, spazi dei nomi IPC correlati a `systemControls` non sono supportati.
+ Per le attività che utilizzano la modalità `task` IPC, `systemControls` correlati al namespace IPC vengono applicati a tutti i container all'interno di un'attività.

### Modalità PID
<a name="task_definition_pidmode_ec2"></a>

`pidMode`  
Tipo: String  
Valori validi: `host` \$1 `task`  
Obbligatorio: no  
Il namespace del processo da utilizzare per i container nell'attività. I valori validi sono `host` o `task`. Ad esempio, i sidecar di monitoraggio potrebbero aver bisogno di `pidMode` per accedere a informazioni su altri container in esecuzione nella stessa attività.  
Se è specificato `host`, tutti i container all'interno delle attività che hanno specificato la modalità `host` PID sulla stessa istanza di container condividono lo stesso namespace dell'attività con l'istanza host Amazon EC2.  
Se è stato specificato `task`, tutti i container all'interno dell'attività specificata condividono lo stesso namespace del processo.  
Se non è stato specificato alcun valore, l'impostazione predefinita è un namespace privato per ogni container.   
Se viene utilizzata la modalità `host` PID, esiste un maggiore rischio di esposizione a spazi dei nomi di attività indesiderati.

**Nota**  
Questo parametro non è supportato per i container Windows.

### Iniezione di guasti
<a name="task_definition_faultInjection_ec2"></a>

`enableFaultInjection`  
Tipo: Booleano  
Valori validi: `true` \$1 `false`  
Obbligatorio: no  
Se questo parametro è impostato su `true`, nel payload di un'attività, Amazon ECS accetta richieste di iniezione di guasti dai container della stessa. Il valore del parametro è `false` per impostazione predefinita.

# Modello di definizione di attività di Amazon ECS
<a name="task-definition-template"></a>

Di seguito è riportato un modello di definizione di attività vuoto. È possibile utilizzare questo modello per creare la definizione dell'attività, che può quindi essere incollata nell'area di input JSON della console o salvata in un file e utilizzata con l'opzione. AWS CLI `--cli-input-json` Per ulteriori informazioni, consulta [Parametri di definizione di attività Amazon ECS per Fargate](task_definition_parameters.md).

**Modello EC2**

```
{
  "family": "",
  "taskRoleArn": "",
  "executionRoleArn": "",
  "networkMode": "none",
  "containerDefinitions": [
    {
      "name": "",
      "image": "",
      "repositoryCredentials": {
        "credentialsParameter": ""
      },
      "cpu": 0,
      "memory": 0,
      "memoryReservation": 0,
      "links": [""],
      "portMappings": [
        {
          "containerPort": 0,
          "hostPort": 0,
          "protocol": "tcp"
        }
      ],
      "restartPolicy": {
        "enabled": true,
        "ignoredExitCodes": [0],
        "restartAttemptPeriod": 180
      },
      "essential": true,
      "entryPoint": [""],
      "command": [""],
      "environment": [
        {
          "name": "",
          "value": ""
        }
      ],
      "environmentFiles": [
        {
          "value": "",
          "type": "s3"
        }
      ],
      "mountPoints": [
        {
          "sourceVolume": "",
          "containerPath": "",
          "readOnly": true
        }
      ],
      "volumesFrom": [
        {
          "sourceContainer": "",
          "readOnly": true
        }
      ],
      "linuxParameters": {
        "capabilities": {
          "add": [""],
          "drop": [""]
        },
        "devices": [
          {
            "hostPath": "",
            "containerPath": "",
            "permissions": ["read"]
          }
        ],
        "initProcessEnabled": true,
        "sharedMemorySize": 0,
        "tmpfs": [
          {
            "containerPath": "",
            "size": 0,
            "mountOptions": [""]
          }
        ],
        "maxSwap": 0,
        "swappiness": 0
      },
      "secrets": [
        {
          "name": "",
          "valueFrom": ""
        }
      ],
      "dependsOn": [
        {
          "containerName": "",
          "condition": "COMPLETE"
        }
      ],
      "startTimeout": 0,
      "stopTimeout": 0,
      "hostname": "",
      "user": "",
      "workingDirectory": "",
      "disableNetworking": true,
      "privileged": true,
      "readonlyRootFilesystem": true,
      "dnsServers": [""],
      "dnsSearchDomains": [""],
      "extraHosts": [
        {
          "hostname": "",
          "ipAddress": ""
        }
      ],
      "dockerSecurityOptions": [""],
      "interactive": true,
      "pseudoTerminal": true,
      "dockerLabels": {
        "KeyName": ""
      },
      "ulimits": [
        {
          "name": "nofile",
          "softLimit": 0,
          "hardLimit": 0
        }
      ],
      "logConfiguration": {
        "logDriver": "splunk",
        "options": {
          "KeyName": ""
        },
        "secretOptions": [
          {
            "name": "",
            "valueFrom": ""
          }
        ]
      },
      "healthCheck": {
        "command": [""],
        "interval": 0,
        "timeout": 0,
        "retries": 0,
        "startPeriod": 0
      },
      "systemControls": [
        {
          "namespace": "",
          "value": ""
        }
      ],
      "resourceRequirements": [
        {
          "value": "",
          "type": "InferenceAccelerator"
        }
      ],
      "firelensConfiguration": {
        "type": "fluentbit",
        "options": {
          "KeyName": ""
        }
      }
    }
  ],
  "volumes": [
    {
      "name": "",
      "host": {
        "sourcePath": ""
      },
      "configuredAtLaunch": true,
      "dockerVolumeConfiguration": {
        "scope": "shared",
        "autoprovision": true,
        "driver": "",
        "driverOpts": {
          "KeyName": ""
        },
        "labels": {
          "KeyName": ""
        }
      },
      "efsVolumeConfiguration": {
        "fileSystemId": "",
        "rootDirectory": "",
        "transitEncryption": "DISABLED",
        "transitEncryptionPort": 0,
        "authorizationConfig": {
          "accessPointId": "",
          "iam": "ENABLED"
        }
      },
      "fsxWindowsFileServerVolumeConfiguration": {
        "fileSystemId": "",
        "rootDirectory": "",
        "authorizationConfig": {
          "credentialsParameter": "",
          "domain": ""
        }
      }
    }
  ],
  "placementConstraints": [
    {
      "type": "memberOf",
      "expression": ""
    }
  ],
  "requiresCompatibilities": ["EC2"],
  "cpu": "",
  "memory": "",
  "tags": [
    {
      "key": "",
      "value": ""
    }
  ],
  "pidMode": "task",
  "ipcMode": "task",
  "proxyConfiguration": {
    "type": "APPMESH",
    "containerName": "",
    "properties": [
      {
        "name": "",
        "value": ""
      }
    ]
  },
  "inferenceAccelerators": [
    {
      "deviceName": "",
      "deviceType": ""
    }
  ],
  "ephemeralStorage": {
    "sizeInGiB": 0
  },
  "runtimePlatform": {
    "cpuArchitecture": "X86_64",
    "operatingSystemFamily": "WINDOWS_SERVER_20H2_CORE"
  }
}
```

**Modello Fargate**

**Importante**  
 Per Fargate, è necessario includere il parametro `operatingSystemFamily` con uno dei valori seguenti:  
`LINUX`
`WINDOWS_SERVER_2019_FULL`
`WINDOWS_SERVER_2019_CORE`
`WINDOWS_SERVER_2022_FULL`
`WINDOWS_SERVER_2022_CORE`

```
{
    "family": "",
    "runtimePlatform": {"operatingSystemFamily": ""},
    "taskRoleArn": "",
    "executionRoleArn": "",
    "networkMode": "awsvpc",
    "platformFamily": "",
    "containerDefinitions": [
        {
            "name": "",
            "image": "",
            "repositoryCredentials": {"credentialsParameter": ""},
            "cpu": 0,
            "memory": 0,
            "memoryReservation": 0,
            "links": [""],
            "portMappings": [
                {
                    "containerPort": 0,
                    "hostPort": 0,
                    "protocol": "tcp"
                }
            ],
            "essential": true,
            "entryPoint": [""],
            "command": [""],
            "environment": [
                {
                    "name": "",
                    "value": ""
                }
            ],
            "environmentFiles": [
                {
                    "value": "",
                    "type": "s3"
                }
            ],
            "mountPoints": [
                {
                    "sourceVolume": "",
                    "containerPath": "",
                    "readOnly": true
                }
            ],
            "volumesFrom": [
                {
                    "sourceContainer": "",
                    "readOnly": true
                }
            ],
            "linuxParameters": {
                "capabilities": {
                    "add": [""],
                    "drop": [""]
                },
                "devices": [
                    {
                        "hostPath": "",
                        "containerPath": "",
                        "permissions": ["read"]
                    }
                ],
                "initProcessEnabled": true,
                "sharedMemorySize": 0,
                "tmpfs": [
                    {
                        "containerPath": "",
                        "size": 0,
                        "mountOptions": [""]
                    }
                ],
                "maxSwap": 0,
                "swappiness": 0
            },
            "secrets": [
                {
                    "name": "",
                    "valueFrom": ""
                }
            ],
            "dependsOn": [
                {
                    "containerName": "",
                    "condition": "HEALTHY"
                }
            ],
            "startTimeout": 0,
            "stopTimeout": 0,
            "hostname": "",
            "user": "",
            "workingDirectory": "",
            "disableNetworking": true,
            "privileged": true,
            "readonlyRootFilesystem": true,
            "dnsServers": [""],
            "dnsSearchDomains": [""],
            "extraHosts": [
                {
                    "hostname": "",
                    "ipAddress": ""
                }
            ],
            "dockerSecurityOptions": [""],
            "interactive": true,
            "pseudoTerminal": true,
            "dockerLabels": {"KeyName": ""},
            "ulimits": [
                {
                    "name": "msgqueue",
                    "softLimit": 0,
                    "hardLimit": 0
                }
            ],
            "logConfiguration": {
                "logDriver": "awslogs",
                "options": {"KeyName": ""},
                "secretOptions": [
                    {
                        "name": "",
                        "valueFrom": ""
                    }
                ]
            },
            "healthCheck": {
                "command": [""],
                "interval": 0,
                "timeout": 0,
                "retries": 0,
                "startPeriod": 0
            },
            "systemControls": [
                {
                    "namespace": "",
                    "value": ""
                }
            ],
            "resourceRequirements": [
                {
                    "value": "",
                    "type": "GPU"
                }
            ],
            "firelensConfiguration": {
                "type": "fluentd",
                "options": {"KeyName": ""}
            }
        }
    ],
    "volumes": [
        {
            "name": "",
            "host": {"sourcePath": ""},
            "configuredAtLaunch":true,
            "dockerVolumeConfiguration": {
                "scope": "task",
                "autoprovision": true,
                "driver": "",
                "driverOpts": {"KeyName": ""},
                "labels": {"KeyName": ""}
            },
            "efsVolumeConfiguration": {
                "fileSystemId": "",
                "rootDirectory": "",
                "transitEncryption": "ENABLED",
                "transitEncryptionPort": 0,
                "authorizationConfig": {
                    "accessPointId": "",
                    "iam": "ENABLED"
                }
            }
        }
    ],
    "requiresCompatibilities": ["FARGATE"],
    "cpu": "",
    "memory": "",
    "tags": [
        {
            "key": "",
            "value": ""
        }
    ],
    "ephemeralStorage": {"sizeInGiB": 0},
    "pidMode": "task",
    "ipcMode": "none",
    "proxyConfiguration": {
        "type": "APPMESH",
        "containerName": "",
        "properties": [
            {
                "name": "",
                "value": ""
            }
        ]
    },
    "inferenceAccelerators": [
        {
            "deviceName": "",
            "deviceType": ""
        }
    ]
}
```

Puoi generare questo modello di definizione di attività utilizzando il seguente comando AWS CLI .

```
aws ecs register-task-definition --generate-cli-skeleton
```

# Esempio di definizione di attività di Amazon ECS
<a name="example_task_definitions"></a>

È possibile copiare gli esempi e i frammenti per iniziare a creare le proprie definizioni di attività. 

Puoi copiare gli esempi e incollarli quando utilizzi l'opzione **Configura tramite JSON** nella console. Assicurati di personalizzare gli esempi, ad esempio l'utilizzo del tuo ID account. Puoi includere i frammenti di codice nella definizione dell'attività JSON. Per ulteriori informazioni, consultare [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md) e [Parametri di definizione di attività Amazon ECS per Fargate](task_definition_parameters.md).

Per altri esempi di definizione delle attività, consulta [AWS Esempi di definizioni delle attività](https://github.com/aws-samples/aws-containers-task-definitions) su. GitHub

**Topics**
+ [

## Server Web
](#example_task_definition-webserver)
+ [

## Driver di log `splunk`
](#example_task_definition-splunk)
+ [

## Driver di log `fluentd`
](#example_task_definition-fluentd)
+ [

## Driver di log `gelf`
](#example_task_definition-gelf)
+ [

## Carichi di lavoro su istanze esterne
](#ecs-anywhere-runtask)
+ [

## Immagine Amazon ECR e ruolo IAM della definizione di attività
](#example_task_definition-iam)
+ [

## Punto di ingresso con comando
](#example_task_definition-ping)
+ [

## Dipendenze per i container
](#example_task_definition-containerdependency)
+ [

## Volumi nelle definizioni di attività
](#volume_sample_task_defs)
+ [

## Definizioni di attività di esempio di Windows
](#windows_sample_task_defs)

## Server Web
<a name="example_task_definition-webserver"></a>

Di seguito è riportato un esempio di definizione di attività usando container Linux su Fargate che configura un server Web:

```
{
   "containerDefinitions": [ 
      { 
         "command": [
            "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
         ],
         "entryPoint": [
            "sh",
            "-c"
         ],
         "essential": true,
         "image": "public.ecr.aws/docker/library/httpd:2.4",
         "logConfiguration": { 
            "logDriver": "awslogs",
            "options": { 
               "awslogs-group" : "/ecs/fargate-task-definition",
               "awslogs-region": "us-east-1",
               "awslogs-stream-prefix": "ecs"
            }
         },
         "name": "sample-fargate-app",
         "portMappings": [ 
            { 
               "containerPort": 80,
               "hostPort": 80,
               "protocol": "tcp"
            }
         ]
      }
   ],
   "cpu": "256",
   "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
   "family": "fargate-task-definition",
   "memory": "512",
   "networkMode": "awsvpc",
   "runtimePlatform": {
        "operatingSystemFamily": "LINUX"
    },
   "requiresCompatibilities": [ 
       "FARGATE" 
    ]
}
```

Di seguito è riportato un esempio di definizione di attività usando container Windows sul Fargate che configura un server Web:

```
{
    "containerDefinitions": [
        {
            "command": ["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
            "entryPoint": [
                "powershell",
                "-Command"
            ],
            "essential": true,
            "cpu": 2048,
            "memory": 4096,
            "image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
            "name": "sample_windows_app",
            "portMappings": [
                {
                    "hostPort": 80,
                    "containerPort": 80,
                    "protocol": "tcp"
                }
            ]
        }
    ],
    "memory": "4096",
    "cpu": "2048",
    "networkMode": "awsvpc",
    "family": "windows-simple-iis-2019-core",
    "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole",
    "runtimePlatform": {"operatingSystemFamily": "WINDOWS_SERVER_2019_CORE"},
    "requiresCompatibilities": ["FARGATE"]
}
```

## Driver di log `splunk`
<a name="example_task_definition-splunk"></a>

Il frammento di codice seguente mostra come utilizzare il driver di log `splunk` in una definizione di attività che invia i log a un servizio remoto. Il parametro di token Splunk è specificato come opzione segreta perché può essere trattato come dati sensibili. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).

```
"containerDefinitions": [{
		"logConfiguration": {
			"logDriver": "splunk",
			"options": {
				"splunk-url": "https://cloud.splunk.com:8080",
				"tag": "tag_name",
			},
			"secretOptions": [{
				"name": "splunk-token",
				"valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:splunk-token-KnrBkD"
}],
```

## Driver di log `fluentd`
<a name="example_task_definition-fluentd"></a>

Il frammento di codice seguente mostra come utilizzare il driver di log `fluentd` in una definizione di attività che invia i log a un servizio remoto. Il valore `fluentd-address` è specificato come opzione segreta perché può essere trattato come dati sensibili. Per ulteriori informazioni, consulta [Trasferimento di dati sensibili a un container Amazon ECS](specifying-sensitive-data.md).

```
"containerDefinitions": [{
	"logConfiguration": {
		"logDriver": "fluentd",
		"options": {
			"tag": "fluentd demo"
		},
		"secretOptions": [{
			"name": "fluentd-address",
			"valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:fluentd-address-KnrBkD"
		}]
	},
	"entryPoint": [],
	"portMappings": [{
             "hostPort": 80,
             "protocol": "tcp",
             "containerPort": 80
             },
             {
		"hostPort": 24224,
		"protocol": "tcp",
		"containerPort": 24224
	}]
}],
```

## Driver di log `gelf`
<a name="example_task_definition-gelf"></a>

Il frammento di codice seguente mostra come utilizzare il driver di log `gelf` in una definizione di attività che invia i log a un host remoto. Tale host esegue Logstash e accetta i log di Gelf come input. Per ulteriori informazioni, consulta [logConfiguration](task_definition_parameters.md#ContainerDefinition-logConfiguration).

```
"containerDefinitions": [{
	"logConfiguration": {
		"logDriver": "gelf",
		"options": {
			"gelf-address": "udp://logstash-service-address:5000",
			"tag": "gelf task demo"
		}
	},
	"entryPoint": [],
	"portMappings": [{
			"hostPort": 5000,
			"protocol": "udp",
			"containerPort": 5000
		},
		{
			"hostPort": 5000,
			"protocol": "tcp",
			"containerPort": 5000
		}
	]
}],
```

## Carichi di lavoro su istanze esterne
<a name="ecs-anywhere-runtask"></a>

Durante la registrazione di una definizione di attività di Amazon ECS, utilizza il parametro `requiresCompatibilities` e specifica `EXTERNAL`che verifica che la definizione di attività è compatibile per l'uso durante l'esecuzione di carichi di lavoro Amazon ECS sulle istanze esterne. Se registri una definizione di attività tramite la console, devi utilizzare l'editor JSON. Per ulteriori informazioni, consulta [Creazione di una definizione di attività di Amazon ECS attraverso la nuova console](create-task-definition.md).

**Importante**  
Se i processi richiedono un ruolo IAM di esecuzione del processo, assicurati che sia specificato nella definizione di attività. 

Quando distribuisci il tuo carico di lavoro, utilizza il tipo di avvio `EXTERNAL` durante la creazione del servizio o l'esecuzione del processo autonomo.

Di seguito è riportata una definizione di tabella di esempio.

------
#### [ Linux ]

```
{
	"requiresCompatibilities": [
		"EXTERNAL"
	],
	"containerDefinitions": [{
		"name": "nginx",
		"image": "public.ecr.aws/nginx/nginx:latest",
		"memory": 256,
		"cpu": 256,
		"essential": true,
		"portMappings": [{
			"containerPort": 80,
			"hostPort": 8080,
			"protocol": "tcp"
		}]
	}],
	"networkMode": "bridge",
	"family": "nginx"
}
```

------
#### [ Windows ]

```
{
	"requiresCompatibilities": [
		"EXTERNAL"
	],
	"containerDefinitions": [{
		"name": "windows-container",
		"image": "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019",
		"memory": 256,
		"cpu": 512,
		"essential": true,
		"portMappings": [{
			"containerPort": 80,
			"hostPort": 8080,
			"protocol": "tcp"
		}]
	}],
	"networkMode": "bridge",
	"family": "windows-container"
}
```

------

## Immagine Amazon ECR e ruolo IAM della definizione di attività
<a name="example_task_definition-iam"></a>

Il frammento di codice seguente utilizza un'immagine Amazon ECR denominata `aws-nodejs-sample` con il tag `v1` dal registro `123456789012.dkr.ecr.us-west-2.amazonaws.com`. Il container in questo processo eredita le autorizzazioni IAM dal ruolo `arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole`. Per ulteriori informazioni, consulta [Ruolo IAM dell'attività Amazon ECS](task-iam-roles.md).

```
{
    "containerDefinitions": [
        {
            "name": "sample-app",
            "image": "123456789012.dkr.ecr.us-west-2.amazonaws.com/aws-nodejs-sample:v1",
            "memory": 200,
            "cpu": 10,
            "essential": true
        }
    ],
    "family": "example_task_3",
    "taskRoleArn": "arn:aws:iam::123456789012:role/AmazonECSTaskS3BucketRole"
}
```

## Punto di ingresso con comando
<a name="example_task_definition-ping"></a>

Il frammento di codice seguente mostra la sintassi per un container Docker che utilizza un punto di ingresso e un argomento del comando. Questo container esegue il ping di `example.com` quattro volte e quindi si chiude.

```
{
    "containerDefinitions": [
        {
            "memory": 32,
            "essential": true,
            "entryPoint": ["ping"],
            "name": "alpine_ping",
            "readonlyRootFilesystem": true,
            "image": "alpine:3.4",
            "command": [
                "-c",
                "4",
                "example.com"
            ],
            "cpu": 16
        }
    ],
    "family": "example_task_2"
}
```

## Dipendenze per i container
<a name="example_task_definition-containerdependency"></a>

Questo frammento di codice mostra la sintassi di una definizione di attività con più container in cui è specificata la dipendenza per il container. Nella seguente definizione di attività, il container `envoy` deve raggiungere un stato di integrità, determinato dai parametri richiesti per il controllo dell'integrità, prima che il container `app` venga avviato. Per ulteriori informazioni, consulta [Dipendenze per i container](task_definition_parameters.md#container_definition_dependson).

```
{
  "family": "appmesh-gateway",
  "runtimePlatform": {
        "operatingSystemFamily": "LINUX"
  },
  "proxyConfiguration":{
      "type": "APPMESH",
      "containerName": "envoy",
      "properties": [
          {
              "name": "IgnoredUID",
              "value": "1337"
          },
          {
              "name": "ProxyIngressPort",
              "value": "15000"
          },
          {
              "name": "ProxyEgressPort",
              "value": "15001"
          },
          {
              "name": "AppPorts",
              "value": "9080"
          },
          {
              "name": "EgressIgnoredIPs",
              "value": "169.254.170.2,169.254.169.254"
          }
      ]
  },
  "containerDefinitions": [
    {
      "name": "app",
      "image": "application_image",
      "portMappings": [
        {
          "containerPort": 9080,
          "hostPort": 9080,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "dependsOn": [
        {
          "containerName": "envoy",
          "condition": "HEALTHY"
        }
      ]
    },
    {
      "name": "envoy",
      "image": "840364872350.dkr.ecr.region-code.amazonaws.com/aws-appmesh-envoy:v1.15.1.0-prod",
      "essential": true,
      "environment": [
        {
          "name": "APPMESH_VIRTUAL_NODE_NAME",
          "value": "mesh/meshName/virtualNode/virtualNodeName"
        },
        {
          "name": "ENVOY_LOG_LEVEL",
          "value": "info"
        }
      ],
      "healthCheck": {
        "command": [
          "CMD-SHELL",
          "echo hello"
        ],
        "interval": 5,
        "timeout": 2,
        "retries": 3
      }    
    }
  ],
  "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
  "networkMode": "awsvpc"
}
```

## Volumi nelle definizioni di attività
<a name="volume_sample_task_defs"></a>

Usare quanto segue per capire come specificare i volumi nelle attività.
+ Per informazioni sulla configurazione di un volume Amazon EBS, consultare [Specificare la configurazione del volume Amazon EBS nell'implementazione di Amazon ECS](configure-ebs-volume.md).
+ Per informazioni sulla configurazione di un volume Amazon EFS, consultare [Configurazione dei file system Amazon EFS per Amazon ECS utilizzando la console](tutorial-efs-volumes.md).
+ Per informazioni su come configurare un volume FSx per Windows File Server, vedere[Scopri come configurare FSx i file system Windows File Server per Amazon ECS](tutorial-wfsx-volumes.md).
+ Per informazioni sulla configurazione di un volume docker, consultare [Esempi di volumi Docker per Amazon ECS](docker-volume-examples.md).
+ Per informazioni sulla come configurare un montaggio vincolato, consultare [Esempi di montaggio vincolato per Amazon ECS](bind-mount-examples.md).

## Definizioni di attività di esempio di Windows
<a name="windows_sample_task_defs"></a>

Di seguito è riportata una definizione di attività di esempio che consente di iniziare a utilizzare i container Windows su Amazon ECS.

**Example Applicazione di esempio della console Amazon ECS per Windows**  
La seguente definizione di attività è l'applicazione di esempio della console Amazon ECS che viene prodotta nella procedura guidata per la prima esecuzione di Amazon ECS; è stata esportata per utilizzare l'immagine del container Windows `microsoft/iis`.  

```
{
  "family": "windows-simple-iis",
  "containerDefinitions": [
    {
      "name": "windows_sample_app",
      "image": "mcr.microsoft.com/windows/servercore/iis",
      "cpu": 1024,
      "entryPoint":["powershell", "-Command"],
      "command":["New-Item -Path C:\\inetpub\\wwwroot\\index.html -Type file -Value '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p>'; C:\\ServiceMonitor.exe w3svc"],
      "portMappings": [
        {
          "protocol": "tcp",
          "containerPort": 80
        }
      ],
      "memory": 1024,
      "essential": true
    }
  ],
  "networkMode": "awsvpc",
  "memory": "1024",
  "cpu": "1024"
}
```