

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

# Ruolo IAM dell'attività Amazon ECS
<a name="task-iam-roles"></a>

Le attività Amazon ECS possono avere un ruolo IAM associato. Le autorizzazioni concesse nel ruolo IAM sono vendute ai container in esecuzione nell'attività. Questo ruolo consente al codice dell'applicazione (in esecuzione nel contenitore) di utilizzare altri AWS servizi. Il ruolo dell'attività è necessario quando l'applicazione accede ad altri AWS servizi, come Amazon S3.

**Nota**  
Queste autorizzazioni non sono accessibili dal container Amazon ECS e dagli agenti Fargate. Per conoscere le autorizzazioni IAM necessarie ad Amazon ECS per estrarre le immagini di container ed eseguire l'attività, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).

Di seguito sono riportati i vantaggi dell'utilizzo dei ruoli delle attività:
+ **Separazione dei problemi**: se usi EC2, i ruoli IAM delle attività ti consentono di specificare le autorizzazioni IAM per i tuoi container senza richiedere che tali autorizzazioni siano specificate usando i profili delle istanze EC2 (per ulteriori informazioni, consulta [Utilizzo dei profili delle istanze](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html) nella *Guida per l'utente di AWS Identity and Access Management *) Pertanto, puoi implementare le tue applicazioni in modo indipendente e uniforme sulle istanze di container ECS senza dover modificare le autorizzazioni IAM associate alle istanze EC2.
+ **Verificabilità: l'accesso e la registrazione degli eventi sono disponibili per garantire un controllo** CloudTrail retrospettivo. Le credenziali dell'attività hanno il contesto '`taskArn`' allegato alla sessione, pertanto i CloudTrail registri mostrano per quale attività sono state fornite le credenziali del ruolo.
+ **Consegna uniforme delle credenziali**: ECS fornisce le credenziali dei ruoli IAM ai tuoi container e le rende accessibili tramite un'interfaccia ben definita, indipendentemente dall'opzione di elaborazione associata alle tue attività. Su ECS Fargate, i profili delle istanze EC2 non sono disponibili per i container nelle tue attività. I ruoli Task IAM ti consentono di associare le autorizzazioni IAM ai tuoi contenitori indipendentemente dall'opzione di calcolo quando utilizzi AWS SDK o AWS CLI nei tuoi contenitori. [Per ulteriori informazioni su come l' AWS SDK accede a queste credenziali, consulta Container credential provider.](https://docs.aws.amazon.com/sdkref/latest/guide/feature-container-credentials.html)

**Importante**  
I container non costituiscono un limite di sicurezza e l'uso dei ruoli IAM delle attività non cambia questa situazione. Ogni attività in esecuzione su Fargate ha un proprio limite di isolamento e non condivide il kernel sottostante, le risorse CPU, le risorse di memoria o l'interfaccia di rete elastica con un'altra attività. Per EC2 e le istanze di container esterne su ECS, non esiste l'isolamento delle attività (a differenza di Fargate) e i container possono potenzialmente accedere alle credenziali di altre attività sulla stessa istanza di container. Possono anche accedere alle autorizzazioni assegnate al [ruolo dell'istanza di container ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/instance_IAM_role.html). Segui i consigli contenuti in [Suggerimenti sui ruoli](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-iam-roles.html#security-iam-roles-recommendations) per bloccare l'accesso al servizio di metadati di istanza di Amazon EC2 per i container (per ulteriori informazioni, consulta [Utilizza il servizio di metadati di istanza](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) per accedere ai metadati dell'istanza nella *Guida utente di Amazon EC2*).   
Tieni presente che quando specifichi un ruolo IAM per un'attività, la AWS CLI o altro SDKs nei contenitori per quell'attività utilizzano esclusivamente le AWS credenziali fornite dal ruolo dell'attività e non ereditano alcuna autorizzazione IAM dall'Amazon EC2 o dall'istanza esterna su cui sono in esecuzione.

## Creazione del ruolo IAM dell'attività
<a name="create_task_iam_policy_and_role"></a>

Quando crei una policy IAM da utilizzare per le tue attività, essa deve includere le autorizzazioni che vuoi assegnare ai container nelle tue attività. Puoi utilizzare una policy AWS gestita esistente oppure puoi creare una policy personalizzata partendo da zero che soddisfi le tue esigenze specifiche. Per ulteriori informazioni, consulta [Creating IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) nella *Guida per l’utente di IAM*.

**Importante**  
Per le attività di Amazon ECS (per tutti i tipi di avvio), ti consigliamo di utilizzare il ruolo e la policy IAM per le tue attività. Queste credenziali consentono all'attività di effettuare richieste AWS API senza `sts:AssumeRole` dover chiamare per assumere lo stesso ruolo già associato all'attività. Se l'attività richiede che un ruolo assuma se stesso, devi creare una policy di attendibilità che consenta esplicitamente a tale ruolo di assumere se stesso. Per ulteriori informazioni, consulta [Aggiornamento di una policy di attendibilità di un ruolo](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_update-role-trust-policy.html) nella *Guida per l'utente di IAM*.

Una volta creata la policy IAM, puoi creare un ruolo IAM che include la policy a cui fai riferimento nella definizione dell'attività Amazon ECS. Puoi creare il ruolo utilizzando il caso d'uso **Attività Elastic Container Service** nella console IAM. Potrai quindi allegare al ruolo la policy IAM specifica per l'assegnazione delle autorizzazioni desiderate ai container nella tua attività. Di seguito viene descritto come procedere.

In caso di più definizioni di attività o servizi che richiedono autorizzazioni IAM, è consigliabile creare un ruolo per ogni specifica definizione di attività o per ogni specifico servizio con il numero minimo di autorizzazioni necessarie per il funzionamento dell'attività, in modo da ridurre al minimo l'accesso fornito per ciascuna attività. 

Per informazioni sull'endpoint di servizio per la tua Regione, consulta [Endpoint di servizio](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#ecs_region) nella *Guida di Riferimenti generali di Amazon Web Services *.

Il ruolo dell'attività IAM deve avere una policy di attendibilità che specifica il servizio `ecs-tasks.amazonaws.com`. L'autorizzazione `sts:AssumeRole` consente ai processi di assumere un ruolo IAM diverso da quello utilizzato dall'istanza Amazon EC2. In questo modo, l'attività non eredita il ruolo associato all'istanza Amazon EC2. Di seguito è illustrato un esempio di policy di attendibilità. Sostituisci l'identificatore della regione e specifica il numero di AWS account da utilizzare per l'avvio delle attività.

**Importante**  
Quando crei il tuo ruolo IAM per attività, ti consigliamo di utilizzare le chiavi di condizione `aws:SourceAccount` o `aws:SourceArn` nella policy di relazione di fiducia associata al ruolo per limitare ulteriormente le autorizzazioni e prevenire il problema di sicurezza confused deputy. L'uso della chiave di condizioni `aws:SourceArn` per specificare un cluster specifico non è correntemente supportato, è necessario utilizzare il carattere jolly per specificare tutti i cluster. Per saperne di più sul problema del deputato confuso e su come proteggere il tuo AWS account, consulta [Il problema del vice confuso nella Guida](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) per l'*utente IAM*.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "Service":[
               "ecs-tasks.amazonaws.com"
            ]
         },
         "Action":"sts:AssumeRole",
         "Condition":{
            "ArnLike":{
            "aws:SourceArn":"arn:aws:ecs:us-west-2:111122223333:*"
            },
            "StringEquals":{
               "aws:SourceAccount":"111122223333"
            }
         }
      }
   ]
}
```

------

Usa la seguente procedura per creare una policy per il recupero di oggetti da Amazon S3 con una policy di esempio. Sostituisci tutti i *user input* con i valori in tuo possesso.

------
#### [ Console di gestione AWS ]

**Come utilizzare l'editor di policy JSON per creare una policy**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione a sinistra, seleziona **Policies (Policy)**. 

   Se è la prima volta che selezioni **Policy**, verrà visualizzata la pagina **Benvenuto nelle policy gestite**. Seleziona **Inizia**.

1. Nella parte superiore della pagina, scegli **Crea policy**.

1. Nella sezione **Editor di policy**, scegli l'opzione **JSON**.

1. Inserisci il documento di policy JSON seguente:

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":[
               "arn:aws:s3:::my-task-secrets-bucket/*"
            ]
         }
      ]
   }
   ```

