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
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:
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:
-
ebextensions per definire le variabili di ambiente che memorizzano le credenziali del repository
-
script platform hook da eseguire prima di estrarre 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. 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.
-
Crea la seguente struttura di cartelle per il tuo progetto:
├── .ebextensions │ └── env.config ├── .platform │ ├── confighooks │ │ └── prebuild │ │ └── 01login.sh │ └── hooks │ └── prebuild │ └── 01login.sh ├── Dockerfile -
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"}' -
Creare il file
env.configseguente 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 ElasticUSERBeanstalk daiPASSWDsingoli 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 -
Crea il seguente file di
01login.shscript 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-stdinLo
01login.shscript utilizza le variabili di ambiente configurate nel passaggio 3 e passa la password a docker login viastdin. Per ulteriori informazioni sull'autenticazione Docker, consulta dockerlogin 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 nella Amazon Elastic Container Service Developer Guide.
-
Per ulteriori informazioni sugli hook della piattaforma, consulta Extending Hook della piattaforma 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
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
-
Genera un file di autenticazione con il comando docker login. Per repository su Docker Hub, esegui docker login:
$docker loginPer gli altri registri, includi l'URL del server di registro:
$docker loginregistry-server-urlNota
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. -
Carica una copia del file di autenticazione denominato
.dockercfgin 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:GetObjectal ruolo IAM nel profilo dell'istanza. Per ulteriori informazioni, consulta Gestione dei profili dell'istanza Elastic Beanstalk.
-
-
Includi le informazioni sul bucket Amazon S3 nel parametro
Authenticationnel fileDockerrun.aws.json.Il seguente esempio mostra l'uso di un file di autenticazione denominato
mydockercfgin un bucket denominatoamzn-s3-demo-bucketper 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
AWSEBDockerrunVersionindica la versione del fileDockerrun.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 v2file. 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:
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/ formato standard nel tuo registry-alias/repository-name:tagDockerrun.aws.json file o Dockerfile.