

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

# Utilizzo di Amazon Elastic Container Registry
<a name="ecr-working"></a>

Puoi accedere al servizio Amazon Elastic Container Registry (Amazon ECR) direttamente da AWS Explorer in VS Code e utilizzarlo per inviare un'immagine del programma a un repository Amazon ECR. Per iniziare, devi eseguire questi passaggi:

1. Crea un Dockerfile che contenga le informazioni necessarie per creare un'immagine.

1. Crea un'immagine dal Dockerfile e assegna un tag all'immagine per l'elaborazione.

1. Crea un repository all'interno della tua istanza Amazon ECR. 

1. Invia l'immagine al repository.

## Prerequisiti
<a name="prereqs-awstoolkit-vscode-ecr"></a>

È necessario completare questi passaggi per accedere al servizio Amazon ECR da VS Code Explorer. 

### Creare un utente IAM
<a name="create-an-iam-user"></a>

Prima di poter accedere a un AWS servizio, come Amazon ECR, devi fornire le credenziali. In questo modo il servizio può determinare se sei autorizzato ad accedere alle sue risorse. Non è consigliabile accedere AWS direttamente tramite le credenziali del proprio AWS account root. Utilizza invece AWS Identity and Access Management (IAM) per creare un utente IAM e quindi aggiungi quell'utente a un gruppo IAM con autorizzazioni amministrative. Puoi quindi accedere AWS utilizzando un URL speciale e le credenziali per l'utente IAM.

Se ti sei registrato AWS ma non hai creato un utente IAM per te, puoi crearne uno utilizzando la console IAM.

Per creare un utente amministratore, scegli una delle seguenti opzioni.


****  