1. Scegli **Next (Successivo)**.
**Nota**  
È possibile alternare le opzioni dell'editor **Visivo** e **JSON** in qualsiasi momento. Se tuttavia si apportano modifiche o si seleziona **Successivo** nell'editor **Visivo**, IAM potrebbe ristrutturare la policy in modo da ottimizzarla per l'editor visivo. Per ulteriori informazioni, consulta [Modifica della struttura delle policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_policies.html#troubleshoot_viseditor-restructure) nella *Guida per l'utente di IAM*.

1. Nella pagina **Rivedi e crea**, inserisci un valore in **Nome policy** e **Descrizione** (facoltativo) per la policy in fase di creazione. Rivedi **Autorizzazioni definite in questa policy** per visualizzare le autorizzazioni concesse dalla policy.

1. Seleziona **Crea policy** per salvare la nuova policy.

------
#### [ AWS CLI ]

Sostituisci tutti i *user input* con i valori in tuo possesso.

1. Crea un file denominato `s3-policy.json`, con il seguente contenuto:

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":[
               "arn:aws:s3:::my-task-secrets-bucket/*"
            ]
         }
      ]
   }
   ```

------

1. Usa il seguente comando per creare la policy IAM utilizzando il file del documento della policy JSON. Sostituisci tutti i *user input* con i valori in tuo possesso.

   ```
   aws iam create-policy \
         --policy-name taskRolePolicy \
         --policy-document file://s3-policy.json
   ```

------

Per creare il ruolo di servizio, usa la seguente procedura.

------
#### [ Console di gestione AWS ]

**Per creare il ruolo di servizio per Elastic Container Service (console IAM)**

1. Accedi Console di gestione AWS e apri la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione della console IAM, scegliere **Ruoli** e quindi **Crea ruolo**.

1. Per **Tipo di entità attendibile**, seleziona **Servizio AWS**.

1. Per **Servizio o caso d'uso**, seleziona **Elastic Container Service** e poi il caso d'uso **Attività Elastic Container Service**.

1. Scegli **Next (Successivo)**.

1. Per **Aggiungi permessi**, cerca e seleziona la policy che hai creato.

1. Scegli **Next (Successivo)**.

1. In **Nome ruolo**, immetti un nome per il ruolo. Per questo esempio, digita `AmazonECSTaskS3BucketRole` per il nome del ruolo.

1. Verificare il ruolo e quindi scegliere **Create role (Crea ruolo)**.

------
#### [ AWS CLI ]

1. Crea un file denominato `ecs-tasks-trust-policy.json` contenente la policy di attendibilità da utilizzare per il ruolo IAM dell'attività. Il file deve contenere il testo seguente. Sostituisci l'identificatore della regione e specifica il numero di AWS account che usi per avviare le attività.

------
#### [ JSON ]

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":[
                  "ecs-tasks.amazonaws.com"
               ]
            },
            "Action":"sts:AssumeRole",
            "Condition":{
               "ArnLike":{
               "aws:SourceArn":"arn:aws:ecs:us-west-2:111122223333:*"
               },
               "StringEquals":{
                  "aws:SourceAccount":"111122223333"
               }
            }
         }
      ]
   }
   ```

