ECR: archiviazione e recupero delle immagini dei container
Eseguire il push delle immagini Docker in Amazon ECR, applicare policy del ciclo di vita per eliminare le immagini obsolete ed eseguire il pull delle immagini in modo sicuro nelle attività ECS
ECR: archiviazione e recupero delle immagini dei container è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Che cos'è Amazon ECR?
Amazon Elastic Container Registry (ECR) è un registro di immagini container completamente gestito e compatibile con Docker. Archivia, gestisce e distribuisce in modo sicuro le immagini dei container all'interno di AWS. ECR elimina la necessità di gestire una propria infrastruttura di registro e si integra nativamente con ECS, EKS, Lambda (immagini container) e CodeBuild. Le immagini archiviate in ECR vengono replicate per garantire un'elevata disponibilità e possono essere analizzate automaticamente per individuare vulnerabilità di sicurezza.
Repository ECR privati e pubblici
ECR supporta due tipi di repository: i repository privati in Amazon ECR richiedono l'autenticazione AWS per recuperare le immagini e sono ideali per le immagini proprietarie delle applicazioni. L'accesso è controllato dalle policy IAM e dalle policy delle risorse del repository. I repository pubblici nella ECR Public Gallery (public.ecr.aws) consentono di recuperare immagini senza autenticazione da qualsiasi punto di Internet e sono ideali per immagini di base open source, strumenti pubblici e immagini fornite da AWS (immagini di base Lambda e immagini AMI ottimizzate per ECS). I repository pubblici prevedono una quota gratuita di download, con limiti di frequenza per le richieste non autenticate.
# Create a private ECR repository
aws ecr create-repository \
--repository-name 'myapp/backend' \
--image-scanning-configuration scanOnPush=true \
--image-tag-mutability IMMUTABLEAutenticazione di Docker a ECR
Per eseguire il push o il pull di immagini ECR private, Docker deve autenticarsi utilizzando le credenziali AWS. Usate aws ecr get-login-password per ottenere un token di autenticazione temporaneo e passatelo tramite pipe a docker login. Il token è valido per 12 ore. Nelle pipeline CI/CD, aggiornate il token prima di ogni push. Gli agenti delle attività ECS, Lambda e i nodi worker EKS eseguono automaticamente l'autenticazione a ECR utilizzando il proprio ruolo IAM: negli ambienti AWS non è necessario effettuare manualmente il login per i pull durante l'esecuzione.
# Authenticate Docker CLI to ECR
aws ecr get-login-password --region us-east-1 | \
docker login \
--username AWS \
--password-stdin \
123456789012.dkr.ecr.us-east-1.amazonaws.comInvio di immagini a ECR
Il flusso di lavoro standard per inviare un'immagine a ECR è il seguente: (1) Build: create localmente l'immagine Docker; (2) Tag: assegnate all'immagine un tag contenente l'URI del repository ECR (formato: account.dkr.ecr.region.amazonaws.com/repo-name:tag); (3) Push: inviate l'immagine contrassegnata. ECR archivia separatamente ogni layer dell'immagine ed elimina i duplicati dei layer comuni tra le immagini, riducendo i costi di archiviazione. L'uso di tag immutabili impedisce di sovrascrivere un tag, garantendo che le versioni delle immagini distribuite siano stabili e verificabili.
# Build, tag, and push
docker build -t myapp/backend .
docker tag myapp/backend \
123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/backend:v1.2.3
docker push \
123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/backend:v1.2.3Mutabilità dei tag delle immagini
I tag IMMUTABLE impediscono che un tag venga sovrascritto con un'immagine diversa. Quando la mutabilità dei tag è impostata su IMMUTABLE, l'invio di una nuova immagine con un tag già esistente non riesce: dovete usare un nuovo tag. Questa è una best practice per la produzione: garantisce che :v1.2.3 faccia sempre riferimento esattamente allo stesso digest dell'immagine, consentendo rollback affidabili e attività di audit. Usate i tag MUTABLE solo per i branch di sviluppo o per il tag di comodità :latest negli ambienti non di produzione.
Scansione delle immagini per individuare vulnerabilità
Abilitate la scansione al momento del push per analizzare automaticamente le immagini alla ricerca di CVE note quando vengono inviate. ECR utilizza l'integrazione con Amazon Inspector (scansione avanzata) oppure la Basic Scanning integrata, basata sullo scanner open source Clair. La scansione avanzata offre una scansione continua, non limitata al momento del push, e copre i pacchetti del sistema operativo e quelli specifici dei linguaggi (Node.js, Python, Java). Esaminate i risultati della scansione nella console ECR oppure tramite notifiche EventBridge al vostro team addetto alla sicurezza.
# Enable enhanced scanning for a registry
aws ecr put-registry-scanning-configuration \
--scan-type ENHANCED \
--rules '[{"repositoryFilters": [{"filter": "*", "filterType": "WILDCARD"}], "scanFrequency": "CONTINUOUS_SCAN"}]'Policy del ciclo di vita per gestire i costi delle immagini
ECR addebita lo spazio di archiviazione in base ai GB al mese. Senza una gestione adeguata, le immagini obsolete si accumulano indefinitamente, aumentando i costi. Le policy del ciclo di vita fanno scadere ed eliminano automaticamente le immagini in base a regole specifiche: ad esempio, potete conservare solo le ultime 10 versioni contrassegnate oppure eliminare le immagini senza tag più vecchie di 7 giorni. Le policy del ciclo di vita vengono eseguite quotidianamente. Questo è particolarmente importante nelle pipeline CI/CD che inviano nuove immagini a ogni commit, poiché possono accumularne centinaia ogni settimana.
aws ecr put-lifecycle-policy \
--repository-name 'myapp/backend' \
--lifecycle-policy-text '{
"rules": [
{
"rulePriority": 1,
"description": "Keep last 10 tagged images",
"selection": {"tagStatus": "tagged", "tagPrefixList": ["v"], "countType": "imageCountMoreThan", "countNumber": 10},
"action": {"type": "expire"}
},
{
"rulePriority": 2,
"description": "Delete untagged images after 7 days",
"selection": {"tagStatus": "untagged", "countType": "sinceImagePushed", "countUnit": "days", "countNumber": 7},
"action": {"type": "expire"}
}
]
}'Accesso alle immagini tra account
Per recuperare immagini da un repository ECR nell'Account A da ECS/EKS/Lambda nell'Account B, configurate una policy del repository (policy basata sulle risorse) nel repository ECR dell'Account A, concedendo al principale IAM dell'Account B l'autorizzazione a chiamare ecr:GetDownloadUrlForLayer, ecr:BatchGetImage e ecr:BatchCheckLayerAvailability. In questo modo non è necessario copiare le immagini tra gli account ed è possibile gestire centralmente le immagini distribuendone il consumo.
Replica ECR per distribuzioni multi-Regione
La replica ECR copia automaticamente le immagini dal registro primario ai registri in altre Regioni AWS e, facoltativamente, in altri account. Quando le attività ECS in un'altra Regione recuperano un'immagine, la prelevano dal registro regionale locale, riducendo i costi di trasferimento dei dati e la latenza del pull delle immagini. Configurate le regole di replica a livello di registro, specificando quali repository replicare e quali Regioni e account di destinazione utilizzare. La replica è asincrona e quasi in tempo reale.
aws ecr put-replication-configuration \
--replication-configuration '{
"rules": [{
"destinations": [
{"region": "eu-west-1", "registryId": "123456789012"},
{"region": "ap-southeast-1", "registryId": "123456789012"}
],
"repositoryFilters": [{"filter": "prod/*", "filterType": "PREFIX_MATCH"}]
}]
}'Crittografia ECR
ECR crittografa le immagini inattive utilizzando la crittografia lato server. Per impostazione predefinita, usa una chiave gestita da AWS (AWS_MANAGED_KEY). Per un controllo e una verificabilità maggiori, configurate una chiave KMS gestita dal cliente (CMK). Con una CMK, controllate la rotazione della chiave, potete revocare l'accesso disabilitando la chiave e potete verificare tutte le operazioni di decrittografia in CloudTrail. Abilitate la crittografia KMS quando la conformità normativa (PCI-DSS, HIPAA, FedRAMP) richiede chiavi di crittografia controllate dal cliente.
Uso di ECR con ECS nelle pipeline CI/CD
Una pipeline CI/CD completa per ECS con ECR prevede: (1) lo sviluppatore invia il codice a Git; (2) CodeBuild crea l'immagine Docker e la invia a ECR con un tag basato sull'hash SHA del commit; (3) CodePipeline aggiorna la definizione dell'attività ECS con il nuovo URI dell'immagine; (4) ECS esegue un aggiornamento progressivo del servizio, recuperando la nuova immagine da ECR. Le attività ECS utilizzano il Task Execution Role per autenticarsi automaticamente a ECR: per i pull durante l'esecuzione non è necessario gestire credenziali nella pipeline.
Verifica rapida
Verificate la vostra comprensione dei concetti di AWS Solutions Architect (SAA-C03) trattati in questa lezione.
Riepilogo della lezione
In questa lezione avete appreso che i repository ECR privati archiviano immagini container con accesso controllato da IAM, tag immutabili per garantire la stabilità in produzione e scansione automatica delle vulnerabilità con Inspector; le Lifecycle Policies fanno scadere automaticamente le immagini obsolete e prive di tag, così da controllare i costi di archiviazione negli ambienti CI/CD attivi; infine, la replica ECR copia le immagini in altre Regioni e account per le distribuzioni multi-Regione, riducendo la latenza dei pull. Nella prossima lezione esploreremo l'Auto Scaling dei servizi ECS e l'integrazione con il bilanciamento del carico.
Domande Frequenti
La lezione «ECR: archiviazione e recupero delle immagini dei container» è gratuita?
Sì — il testo completo di «ECR: archiviazione e recupero delle immagini dei container» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Cosa imparerò in «ECR: archiviazione e recupero delle immagini dei container»?
Eseguire il push delle immagini Docker in Amazon ECR, applicare policy del ciclo di vita per eliminare le immagini obsolete ed eseguire il pull delle immagini in modo sicuro nelle attività ECS Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?
Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «ECR: archiviazione e recupero delle immagini dei container»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?
Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Cluster ECS, definizioni dei task e servizi
- Tipo di avvio EC2 e Fargate a confronto
- ECR: archiviazione e recupero delle immagini dei container
- Auto Scaling e bilanciamento del carico dei servizi ECS