| Scelta di un modo per gestire il tuo amministratore | Per | Come | Puoi anche | 
| --- | --- | --- | --- | 
| In IAM Identity Center (Consigliato) | Usa credenziali a breve termine per accedere a AWS.Ciò è in linea con le best practice per la sicurezza. Per informazioni sulle best practice, consulta [Best practice per la sicurezza in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) nella *Guida per l'utente di IAM*. | Segui le istruzioni riportate in [Nozioni di base](https://docs.aws.amazon.com//singlesignon/latest/userguide/getting-started.html) nella Guida per l'utente di AWS IAM Identity Center . | Configura l'accesso programmatico [configurando l'uso AWS IAM Identity Center nella Guida AWS CLI per](https://docs.aws.amazon.com//cli/latest/userguide/cli-configure-sso.html) l'AWS Command Line Interface utente. | 
| In IAM (Non consigliato) | Usa credenziali a lungo termine per accedere a AWS. | Segui le istruzioni in [Creare un utente IAM per l’accesso di emergenza](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started-emergency-iam-user.html) nella Guida per l’utente di IAM. | Configura l’accesso programmatico seguendo quanto riportato in [Gestione delle chiavi di accesso per gli utenti IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html) nella Guida per l’utente di IAM. | 

Per accedere come nuovo utente IAM, esci dalla AWS console, quindi utilizza il seguente URL. Nel seguente URL, dove *your\_aws\_account\_id* è il numero del tuo AWS account senza i trattini (ad esempio, se il tuo numero di account è, il tuo ID AWS account è): `1234-5678-9012` AWS `123456789012`

```
https://{{your_aws_account_id}}.signin.aws.amazon.com/console/
```

Immettere il nome utente e la password di IAM appena creati. Una volta effettuato l'accesso, la barra di navigazione visualizza "*your\_user\_name* @ *your\_aws\_account\_id*".

Se non desideri che l'URL della pagina di accesso contenga l'ID dell'account, puoi creare un alias per l'account AWS . Dalla dashboard IAM, scegli **Personalizza** e inserisci un alias **dell'account**. Questo può essere il nome della tua azienda. Per ulteriori informazioni, consulta l'[ID AWS del tuo account e il suo alias](https://docs.aws.amazon.com/IAM/latest/UserGuide/console_account-alias.html) nella Guida per l'utente IAM.

Per effettuare l'accesso dopo aver creato un alias dell'account, utilizzare il seguente URL:

```
https://{{your_account_alias}}.signin.aws.amazon.com/console/
```

Per verificare il link di accesso degli utenti IAM al tuo account, apri la console IAM e controlla in **IAM users sign-in link (Link di accesso utenti IAM)** nel pannello di controllo.

Per ulteriori informazioni su IAM, consulta la [Guida per l'utente AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

### Installa e configura Docker
<a name="create-an-iam-user"></a>

Puoi installare e configurare Docker selezionando il tuo sistema operativo preferito dalla guida per l'utente di [Install Docker Engine](https://docs.docker.com/engine/install/) e seguendo le istruzioni.

### Installazione e configurazione della AWS CLI versione 2
<a name="create-an-iam-user"></a>

Installa e configura la versione 2 della AWS CLI selezionando il tuo sistema operativo preferito dalla guida utente all'[installazione, aggiornamento e disinstallazione della AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) versione 2.

## 1. Creazione di un Dockerfile
<a name="dockerfile-ecr-vsctoolkit"></a>

Docker utilizza un file chiamato Dockerfile per definire un'immagine che può essere inviata e archiviata in un repository remoto. Prima di poter caricare un'immagine in un repository ECR, è necessario creare un Dockerfile e quindi creare un'immagine da quel Dockerfile.

**Creazione di un Dockerfile**

1. Usa l'esploratore Toolkit for VS Code per accedere alla directory in cui desideri archiviare il tuo Dockerfile.

1. **Crea un nuovo file chiamato Dockerfile.**
**Nota**  
VS Code potrebbe richiedere di selezionare un tipo o un'estensione di file. In tal caso, seleziona **testo** in chiaro. Vs Code ha un'estensione «dockerfile». Tuttavia, lo sconsigliamo. Questo perché l'estensione potrebbe causare conflitti con determinate versioni di Docker o altre applicazioni associate.

**Modifica il tuo Dockerfile usando VS Code**

Se il Dockerfile ha un'estensione di file, aprire il menu contestuale (clic con il pulsante destro del mouse) del file e rimuovere l'estensione.

Dopo aver rimosso l'estensione del file dal Dockerfile:

1. Apri il Dockerfile vuoto direttamente in VS Code.

1. Copia il contenuto del seguente esempio nel tuo Dockerfile:  
**Example Modello di immagine Dockerfile**  

   ```
   FROM ubuntu:18.04
   
   # Install dependencies
   RUN apt-get update && \
    apt-get -y install apache2
   
   # Install apache and write hello world message
   RUN echo 'Hello World!' > /var/www/html/index.html
   
   # Configure apache
   RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
    echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
    echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
    echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
    chmod 755 /root/run_apache.sh
   
   EXPOSE 80
   
   CMD /root/run_apache.sh
   ```

   Questo è un Dockerfile che utilizza un'immagine Ubuntu 18.04. Le istruzioni **RUN** aggiornano le cache dei pacchetti. Installare i pacchetti software per il server Web, quindi scrivere il contenuto "Hello World\!" nella root del documento del server web. L'istruzione **EXPOSE** espone la porta 80 nel container, mentre l'istruzione **CMD** avvia il server web.

1. Salvare il Dockerfile.
**Importante**  
Assicurati che il tuo Dockerfile non abbia un'estensione associata al nome. Un Dockerfine con estensioni potrebbe causare conflitti con determinate versioni di Docker o altre applicazioni associate.

## 2. Crea la tua immagine dal tuo Dockerfile
<a name="build-docker-image"></a>

Il Dockerfile che hai creato contiene le informazioni necessarie per creare un'immagine per un programma. Prima di poter inviare quell'immagine alla tua istanza Amazon ECR, devi prima creare l'immagine.

**Crea un'immagine dal tuo Dockerfile**

1. Usa la CLI Docker o una CLI integrata con la tua istanza di Docker per navigare nella directory che contiene il tuo Dockerfile.

1. Esegui il comando **Docker build** per creare l'immagine definita nel tuo Dockerfile.

   ```
             docker build -t hello-world .
   ```

1. Esegui il comando **Docker images** per verificare che l'immagine sia stata creata correttamente.

   ```
   docker images --filter reference=hello-world
   ```  
**Example esempio di output:**  

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. 
**Nota**  
Questo passaggio non è necessario per creare o inviare l'immagine, ma puoi vedere come funziona l'immagine del programma quando viene eseguita.

   Per eseguire l'immagine appena creata, usa il comando **Docker run**.

   ```
   docker run -t -i -p 80:80 hello-world
   ```

   L'opzione **-p** specificata nell'esempio precedente mappa la **porta 80** esposta sul contenitore alla **porta 80 del sistema** host. Se utilizzi Docker localmente, accedi a [http://localhost:80](http://localhost:80) usando il tuo browser web. Se il programma ha funzionato correttamente, un messaggio «Hello World\!» viene visualizzata una dichiarazione.

   Per ulteriori informazioni sul comando **Docker run**, consultare [Docker run reference](https://docs.docker.com/engine/reference/run/) sul sito web di Docker.

## 3. Crea un nuovo repository
<a name="create-repository"></a>

Per caricare l'immagine nell'istanza Amazon ECR, creare un nuovo repository in cui possa essere archiviata.

**Crea un nuovo repository Amazon ECR**

1. Dalla **barra delle attività** di VS Code, scegli l'icona **AWS Toolkit**.

1. Espandi il menu ** AWS Explorer**.

1. Individua la AWS regione predefinita associata al tuo AWS account. Quindi, selezionalo per visualizzare un elenco dei servizi disponibili tramite Toolkit for VS Code.

1. Scegli l'opzione **ECR \+** per iniziare il processo di **creazione di un nuovo repository**.

1. Segui le istruzioni per completare il processo.

1. Una volta completato, puoi accedere al nuovo repository dalla sezione **ECR del menu Explorer**. AWS 

## 4. Spingi, tira ed elimina le immagini
<a name="push-image"></a>

Dopo aver creato un'immagine dal Dockerfile e creato un repository, è possibile inserire l'immagine nel repository Amazon ECR. Inoltre, utilizzando AWS Explorer con Docker e la AWS CLI, puoi fare quanto segue:
+ Estrarre un'immagine dal repository.
+ Eliminare un'immagine archiviata nel repository.
+ Eliminare il repository.

**Autentica Docker con il registro predefinito**

L'autenticazione è necessaria per lo scambio di dati tra istanze Amazon ECR e istanze Docker. Per autenticare Docker nel registro:

1. Apri un sistema operativo a riga di comando connesso alla tua istanza della AWS CLI. 

1. Usa il **get-login-password**metodo per autenticarti nel tuo registro ECR privato.

   ```
   aws ecr get-login-password --region region | docker login --username AWS --password-stdin AWS_account_id.dkr.ecr.region.amazonaws.com
   ```
**Importante**  
Nel comando precedente, devi aggiornare sia le informazioni che **region** **AWS\_account\_id** le informazioni specifiche del tuo account. AWS 

**Aggiungi un tag a un'immagine e inseriscila nel tuo repository**

Dopo aver autenticato Docker con l'istanza di AWS, inserisci un'immagine nel tuo repository.

1. Usa il comando **Docker images** per visualizzare le immagini che hai archiviato localmente e identificare quella che desideri taggare.

   ```
   docker images
   ```  
**Example esempio di output:**  

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. Assegnare tag all'immagine Docker con il comando **Docker tag**.

   ```
   docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```

1. Invia l'immagine taggata al tuo repository con il comando **Docker tag**.

   ```
   docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```  
**Example esempio di output:**  

   ```
   The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
   e9ae3c220b23: Pushed
   a6785352b25c: Pushed
   0998bf8fb9e9: Pushed
   0a85502c06c9: Pushed
   latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
   ```

Dopo che l'immagine con tag è stata caricata correttamente nel tuo repository, è visibile nel menu AWS Explorer.

**Estrarre un'immagine da Amazon ECR**
+ È possibile estrarre un'immagine nell'istanza locale del comando **tag Docker**.

  ```
  docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  ```  
**Example esempio di output:**  

  ```
  The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
  e9ae3c220b23: Pushed
  a6785352b25c: Pushed
  0998bf8fb9e9: Pushed
  0a85502c06c9: Pushed
  latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
  ```

**Eliminare un'immagine dal tuo repository Amazon ECR**

Esistono due metodi per eliminare un'immagine da VS Code. Il primo metodo consiste nell'utilizzare AWS Explorer.

1. Da AWS Explorer, espandi il **menu ECR**

1. Espandi l'archivio da cui desideri eliminare un'immagine

1. Scegli il tag dell'immagine associato all'immagine che desideri eliminare, aprendo il menu contestuale (fai clic con il pulsante destro del mouse)

1. Scegli il **tag Elimina...** opzione per eliminare tutte le immagini memorizzate associate a quel tag

**Eliminare un'immagine utilizzando la AWS CLI**
+ Puoi anche eliminare un'immagine dal tuo repository con il comando **AWS batch-delete-imageecr**.

  ```
  AWS ecr batch-delete-image \
        --repository-name hello-world \
        --image-ids imageTag=latest
  ```  
**Example esempio di output:**  

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```

**Elimina un repository dalla tua istanza Amazon ECR**

Esistono due metodi per eliminare un repository da VS Code. Il primo metodo consiste nell'utilizzare Explorer. AWS 

1. Da AWS Explorer, espandi il **menu ECR**

1. Scegli il repository che desideri eliminare aprendo il menu contestuale (fai clic con il pulsante destro del mouse)

1. Scegli il pulsante **Elimina repository**... opzione per il repository scelto

**Eliminare un repository Amazon ECR dalla CLI AWS**
+ È possibile eliminare un repository con il comando **AWS ecr delete-repository**.
**Nota**  
Per impostazione predefinita, non puoi eliminare un repository che contiene immagini. Tuttavia, il flag **--force** lo consente.

  ```
   AWS ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example esempio di output:**  

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```