------

1. Crea un ruolo IAM denominato `ecsTaskRole` utilizzando la policy di attendibilità creata nel passaggio precedente.

   ```
   aws iam create-role \
         --role-name ecsTaskRole \
         --assume-role-policy-document file://ecs-tasks-trust-policy.json
   ```

1. Recupera l'ARN della policy IAM che hai creato usando il seguente comando. *taskRolePolicy*Sostituiscilo con il nome della politica che hai creato.

   ```
   aws iam list-policies --scope Local --query 'Policies[?PolicyName==`taskRolePolicy`].Arn'
   ```

1. Allega la policy IAM che hai creato al ruolo `ecsTaskRole`. Sostituisci `policy-arn` con l'ARN della policy che hai creato.

   ```
   aws iam attach-role-policy \
         --role-name ecsTaskRole \
         --policy-arn arn:aws:iam:111122223333:aws:policy/taskRolePolicy
   ```

------

Dopo aver creato il ruolo, aggiungi ad esso ulteriori autorizzazioni per le seguenti funzionalità.


|  Funzionalità  |  Autorizzazioni aggiuntive  | 
| --- | --- | 
|  Usare l'ECS Exec  |  [Autorizzazioni ACS Exec](#ecs-exec-required-iam-permissions)  | 
| Utilizza un'immagine da un repository Amazon ECR privato | [Autorizzazioni Amazon ECR](#ecr-required-iam-permissions) | 
| Utilizza istanze EC2 (Windows e Linux) | [Configurazione aggiuntiva delle istanze di Amazon EC2](#task-iam-role-considerations) | 
| Usa istanze esterne | [Configurazione dell'istanza esterna aggiuntiva](#enable_task_iam_roles) | 
| Usa le istanze EC2 di Windows | [Configurazione aggiuntiva delle istanze Windows di Amazon EC2](#windows_task_IAM_roles) | 

## Autorizzazioni Amazon ECR
<a name="ecr-required-iam-permissions"></a>

Le autorizzazioni seguenti sono necessarie quando il codice dell'applicazione deve interagire direttamente con i repository Amazon ECR. Nota che per l'implementazione di base in cui è sufficiente estrarre immagini da Amazon ECR, queste autorizzazioni non sono richieste a livello di ruolo IAM dell'attività. Al contrario, il ruolo di esecuzione delle attività di Amazon ECS dovrebbe avere queste autorizzazioni. Per ulteriori informazioni sul ruolo di esecuzione delle attività, consulta [Ruolo IAM di esecuzione di attività Amazon ECS](task_execution_IAM_role.md).

Se il codice dell'applicazione in esecuzione nel contenitore deve interagire APIs direttamente con Amazon ECR, è necessario aggiungere le seguenti autorizzazioni a un ruolo IAM dell'attività e includere il ruolo IAM dell'attività nella definizione dell'attività. Per informazioni, consulta [Aggiunta e rimozione delle policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) nella *Guida per l'utente di IAM*.

Usa la seguente policy per il ruolo IAM dell'attività e aggiungi le autorizzazioni Amazon ECR richieste per le applicazioni container che devono interagire direttamente con Amazon ECR di: 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Autorizzazioni ACS Exec
<a name="ecs-exec-required-iam-permissions"></a>

La funzionalità [ECS Exec](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html) richiede un ruolo IAM dell'attività per concedere ai container le autorizzazioni necessarie per la comunicazione tra SSM Agent gestito (agente `execute-command`) e il servizio SSM. È necessario aggiungere le seguenti autorizzazioni a un ruolo IAM del processo e includere il ruolo IAM del processo nella definizione di attività. Per informazioni, consulta [Aggiunta e rimozione delle policy IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) nella *Guida per l'utente di IAM*.

Utilizza la seguente policy per il ruolo IAM del processo e aggiungere le autorizzazioni di SSM richieste. 

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
       "Effect": "Allow",
       "Action": [
            "ssmmessages:CreateControlChannel",
            "ssmmessages:CreateDataChannel",
            "ssmmessages:OpenControlChannel",
            "ssmmessages:OpenDataChannel"
       ],
      "Resource": "*"
      }
   ]
}
```

------

## Configurazione aggiuntiva delle istanze di Amazon EC2
<a name="task-iam-role-considerations"></a>

Consigliamo di limitare le autorizzazioni nel ruolo dell'istanza di container all'elenco minimo delle autorizzazioni fornito nella policy IAM gestita da `AmazonEC2ContainerServiceforEC2Role`. 

Le istanze Amazon EC2 richiedono l'agente del container almeno alla versione `1.11.0` per utilizzare i ruoli dell'attività; tuttavia, 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 usi l'AMI ottimizzata per Amazon ECS, l'istanza deve disporre almeno della versione `1.11.0-1` del pacchetto `ecs-init`. Se le istanze di container sono avviate dall'AMI ottimizzata per Amazon ECS più recente, contengono 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).

Se non utilizzi l'AMI ottimizzata per Amazon ECS per le istanze di container, aggiungi l'opzione `--net=host` al comando **docker run** che avvia l'agente e le seguenti variabili di configurazione dell'agente per la configurazione desiderata (per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md)):

`ECS_ENABLE_TASK_IAM_ROLE=true`  
Utilizza i ruoli IAM per le attività per i container con le modalità di rete `bridge` e `default`.

`ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true`  
Utilizza i ruoli IAM per le attività per i container con la modalità di rete `host`. Questa variabile è supportata sull'agente solo a partire dalla versione 1.12.0.

Per un esempio di comando di esecuzione, vedi [Aggiornamento manuale dell'agente container Amazon ECS (per prodotti non ottimizzati per Amazon ECS) AMIs](manually_update_agent.md). Dovrai inoltre impostare i seguenti comandi di rete sull'istanza del contenitore in modo che i contenitori utilizzati nelle tue attività possano recuperare le proprie credenziali: AWS 

```
sudo sysctl -w net.ipv4.conf.all.route_localnet=1
sudo iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679
sudo iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679
```

Per fare in modo che le regole **iptables** vengano conservate dopo un riavvio, devi salvarle sull'istanza di container. Puoi salvare e ripristinare le regole **iptables** all'avvio tramite i comandi **iptables-save** e **iptables-restore**. Per ulteriori informazioni, consulta la documentazione specifica per il tuo sistema operativo.

Per impedire ai container in esecuzione come parte di un'attività che usano la modalità di rete `awsvpc` di accedere alle informazioni sulle credenziali fornite al profilo dell'istanza Amazon EC2 (continuando a concedere le autorizzazioni fornite dal ruolo dell'attività), imposta la variabile di configurazione dell'agente `ECS_AWSVPC_BLOCK_IMDS` su `true` nel file di configurazione dell'agente e quindi riavvia l'agente. Per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md).

Per impedire ai container in esecuzione come parte di un'attività che usano la modalità di rete `bridge` di accedere alle informazioni sulle credenziali fornite al profilo dell'istanza istanza Amazon EC2 (continuando a concedere le autorizzazioni fornite dal ruolo dell'attività), esegui il comando **iptables** seguente nelle istanze Amazon EC2. Questo comando non influisce sui container nelle attività che usano la modalità di rete `host` o `awsvpc`. Per ulteriori informazioni, consulta [Modalità di rete](task_definition_parameters.md#network_mode).
+ 

  ```
  sudo yum install -y iptables-services; sudo iptables --insert DOCKER-USER 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP
  ```

  Per fare in modo che la regola **iptables** venga conservata dopo un riavvio, devi salvarla sull'istanza Amazon EC2. Quando utilizzi l'AMI ottimizzata per Amazon ECS, puoi utilizzare il comando riportato di seguito. Per gli altri sistemi operativi, consulta la relativa documentazione specifica.

  ```
  sudo iptables-save | sudo tee /etc/sysconfig/iptables && sudo systemctl enable --now iptables
  ```

## Configurazione dell'istanza esterna aggiuntiva
<a name="enable_task_iam_roles"></a>

Le istanze esterne richiedono l'agente del container almeno alla versione `1.11.0` per utilizzare i ruoli IAM dell'attività; tuttavia, 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 ottimizzata per Amazon ECS, l'istanza deve disporre almeno della versione `1.11.0-1` del pacchetto `ecs-init`. Se le istanze di container sono avviate dall'AMI ottimizzata per Amazon ECS più recente, contengono 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).

Se non utilizzi l'AMI ottimizzata per Amazon ECS per le istanze di container, aggiungi l'opzione `--net=host` al comando **docker run** che avvia l'agente e le seguenti variabili di configurazione dell'agente per la configurazione desiderata (per ulteriori informazioni, consulta [Configurazione dell'agente del container Amazon ECS](ecs-agent-config.md)):

`ECS_ENABLE_TASK_IAM_ROLE=true`  
Utilizza i ruoli IAM per le attività per i container con le modalità di rete `bridge` e `default`.

`ECS_ENABLE_TASK_IAM_ROLE_NETWORK_HOST=true`  
Utilizza i ruoli IAM per le attività per i container con la modalità di rete `host`. Questa variabile è supportata sull'agente solo a partire dalla versione 1.12.0.

Per un esempio di comando di esecuzione, vedi [Aggiornamento manuale dell'agente container Amazon ECS (per prodotti non ottimizzati per Amazon ECS) AMIs](manually_update_agent.md). Dovrai inoltre impostare i seguenti comandi di rete sull'istanza del contenitore in modo che i contenitori delle tue attività possano recuperare le proprie credenziali: AWS 

```
sudo sysctl -w net.ipv4.conf.all.route_localnet=1
sudo iptables -t nat -A PREROUTING -p tcp -d 169.254.170.2 --dport 80 -j DNAT --to-destination 127.0.0.1:51679
sudo iptables -t nat -A OUTPUT -d 169.254.170.2 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 51679
```

Per fare in modo che le regole **iptables** vengano conservate dopo un riavvio, devi salvarle sull'istanza di container. Puoi salvare e ripristinare le regole **iptables** all'avvio tramite i comandi **iptables-save** e **iptables-restore**. Per ulteriori informazioni, consulta la documentazione specifica per il tuo sistema operativo.

## Configurazione aggiuntiva delle istanze Windows di Amazon EC2
<a name="windows_task_IAM_roles"></a>

**Importante**  
Vale solo per i container Windows su EC2 che usano i ruoli dell'attività.

Il ruolo dell'attività con funzionalità Windows richiede una configurazione aggiuntiva su EC2.
+ Quando avvii le istanze di container, devi configurare l'opzione `-EnableTaskIAMRole` nello script di dati utente dell'istanza di container. La `EnableTaskIAMRole` attiva la funzionalità ruoli IAM dei processi per i processi. Ad esempio:

  ```
  <powershell>
  Import-Module ECSTools
  Initialize-ECSAgent -Cluster 'windows' -EnableTaskIAMRole 
  </powershell>
  ```
+ Devi eseguire il bootstrap del container con i comandi di rete forniti in [Script di bootstrap del container Amazon ECS](#windows_task_IAM_roles_bootstrap).
+ Devi creare un ruolo IAM e una policy per i processi. Per ulteriori informazioni, consulta [Creazione del ruolo IAM dell'attività](#create_task_iam_policy_and_role).
+ I ruoli IAM per il provider di credenziali dei processi utilizzano la porta 80 nell'istanza di container. Pertanto, se configuri i ruoli IAM per i processi nell'istanza di container, i container non potranno utilizzare la porta 80 come porta host in qualsiasi mappatura delle porte. Per esporre i container sulla porta 80, consigliamo di configurare un servizio che utilizzi il bilanciamento del carico. Puoi utilizzare la porta 80 sul bilanciatore del carico. In questo modo, il traffico può essere instradato a un'altra porta host nelle istanze di container. Per ulteriori informazioni, consulta [Usa il bilanciamento del carico per distribuire il traffico del servizio Amazon ECS](service-load-balancing.md).
+ Se l'istanza di Windows viene riavviata, è necessario eliminare l'interfaccia proxy e inizializzare nuovamente l'agente del container di Amazon ECS per ripristinare il proxy delle credenziali.

### Script di bootstrap del container Amazon ECS
<a name="windows_task_IAM_roles_bootstrap"></a>

Prima che i container possano accedere al proxy di credenziali nell'istanza di container per ottenere le credenziali, devi eseguire il bootstrap del container con i comandi di rete richiesti. Il seguente script di esempio di codice deve essere eseguito nei container quando si avviano.

**Nota**  
Non è necessario eseguire questo script quando si utilizza la modalità di rete `awsvpc` su Windows.

Se esegui container Windows che includono Powershell, utilizza lo script seguente:

```
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You may
# not use this file except in compliance with the License. A copy of the
# License is located at
#
#	http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is distributed
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# express or implied. See the License for the specific language governing
# permissions and limitations under the License.
 
