View a markdown version of this page

Autenticazione con archivi di immagini - AWS Elastic Beanstalk

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

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

Puoi archiviare le tue immagini Docker personalizzate AWS con Amazon Elastic Container Registry (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. 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 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, 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, 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

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:

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. Per ulteriori dettagli, consulta i segreti dell'ambiente.

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.

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

    ├── .ebextensions │ └── env.config ├── .platform │ ├── confighooks │ │ └── prebuild │ │ └── 01login.sh │ └── hooks │ └── prebuild │ └── 01login.sh ├── Dockerfile
  2. Utilizzatela Gestione dei segreti AWSper 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"}'
  3. 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 nomi con estrazione di chiavi 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
  4. 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 viastdin. Per ulteriori informazioni sull'autenticazione Docker, consulta docker login nella documentazione Docker.

    Note

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

Utilizzo del file Dockerrun.aws.json

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

    Per ulteriori informazioni sul file di autenticazione, vedi Memorizzare le immagini in Docker Hub e login docker sul sito Web Docker.

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

  3. 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 perAWSEBDockerrunVersion, 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

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 del tuo ambiente. Per ulteriori informazioni sull'autenticazione pubblica di Amazon ECR, consulta l'autenticazione del registro in Amazon ECR public nella Amazon 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.