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"
},
Utilizzando AWS Systems Manager (SSM) Parameter Store o AWS Secrets Manager
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 in modo sicuro le credenziali dalle variabili di ambiente compilate da Parameter Store o. AWS Systems Manager AWS Secrets ManagerQuesta funzionalità richiede le piattaforme Elastic Beanstalk Docker e ECS managed Docker rilasciate a partire dal 26 marzo 2025. Per maggiori dettagli, consulta Configurazione delle variabili di ambiente.
Per configurare Elastic Beanstalk per l'autenticazione nel tuo repository privato con Parameter Store o AWS Systems ManagerAWS Secrets Manager
Nota
Prima di procedere, assicurati di aver impostato le credenziali in AWS Systems Manager Parameter Store o AWS Secrets Manager di aver configurato le autorizzazioni IAM necessarie. 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
-
Usa AWS Systems ManagerParameter Store o AWS Secrets Managerper salvare le credenziali del tuo repository privato. Questo esempio mostra sia AWS Systems Manager Parameter Store che AWS Secrets Manager , ma puoi scegliere di utilizzare solo uno di questi servizi.
aws ssm put-parameter --name USER --type SecureString --value "username" aws secretsmanager create-secret --name PASSWD --secret-string "passwd"
-
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 per inizializzare le variabili di ambientePASSWD
ElasticUSER
Beanstalk sui valori memorizzati nel Systems Manager Parameter Store.Nota
option_settings: aws:elasticbeanstalk:application:environmentsecrets: USER: arn:aws:ssm:us-east-1:111122223333:parameter/user PASSWD: arn:aws:secretsmanager:us-east-1:111122223333:passwd
-
Creare il seguente file di script
01login.sh
e inserirlo nelle seguenti directory (mostrate anche nella struttura di directory precedente):-
.platform/confighooks/prebuild
-
.platform/hooks/prebuild
### example 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 in modo sicuro la password a via. docker loginstdin
Per ulteriori informazioni sull'autenticazione Docker, consulta dockerlogin nella documentazione Docker. Note
-
I file hook possono essere file binari oppure file di script che iniziano con una riga #! contenente il percorso dell'interprete, ad esempio #!/bin/bash.
-
Per maggiori informazioni, vedere Hook della piattaforma in Estensione di Elastic Beanstalk alle piattaforme Linux.
-
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 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. -
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.
-
-
Includi le informazioni sul bucket Amazon S3 nel parametro
Authentication
nel fileDockerrun.aws.json
.Il seguente esempio mostra l'uso di un file di autenticazione denominato
mydockercfg
in un bucket denominatoamzn-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 fileDockerrun.aws.json
.-
Le piattaforme Docker AL2 e AL2 023 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 ed ECS in esecuzione su AL2 023 utilizzano il file.
Dockerrun.aws.json v2
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:tag
Dockerrun.aws.json
file o Dockerfile.