

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

# Esecuzione delle immagini ufficiali di Amazon ECR Public o Docker per AWS CLI
<a name="getting-started-docker"></a>

Questo argomento descrive come eseguire, controllare la versione e configurare la AWS CLI versione 2 su Docker utilizzando l'immagine ufficiale di Amazon Elastic Container Registry Public (Amazon ECR Public) o Docker Hub. Per ulteriori informazioni su come utilizzare Docker, consulta la [documentazione di Docker](https://docs.docker.com/).

Le immagini ufficiali forniscono isolamento, portabilità e sicurezza che supportano e gestiscono AWS direttamente. Ciò consente di utilizzare la AWS CLI versione 2 in un ambiente basato su container senza dover gestire personalmente l'installazione. 

**Topics**
+ [

## Prerequisiti
](#cliv2-docker-prereq)
+ [

## Decidere tra Amazon ECR Public e Docker Hub
](#cliv2-docker-versus)
+ [

## Esegui le immagini della AWS CLI versione ufficiale 2
](#cliv2-docker-install)
+ [

## Note sulle interfacce e sulla retrocompatibilità delle immagini ufficiali
](#cliv2-docker-install-notes)
+ [

## Utilizzo di versioni e tag specifici
](#cliv2-docker-upgrade)
+ [

## Aggiornamento all’ultima immagine ufficiale
](#cliv2-docker-update)
+ [

## Condivisione di file host, credenziali, variabili d’ambiente e configurazione
](#cliv2-docker-share-files)
+ [

## Abbreviazione del comando di esecuzione Docker
](#cliv2-docker-aliases)

## Prerequisiti
<a name="cliv2-docker-prereq"></a>

È necessario che Docker sia installato. Per istruzioni sull'installazione, consulta il [sito Web Docker](https://docs.docker.com/install/). 

Per verificare l'installazione di Docker, eseguire il comando seguente e confermare l'esistenza di output.

```
$ docker --version
Docker version 19.03.1
```

## Decidere tra Amazon ECR Public e Docker Hub
<a name="cliv2-docker-versus"></a>

Ti consigliamo di utilizzare Amazon ECR Public over Docker Hub per le AWS CLI immagini. Docker Hub prevede limiti di velocità più rigorosi per i consumatori pubblici, causando eventualmente problemi di limitazione (della larghezza di banda della rete). Inoltre, Amazon ECR Public replica le immagini in più di una Regione per fornire una solida disponibilità e gestire i problemi di interruzione della Regione. 

Per ulteriori informazioni sui limiti di frequenza di Docker Hub, consulta [Informazioni sulla limitazione della frequenza di Docker Hub](https://www.docker.com/increase-rate-limits/) nel sito web di *Docker*.

## Esegui le immagini della AWS CLI versione ufficiale 2
<a name="cliv2-docker-install"></a>

 La prima volta che si utilizza il comando `docker run`, l’immagine più recente viene scaricata sul computer. Ogni successivo utilizzo del comando `docker run` viene eseguito dalla copia locale. 

Per eseguire le immagini Docker della AWS CLI versione 2, usa il `docker run` comando.

------
#### [ Amazon ECR Public ]

[L'immagine pubblica di Amazon ECR AWS CLI versione 2 ufficiale è ospitata su Amazon ECR Public nel `aws-cli/aws-cli` repository.](https://gallery.ecr.aws/aws-cli/aws-cli)

```
$ docker run --rm -it public.ecr.aws/aws-cli/aws-cli command
```

------
#### [ Docker Hub ]

L'immagine Docker della AWS CLI versione ufficiale 2 è ospitata su Docker Hub nel repository. `amazon/aws-cli`

```
$ docker run --rm -it amazon/aws-cli command
```

------

Ecco come funziona il comando:
+ `docker run --rm -it repository/name` - L’equivalente dell’eseguibile `aws`. Ogni volta che esegui questo comando, Docker rende operativo un container dell’immagine scaricata ed esegue il comando `aws`. Per impostazione predefinita, l'immagine utilizza la versione più recente della AWS CLI versione 2.

  Ad esempio, per chiamare il comando `aws --version` nel Docker, eseguire quanto segue.

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli --version
  aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli --version
  aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
  ```

------
+ `--rm` - Specifica di eseguire la pulizia del container dopo l’uscita del comando.
+ `-it` - Specifica di aprire uno pseudo-TTY con `stdin`. Ciò consente di fornire input alla AWS CLI versione 2 mentre è in esecuzione in un contenitore, ad esempio utilizzando i `aws help` comandi `aws configure` and. Se scegli se omettere `-it`, considera quanto segue:
  + Se stai eseguendo degli script, `-it` non è necessario. 
  + Se riscontri degli errori con gli script, l’omissione della `-it` dalla chiamata Docker potrebbe risolvere il problema.
  + Se stai cercando di reindirizzare l’output, la `-it` potrebbe causare degli errori e l’omissione della `-it` dalla chiamata Docker potrebbe risolvere il problema. Se desideri mantenere il flag `-it`, ma desideri comunque reindirizzare l’output, la disattivazione del [pager lato client](cli-usage-pagination.md#cli-usage-pagination-clientside) utilizzato dalla AWS CLI per impostazione predefinita dovrebbe risolvere il problema.

Per ulteriori informazioni sul comando `docker run`, consulta la [Guida di riferimento di Docker](https://docs.docker.com/engine/reference/run/).

## Note sulle interfacce e sulla retrocompatibilità delle immagini ufficiali
<a name="cliv2-docker-install-notes"></a>
+ L’unico strumento supportato sull’immagine è la AWS CLI. Solo l’eseguibile `aws` non dovrebbe mai essere eseguito direttamente. Ad esempio, anche se `less` `groff` sono installati in modo esplicito sull'immagine, non devono essere eseguiti direttamente all'esterno di un AWS CLI comando.
+ La directory di lavoro di `/aws` è controllata dall’utente. L'immagine non verrà scritta in questa directory, a meno che l'utente non richieda istruzioni sull'esecuzione di un AWS CLI comando.
+ Non ci sono garanzie di compatibilità con le versioni precedenti quando si fa affidamento sul tag più recente. Per garantire la compatibilità con le versioni precedenti, è necessario aggiungere un tag specifico `<major.minor.patch>`, in quanto tali tag sono immutabili e verranno inseriti una sola volta.

## Utilizzo di versioni e tag specifici
<a name="cliv2-docker-upgrade"></a>

L'immagine ufficiale della AWS CLI versione 2 ha più versioni che è possibile utilizzare, a partire dalla versione`2.0.6`. Per eseguire una versione specifica della AWS CLI versione 2, aggiungi il tag appropriato al tuo `docker run` comando. La prima volta che utilizzi il comando `docker run` con un tag, l’ultima immagine Docker per quel tag viene scaricata nel computer. Ogni successivo utilizzo del comando `docker run` con quel tag viene eseguito dalla copia locale. 

È possibile utilizzare due tipi di tag: 
+ `latest`— Definisce l'ultima versione della AWS CLI versione 2 per l'immagine. Suggeriamo di utilizzare il tag `latest` se desideri l’ultima versione della AWS CLI versione 2. Tuttavia, non ci sono garanzie di compatibilità con le versioni precedenti quando si fa affidamento su questo tag. Il tag `latest` viene utilizzato per impostazione predefinita nel comando `docker run`. Per utilizzare esplicitamente il tag `latest`, aggiungere il tag al nome dell'immagine del container.

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli:latest command
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli:latest command
  ```

------
+ `<major.minor.patch>`— Definisce una versione specifica della AWS CLI versione 2 per l'immagine. Se prevedi di utilizzare un'immagine ufficiale in produzione, ti consigliamo di utilizzare una versione specifica della AWS CLI versione 2 per garantire la compatibilità con le versioni precedenti. Ad esempio, per eseguire la versione `2.0.6`, aggiungere la versione al nome dell’immagine del container.

------
#### [ Amazon ECR Public ]

  ```
  $ docker run --rm -it public.ecr.aws/aws-cli/aws-cli:2.0.6 command
  ```

------
#### [ Docker Hub ]

  ```
  $ docker run --rm -it amazon/aws-cli:2.0.6 command
  ```

------

## Aggiornamento all’ultima immagine ufficiale
<a name="cliv2-docker-update"></a>

Poiché l’immagine più recente viene scaricata nel computer solo la prima volta che si utilizza il comando `docker run`, è necessario estrarre manualmente un’immagine aggiornata. Per eseguire manualmente l'aggiornamento alla versione più recente, ti consigliamo di estrarre l'immagine `latest` con tag. Estraendo l’immagine viene scaricata la versione più recente sul computer.

------
#### [ Amazon ECR Public ]

```
$ docker pull public.ecr.aws/aws-cli/aws-cli:latest
```

------
#### [ Docker Hub ]

```
$ docker pull amazon/aws-cli:latest
```

------

## Condivisione di file host, credenziali, variabili d’ambiente e configurazione
<a name="cliv2-docker-share-files"></a>

Poiché la AWS CLI versione 2 viene eseguita in un contenitore, per impostazione predefinita la CLI non può accedere al file system host, che include configurazione e credenziali. Per condividere il file system host, le credenziali e la configurazione nel container, montare la directory `~/.aws` del sistema host sul container `/root/.aws` con il flag `-v` per il comando `docker run`. Ciò consente alla AWS CLI versione 2 in esecuzione nel contenitore di individuare le informazioni sul file host.

------
#### [ Amazon ECR Public ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli command
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws  public.ecr.aws/aws-cli/aws-cli command
```

------
#### [ Docker Hub ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli command
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli command
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws  amazon/aws-cli command
```

------

Per ulteriori informazioni sul flag `-v` e sul montaggio, consulta la [Guida di riferimento Docker](https://docs.docker.com/storage/volumes/). 

**Nota**  
Per informazioni sui file `config` e `credentials`, consulta [Impostazioni dei file di configurazione e credenziali in AWS CLI](cli-configure-files.md).

### Esempio 1: fornire credenziali e configurazione
<a name="cliv2-docker-share-files-config"></a>

In questo esempio, vengono fornite le credenziali host e la configurazione durante l’esecuzione del comando `s3 ls` per elencare i bucket in Amazon Simple Storage Service (Amazon S3). Gli esempi seguenti utilizzano la posizione predefinita per AWS CLI le credenziali e i file di configurazione, per utilizzare una posizione diversa, modificano il percorso del file.

------
#### [ Amazon ECR Public ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws amazon/aws-cli s3 ls
```

------

È possibile chiamare variabili di ambiente di sistema specifiche utilizzando il flag `-e`. Per utilizzare una variabile di ambiente, chiamala per nome. 

------
#### [ Amazon ECR Public ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e ENVVAR_NAME amazon/aws-cli s3 ls
```

------

### Esempio 2: download di un file Amazon S3 nel sistema host
<a name="cliv2-docker-share-files-s3"></a>

Per alcuni comandi della AWS CLI versione 2, è possibile leggere file dal sistema host nel contenitore o scrivere file dal contenitore al sistema host. 

Questo esempio illustra come scaricare l'oggetto `S3` `s3://aws-cli-docker-demo/hello` nel file system locale montando la directory di lavoro corrente nella directory `/aws` del container. Scaricando l'oggetto `hello` nella directory `/aws` del container, il file viene salvato anche nella directory di lavoro corrente del sistema host.

------
#### [ Amazon ECR Public ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
```

------
#### [ Docker Hub ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
download: s3://aws-cli-docker-demo/hello to ./hello
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli s3 cp s3://aws-cli-docker-demo/hello .
```

------

Per verificare che il file scaricato esista nel file system locale, eseguire quanto segue.

**Linux e macOS**

```
$ cat hello
Hello from Docker!
```

**Windows PowerShell**

```
$ type hello
Hello from Docker!
```

### Esempio 3: utilizzo della variabile di AWS\$1PROFILE ambiente
<a name="cliv2-docker-share-files-envvars"></a>

È possibile chiamare variabili di ambiente di sistema specifiche utilizzando il flag `-e`. Chiama ogni variabile di ambiente che desideri utilizzare. In questo esempio, forniamo le credenziali dell'host, la configurazione e la variabile di *AWS\$1PROFILE* ambiente durante l'esecuzione del `s3 ls` comando per elencare i bucket in Amazon Simple Storage Service (Amazon S3).

------
#### [ Amazon ECR Public ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE public.ecr.aws/aws-cli/aws-cli s3 ls
```

------
#### [ Docker Hub ]

**Linux e macOS**

```
$ docker run --rm -it -v ~/.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Prompt dei comandi di Windows**

```
$ docker run --rm -it -v %userprofile%\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
2020-03-25 00:30:48 aws-cli-docker-demo
```

**Windows PowerShell**

```
C:\> docker run --rm -it -v $env:userprofile\.aws:/root/.aws -e AWS_PROFILE amazon/aws-cli s3 ls
```

------

## Abbreviazione del comando di esecuzione Docker
<a name="cliv2-docker-aliases"></a>

Per abbreviare il comando `docker run`, suggeriamo di utilizzare la capacità del sistema operativo per creare un [https://www.linux.com/topic/desktop/understanding-linux-links/](https://www.linux.com/topic/desktop/understanding-linux-links/) (collegamento simbolico) o un [https://www.linux.com/topic/desktop/aliases-diy-shell-commands/](https://www.linux.com/topic/desktop/aliases-diy-shell-commands/) in Linux e macOS o [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/doskey](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/doskey) in Windows. Per impostare l'alias `aws`, è possibile eseguire uno dei seguenti comandi.
+ Per l'accesso di base ai comandi `aws`, eseguire le seguenti operazioni.

------
#### [ Amazon ECR Public ]

  **Linux e macOS**

  ```
  $ alias aws='docker run --rm -it public.ecr.aws/aws-cli/aws-cli'
  ```

  **Prompt dei comandi di Windows**

  ```
  C:\> doskey aws=docker run --rm -it public.ecr.aws/aws-cli/aws-cli $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it public.ecr.aws/aws-cli/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux e macOS**

  ```
  $ alias aws='docker run --rm -it amazon/aws-cli'
  ```

  **Prompt dei comandi di Windows**

  ```
  C:\> doskey aws=docker run --rm -it amazon/aws-cli $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it amazon/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
+ Per accedere al file system host e alle impostazioni di configurazione quando si utilizzano i comandi `aws` eseguire le seguenti operazioni.

------
#### [ Amazon ECR Public ]

  **Linux e macOS**

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli'
  ```

  **Prompt dei comandi di Windows**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux e macOS**

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli'
  ```

  **Prompt dei comandi di Windows**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
+ Per assegnare una versione specifica da utilizzare nell'alias `aws`, aggiungere il tag di versione.

------
#### [ Amazon ECR Public ]

  **Linux e macOS**

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws public.ecr.aws/aws-cli/aws-cli:2.0.6'
  ```

  **Prompt dei comandi di Windows**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws public.ecr.aws/aws-cli/aws-cli:2.0.6 $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------
#### [ Docker Hub ]

  **Linux e macOS**

  ```
  $ alias aws='docker run --rm -it -v ~/.aws:/root/.aws -v $(pwd):/aws amazon/aws-cli:2.0.6'
  ```

  **Prompt dei comandi di Windows**

  ```
  C:\> doskey aws=docker run --rm -it -v %userprofile%\.aws:/root/.aws -v %cd%:/aws amazon/aws-cli:2.0.6 $*
  ```

  **Windows PowerShell**

  ```
  C:\> Function AWSCLI {docker run --rm -it -v $env:userprofile\.aws:/root/.aws -v $pwd\aws:/aws amazon/aws-cli:2.0.6 $args}
  Set-Alias -Name aws -Value AWSCLI
  ```

------

Dopo aver impostato l'alias, puoi eseguire la AWS CLI versione 2 dall'interno di un contenitore come se fosse installata sul tuo sistema host. 

```
$ aws --version
aws-cli/2.27.41 Python/3.7.3 Linux/4.9.184-linuxkit botocore/2.4.5dev10
```