$gateway = (Get-NetRoute | Where { $_.DestinationPrefix -eq '0.0.0.0/0' } | Sort-Object RouteMetric | Select NextHop).NextHop
$ifIndex = (Get-NetAdapter -InterfaceDescription "Hyper-V Virtual Ethernet*" | Sort-Object | Select ifIndex).ifIndex
New-NetRoute -DestinationPrefix 169.254.170.2/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # credentials API
New-NetRoute -DestinationPrefix 169.254.169.254/32 -InterfaceIndex $ifIndex -NextHop $gateway -PolicyStore ActiveStore # metadata API
```

Se esegui container Windows con solo Command shell, utilizza lo script seguente:

```
# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"). You may
# not use this file except in compliance with the License. A copy of the
# License is located at
#
#	http://aws.amazon.com/apache2.0/
#
# or in the "license" file accompanying this file. This file is distributed
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
# express or implied. See the License for the specific language governing
# permissions and limitations under the License.
 
for /f "tokens=1" %i  in ('netsh interface ipv4 show interfaces ^| findstr /x /r ".*vEthernet.*"') do set interface=%i
for /f "tokens=3" %i  in ('netsh interface ipv4 show addresses %interface% ^| findstr /x /r ".*Default.Gateway.*"') do set gateway=%i
netsh interface ipv4 add route prefix=169.254.170.2/32 interface="%interface%" nexthop="%gateway%" store=active # credentials API
netsh interface ipv4 add route prefix=169.254.169.254/32 interface="%interface%" nexthop="%gateway%" store=active # metadata API
```