

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

# Autenticazione con archivi di immagini
<a name="docker-configuration.remote-repo"></a>

Questo argomento descrive come autenticarsi negli archivi di immagini online con Elastic Beanstalk. Per gli archivi privati, Elastic Beanstalk deve autenticarsi prima di poter estrarre e distribuire le immagini. Per Amazon ECR Public, l'autenticazione è facoltativa ma offre limiti di velocità più elevati e una maggiore affidabilità.

## Utilizzo di immagini da un repository Amazon ECR
<a name="docker-images-ecr"></a>

Puoi archiviare le tue immagini Docker personalizzate AWS con [Amazon Elastic Container Registry](https://aws.amazon.com/ecr) (Amazon ECR). 

[Quando memorizzi le immagini Docker in Amazon ECR, Elastic Beanstalk si autentica automaticamente nel registro Amazon ECR con il profilo dell'istanza del tuo ambiente.](concepts-roles-instance.md) Pertanto, dovrai fornire alle tue istanze l'autorizzazione ad accedere alle immagini nel tuo repository Amazon ECR. A tale scopo, aggiungi le autorizzazioni al profilo dell'istanza del tuo ambiente allegando la policy EC2 ContainerRegistryReadOnly gestita da [Amazon](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryReadOnly.html) al profilo dell'istanza. Ciò fornisce l'accesso in sola lettura a tutti i repository Amazon ECR del tuo account. Hai anche la possibilità di accedere solo a un singolo repository utilizzando il seguente modello per creare una politica personalizzata:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowEbAuth",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "AllowPull",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:ecr:us-east-2:111122223333:repository/repository-name"
            ],
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:ListImages",
                "ecr:BatchGetImage"
            ]
        }
    ]
}
```

------

Sostituisci l'Amazon Resource Name (ARN) nella policy sopra indicata con l'ARN del repository.

Dovrai specificare le informazioni sull'immagine nel tuo `Dockerrun.aws.json` file. La configurazione sarà diversa a seconda della piattaforma utilizzata.

Per la [piattaforma Docker gestita da ECS](create_deploy_docker_v2config.md), usa la `image` chiave in un oggetto di definizione del contenitore: ****

```
"containerDefinitions": [
        {
        "name": "my-image",
        "image": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",
```

Per la [piattaforma Docker](single-container-docker-configuration.md), fai riferimento all'immagine tramite URL. L'URL rientra nella `Image` definizione del `Dockerrun.aws.json` file:

```
  "Image": {
      "Name": "account-id.dkr.ecr.us-east-2.amazonaws.com/repository-name:latest",
      "Update": "true"
    },
```

## Usando Gestione dei segreti AWS
<a name="docker-configuration.remote-repo.secrets"></a>

Configura Elastic Beanstalk per l'autenticazione con il tuo repository privato prima della distribuzione per consentire l'accesso alle immagini del contenitore.

Questo approccio utilizza la fase di *precompilazione* del processo di distribuzione di Elastic Beanstalk con due componenti:
+ [ebextensions](ebextensions.md) per definire le variabili di ambiente che memorizzano le credenziali del repository
+ [script platform hook da eseguire prima di estrarre](platforms-linux-extend.hooks.md) le immagini **docker login**

Gli script hook recuperano un nome utente e una password dalle variabili di ambiente che vengono popolate da un singolo Gestione dei segreti AWS segreto in formato JSON. [Questa funzionalità richiede le piattaforme Elastic Beanstalk Docker e ECS managed Docker rilasciate a partire dal 13 gennaio 2026.](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2026-01-13-al2023.html) [Per ulteriori dettagli, consulta i segreti dell'ambiente.](AWSHowTo.secrets.env-vars.md)

**Per configurare Elastic Beanstalk per l'autenticazione nel tuo repository privato con Gestione dei segreti AWS**
**Nota**  
Prima di procedere, assicurati di aver impostato le credenziali e configurato le autorizzazioni IAM necessarie. Gestione dei segreti AWS Per i dettagli, consulta [Prerequisiti per configurare i segreti come variabili di ambiente.](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.configure-env-vars.prerequisites) 

1. Crea la seguente struttura di cartelle per il tuo progetto:

   ```
   ├── .ebextensions
   │   └── env.config
   ├── .platform
   │   ├── confighooks
   │   │   └── prebuild
   │   │       └── 01login.sh
   │   └── hooks
   │       └── prebuild
   │           └── 01login.sh
   ├── Dockerfile
   ```

1. Utilizzatela [Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)per salvare le credenziali del vostro repository privato come segreto in formato JSON.

   ```
   aws secretsmanager create-secret --name repo-credentials \
       --secret-string '{"username":"myuser","password":"mypassword"}'
   ```

1. Creare il file `env.config` seguente e posizionarlo nella directory `.ebextensions`, come mostrato nella struttura di directory precedente. Questa configurazione utilizza lo spazio dei [aws:elasticbeanstalk:application:environmentsecrets](command-options-general.md#command-options-general-elasticbeanstalk-application-environmentsecrets) nomi con [estrazione di chiavi JSON](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.json) per inizializzare le variabili di ambiente Elastic `USER` Beanstalk dai `PASSWD` singoli campi del segreto.

   ```
   option_settings:
     aws:elasticbeanstalk:application:environmentsecrets:
       USER: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:username
       PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:secret:repo-credentials-AbCd12:password
   ```

1. Crea il seguente file di `01login.sh` script e posizionalo nelle seguenti posizioni (mostrate anche nella struttura di directory precedente):
   + `.platform/confighooks/prebuild/01login.sh`
   + `.platform/hooks/prebuild/01login.sh`

   ```
   #!/bin/bash
   echo $PASSWD | docker login -u $USER --password-stdin
   ```

   Lo `01login.sh` script utilizza le variabili di ambiente configurate nel **passaggio 3** e passa la password a **docker login** via`stdin`. Per ulteriori informazioni sull'autenticazione Docker, consulta [docker](https://docs.docker.com/engine/reference/commandline/login/) login nella documentazione Docker.
**Note**  
La piattaforma Docker gestita da ECS utilizza la sintassi ECS nativa per fare riferimento ai segreti. Per ulteriori informazioni, consulta [Passare i segreti di Secrets Manager tramite le variabili di ambiente Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/secrets-envvar-secrets-manager.html) nella *Amazon Elastic Container Service Developer Guide*.
Per ulteriori informazioni sugli hook della piattaforma, consulta *Extending [Hook della piattaforma](platforms-linux-extend.hooks.md) Elastic Beanstalk Linux platforms*.

Una volta configurata l'autenticazione, Elastic Beanstalk può estrarre e distribuire immagini dal tuo repository privato.

## Utilizzo del file `Dockerrun.aws.json`
<a name="docker-configuration.remote-repo.dockerrun-aws"></a>

In questa sezione viene descritto un altro approccio per l'autenticazione di Elastic Beanstalk in un repository privato. Con questo approccio, si genera un file di autenticazione con il comando Docker e quindi si carica il file di autenticazione in un bucket Amazon S3. È inoltre necessario includere le informazioni relative al bucket nel file `Dockerrun.aws.json`.

**Per generare e fornire un file di autenticazione per Elastic Beanstalk**

1. Genera un file di autenticazione con il comando **docker login**. Per repository su Docker Hub, esegui **docker login**:

   ```
   $ docker login
   ```

   Per gli altri registri, includi l'URL del server di registro:

   ```
   $ docker login registry-server-url
   ```
**Nota**  
Se l'ambiente Elastic Beanstalk utilizza la versione della piattaforma Docker su AMI Amazon Linux (precedente ad Amazon Linux 2), leggi le informazioni pertinenti in [Configurazione Docker su AMI Amazon Linux (precedente ad Amazon Linux 2)](create_deploy_docker.container.console.md#docker-alami).

   Per ulteriori informazioni sul file di autenticazione, vedi [ Memorizzare le immagini in Docker Hub ](https://docs.docker.com/docker-hub/repos/) e [ login docker ](https://docs.docker.com/engine/reference/commandline/login/) sul sito Web Docker.

1. Carica una copia del file di autenticazione denominato `.dockercfg` in un bucket Amazon S3 protetto.
   + Il bucket Amazon S3 deve essere ospitato nello Regione AWS stesso ambiente che lo utilizza. Elastic Beanstalk non può scaricare file da un bucket Amazon S3 ospitato in altre regioni.
   + Concedi le autorizzazioni per l'operazione `s3:GetObject` al ruolo IAM nel profilo dell'istanza. Per ulteriori informazioni, consulta [Gestione dei profili dell'istanza Elastic Beanstalk](iam-instanceprofile.md).

1. Includi le informazioni sul bucket Amazon S3 nel parametro `Authentication` nel file `Dockerrun.aws.json`.

   Il seguente esempio mostra l'uso di un file di autenticazione denominato `mydockercfg` in un bucket denominato `amzn-s3-demo-bucket` per l'utilizzo di un'immagine privata in un registro di terze parti. Per il numero di versione corretto per`AWSEBDockerrunVersion`, consulta la nota che segue l'esempio.

   ```
   {
     "AWSEBDockerrunVersion": "version-no",
     "Authentication": {
       "Bucket": "amzn-s3-demo-bucket",
       "Key": "mydockercfg"
     },
     "Image": {
       "Name": "quay.io/johndoe/private-image",
       "Update": "true"
     },
     "Ports": [
       {
         "ContainerPort": "1234"
       }
     ],
     "Volumes": [
       {
         "HostDirectory": "/var/app/mydb",
         "ContainerDirectory": "/etc/mysql"
       }
     ],
     "Logging": "/var/log/nginx"
   }
   ```
**Versioni `Dockerrun.aws.json`**  
 Il parametro `AWSEBDockerrunVersion` indica la versione del file `Dockerrun.aws.json`.  
Il Docker AL2 e AL2023 le piattaforme utilizzano le seguenti versioni del file.  
`Dockerrun.aws.json v3`— ambienti che utilizzano Docker Compose.
`Dockerrun.aws.json v1`— ambienti che non utilizzano Docker Compose.
*ECS in esecuzione su Amazon Linux 2* e *ECS in esecuzione su AL2023* utilizzano il `Dockerrun.aws.json v2` file. Anche la piattaforma ritirata *ECS-The Multicontainer Docker Amazon Linux AMI AL1 ()* utilizzava questa stessa versione.

Quando Elastic Beanstalk sarà in grado di eseguire l'autenticazione con il registro online che ospita il repository privato, le immagini potranno essere distribuite ed estratte.

## Utilizzo di immagini da Amazon ECR Public
<a name="docker-images-ecr-public"></a>

Amazon ECR Public è un registro di container pubblico che ospita immagini Docker. Sebbene gli archivi pubblici di Amazon ECR siano accessibili al pubblico, l'autenticazione offre limiti di velocità più elevati e una migliore affidabilità per le distribuzioni.

**Nota**  
L'autenticazione pubblica di Amazon ECR non è supportata nelle regioni (`cn-*`) e nelle AWS GovCloud regioni (`us-gov-*`) della Cina. In queste regioni, Elastic Beanstalk utilizzerà pull non autenticati.

Per abilitare l'autenticazione pubblica di Amazon ECR, aggiungi le seguenti autorizzazioni al profilo dell'[istanza](concepts-roles-instance.md) del tuo ambiente. Per ulteriori informazioni sull'autenticazione pubblica di Amazon ECR, consulta l'[autenticazione del registro in Amazon ECR public nella Amazon](https://docs.aws.amazon.com/AmazonECR/latest/public/public-registries.html) *Elastic Container Registry Public User Guide*:

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

****  

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

------

Una volta associate queste autorizzazioni al profilo dell'istanza, Elastic Beanstalk si autenticherà automaticamente con i registri pubblici di Amazon ECR. Puoi fare riferimento alle immagini pubbliche di Amazon ECR utilizzando il `public.ecr.aws/registry-alias/repository-name:tag` formato standard nel tuo `Dockerrun.aws.json` file o Dockerfile.