Se lavori con container Docker su AWS, probabilmente ti sei chiesto dove archiviare le tue immagini in modo sicuro ed efficiente. Amazon Elastic Container Registry (ECR) è la risposta di AWS a questa domanda: un servizio completamente gestito che ti permette di salvare, gestire e distribuire le tue immagini container senza preoccuparti dell’infrastruttura sottostante.
In questa guida completa scoprirai tutto quello che c’è da sapere su Amazon ECR: cos’è, come funziona, quanto costa realmente e come risparmiare sui costi. Che tu stia gestendo una piccola startup o un’infrastruttura enterprise, questa guida ti aiuterà a capire se ECR è la soluzione giusta per te e come utilizzarlo al meglio.
Cos’è Amazon ECR in Parole Semplici
Immagina di aver creato un’applicazione e di averla “impacchettata” in un container Docker. Ora hai bisogno di un posto dove conservare questo “pacchetto” in modo sicuro, così da poterlo utilizzare ogni volta che ti serve per avviare la tua applicazione su AWS.
Amazon ECR è proprio questo: un magazzino digitale (chiamato “registry”) dove puoi archiviare le tue immagini Docker. È come avere un GitHub privato, ma invece di salvare codice sorgente, salvi immagini container pronte all’uso.
Docker Image Registry: Come Funziona
Perché Usare ECR invece di Alternative?
Se usi già servizi AWS come ECS, EKS, Lambda o Fargate, ECR è la scelta più naturale per questi motivi:
-
Integrazione nativa - Funziona perfettamente con tutti i servizi AWS senza configurazioni complesse
-
Sicurezza avanzata - Controllo degli accessi tramite IAM, encryption automatica dei dati
-
Velocità - Le tue immagini sono già nella rete AWS, quindi il download è velocissimo
-
Affidabilità - AWS gestisce backup, scalabilità e disponibilità per te
-
Scansione vulnerabilità - Controlli automatici per identificare problemi di sicurezza nelle immagini
Come Funziona Amazon ECR: Concetti Base
Prima di parlare di costi, è importante capire alcuni concetti fondamentali di ECR. Non preoccuparti, li spiegheremo in modo semplice!
Repository: I Contenitori delle Tue Immagini
Un repository in ECR è come una cartella dove salvi diverse versioni della stessa applicazione. Ad esempio, potresti avere un repository chiamato “la-mia-app” che contiene:
-
La versione 1.0.0 (quella stabile in produzione)
-
La versione 1.0.1 (con alcune correzioni)
-
La versione 2.0.0-beta (la nuova versione in test)
-
La versione “latest” (l’ultima disponibile)
Ogni versione è identificata da un tag, proprio come nelle versioni di Git.
Immagini Docker: Il Tuo Codice Impacchettato
Un’immagine Docker è come una fotografia istantanea della tua applicazione, completa di tutto ciò che serve per farla funzionare: codice, librerie, dipendenze, configurazioni. È un pacchetto autosufficiente pronto per essere eseguito.
Come Fare un Dockerfile: Guida Semplice
Il Flusso di Lavoro Tipico con ECR
Ecco cosa succede normalmente quando lavori con ECR:
-
Sviluppi la tua applicazione sul tuo computer
-
Crei un’immagine Docker che contiene l’applicazione
-
Carichi (push) l’immagine su Amazon ECR
-
I tuoi servizi AWS scaricano (pull) l’immagine quando serve
-
Esegui l’applicazione nei tuoi container su ECS, EKS o Lambda
Tutto questo avviene in modo sicuro e veloce grazie all’infrastruttura AWS.
Esempio Pratico per Chi Inizia
Immaginiamo che tu abbia un semplice sito web Node.js. Ecco il processo semplificato:
Sul tuo computer:
# Crei l'immagine Docker della tua app
docker build -t mio-sito-web .
Carichi su ECR:
# Ti autentichi con ECR
aws ecr get-login-password --region eu-west-1 | docker login ...
# Dai un "nome completo" all'immagine
docker tag mio-sito-web:latest 123456.dkr.ecr.eu-west-1.amazonaws.com/mio-sito-web:latest
# Carichi su ECR
docker push 123456.dkr.ecr.eu-west-1.amazonaws.com/mio-sito-web:latest
Su AWS:
I tuoi servizi (ECS, Lambda, ecc.) ora possono scaricare e usare questa immagine automaticamente.
Non ti preoccupare se i comandi sembrano complessi: una volta configurato, il processo diventa automatico grazie alle pipeline CI/CD!
Tipi di Repository Amazon ECR
Amazon ECR offre due modalità di utilizzo, pensate per esigenze diverse:
Repository Privati: Per le Tue Applicazioni Aziendali
I repository privati sono accessibili solo a chi ha i permessi giusti. Sono perfetti per:
-
Applicazioni aziendali e codice proprietario
-
Progetti che richiedono controllo degli accessi granulare
-
Situazioni dove la sicurezza è prioritaria
Caratteristiche principali:
-
Solo utenti autorizzati via IAM possono accedere
-
Dati crittografati automaticamente
-
Perfetta integrazione con VPC e reti private AWS
Quando usarli: Nella maggior parte dei casi, userai repository privati per le tue applicazioni di produzione.
Repository Pubblici (ECR Public): Per Condividere con Tutti
I repository pubblici permettono a chiunque di scaricare le tue immagini, senza autenticazione. Sono ideali per:
-
Progetti open source
-
Tool e utilities che vuoi condividere con la community
-
Immagini base che altri developer possono usare
Vantaggi:
-
Download gratuito da internet (nessun costo di bandwidth)
-
Visibilità pubblica per il tuo progetto
-
Funziona come Docker Hub ma con l’affidabilità AWS
Quando usarli: Solo se vuoi rendere le tue immagini pubblicamente accessibili a tutti.
Costi Amazon ECR: Guida Completa al Pricing
Arriviamo alla parte cruciale: quanto costa davvero Amazon ECR? La buona notizia è che ECR ha un modello di pricing molto semplice e trasparente.
Il Modello di Costo di Amazon ECR
ECR ha tre voci di costo principali:
-
Storage - Paghi per lo spazio disco usato dalle tue immagini
-
Trasferimento dati - Paghi quando trasferisci dati fuori da AWS
-
Scansione vulnerabilità - Costo opzionale per controlli di sicurezza avanzati
Vediamoli nel dettaglio con esempi reali.
1. Costi di Storage: Quanto Paghi per Archiviare le Immagini
Il costo di storage di Amazon ECR è molto semplice da calcolare:
Prezzo: $0,10 per GB al mese (regione eu-west-1 / Milano)
Paghi solo per lo spazio effettivamente occupato dalle tue immagini Docker. Se hai 5 GB di immagini, paghi $0,50 al mese. Semplice!
Esempio Pratico: Piccolo Progetto
Immagina di avere:
-
3 microservizi (API, frontend, worker)
-
Dimensione media: 500 MB per immagine
-
Totale: 1,5 GB
Calcolo del costo mensile:
1,5 GB × $0,10 = $0,15 al mese
Costo annuale: $1,80
Praticamente trascurabile per la maggior parte dei progetti!
2. Costi di Trasferimento Dati: Quando Paghi per il Bandwidth
Questa è la parte che può sorprenderti (in positivo o in negativo, a seconda di come usi ECR).
Trasferimenti Gratuiti
Buone notizie! Non paghi per:
-
Pull all’interno della stessa region AWS - Se ECS, EKS o Lambda scaricano immagini da ECR nella stessa regione: gratis
-
Trasferimenti tra servizi AWS - Tutto il traffico interno AWS: gratis
-
Pull da ECR Public verso internet - Download pubblici: gratis
Questo significa che nella maggior parte dei casi d’uso normali, non pagherai mai costi di trasferimento.
Trasferimenti a Pagamento
Paghi solo per:
-
Pull da internet (fuori da AWS) verso sistemi esterni
-
Trasferimenti cross-region tra diverse regioni AWS
Prezzi trasferimento dati verso internet (eu-west-1):
-
Primi 10 TB al mese: $0,09 per GB
-
Da 10 TB a 50 TB: $0,085 per GB
-
Oltre 150 TB: $0,05 per GB
Esempio: Sistema CI/CD Esterno
Scenario comune:
-
Pipeline CI/CD su GitLab.com (fuori da AWS)
-
50 pull al mese da sistemi esterni
-
500 MB per immagine
Calcolo:
50 pull × 0,5 GB = 25 GB trasferiti
25 GB × $0,09 = $2,25 al mese
3. Costi di Scansione Vulnerabilità: Security Check Automatici
Amazon ECR offre due livelli di scansione per identificare vulnerabilità di sicurezza nelle tue immagini:
Basic Scanning - Gratuito
La scansione base è completamente gratuita e include:
-
Controllo database CVE (Common Vulnerabilities and Exposures)
-
Scansione manuale o automatica al push
-
Report di vulnerabilità note
Ideale per: Ambienti di sviluppo e test, piccoli progetti, budget limitati
Enhanced Scanning - a Pagamento
La scansione avanzata usa Amazon Inspector e costa:
Prezzo: $0,09 per scansione per immagine
Cosa offre in più:
-
Monitoraggio continuo - Scansione automatica quando si scoprono nuove vulnerabilità
-
Copertura estesa - Vulnerabilità in OS, Python, Java, Node.js, Go, Ruby, .NET
-
Report dettagliati - Priorità di rischio e suggerimenti di remediation
Esempio di Costo: Enhanced Scanning
Scenario tipico produzione:
-
10 immagini in ambiente produzione
-
1 scansione al giorno per immagine
-
30 giorni al mese
Calcolo mensile:
10 immagini × 1 scan/giorno × 30 giorni × $0,09 = $27 al mese
Strategia per risparmiare: Attiva enhanced scanning solo sulle immagini critiche in produzione, usa basic scanning per tutto il resto.
Riepilogo Costi Amazon ECR
Ecco una tabella riassuntiva per avere tutto chiaro:
Voce di Costo | Prezzo | Quando Si Paga |
---|---|---|
Storage | $0,10/GB/mese | Sempre, in base allo spazio usato |
Trasferimento interno AWS | Gratis | Mai |
Trasferimento verso internet | $0,09/GB (primi 10TB) | Solo per pull esterni |
Basic Scanning | Gratis | Mai |
Enhanced Scanning | $0,09/scan | Se attivato, ad ogni scansione |
Amazon ECR Free Tier: Inizia Gratis
Se hai un account AWS nuovo (nei primi 12 mesi), hai accesso al free tier di ECR:
Cosa include:
-
500 MB di storage al mese - gratis per 12 mesi
-
Trasferimenti dati gratuiti - Sempre gratis all’interno di AWS
Cosa significa in pratica:
Per un piccolo progetto con 2-3 microservizi (circa 500 MB totali), puoi usare ECR completamente gratis per un anno!
Dopo i 12 mesi, con 500 MB pagheresti solo $0,05 al mese.
Strategie di Ottimizzazione Costi Amazon ECR
Ora che sai quanto costa ECR, vediamo come ridurre la spesa al minimo mantenendo efficienza e sicurezza.
1. Implementa Lifecycle Policy: Pulizia Automatica delle Vecchie Immagini
Le lifecycle policy sono regole automatiche che eliminano immagini vecchie o inutilizzate. È come un sistema di pulizia automatica del tuo magazzino.
Perché è Importante
Ogni volta che fai un deploy, crei una nuova immagine. Dopo 6 mesi di deploy giornalieri, potresti avere centinaia di vecchie immagini che:
-
Occupano spazio (e quindi costano)
-
Non usi più (ma continui a pagarle)
-
Creano confusione (quale versione era quella buona?)
Esempio di Policy: Mantieni Solo le Ultime 5 Versioni
{
"rules": [
{
"rulePriority": 1,
"description": "Mantieni solo le ultime 5 immagini",
"selection": {
"tagStatus": "any",
"countType": "imageCountMoreThan",
"countNumber": 5
},
"action": {
"type": "expire"
}
}
]
}
Cosa fa questa policy:
-
Controlla quante immagini hai nel repository
-
Se sono più di 5, elimina automaticamente le più vecchie
-
Mantiene solo le ultime 5 versioni (sufficienti per rollback rapidi)
Risparmio Reale
Senza lifecycle policy:
-
50 immagini accumulate in 6 mesi
-
600 MB per immagine
-
30 GB totali × $0,10 = $3,00 al mese
Con lifecycle policy (mantieni 5):
-
5 immagini mantenute
-
600 MB per immagine
-
3 GB totali × $0,10 = $0,30 al mese
Risparmio: 90% ($32,40 risparmiati all’anno per repository)
2. Ottimizza le Dimensioni delle Immagini Docker
Immagini più piccole significano:
-
Meno storage = meno costi ECR
-
Download più veloce = deploy più rapidi
-
Meno superficie di attacco = più sicurezza
Tecnica 1: Usa Immagini Base Leggere
Prima (immagine pesante):
FROM ubuntu:latest
# Immagine risultante: ~800 MB
Dopo (immagine leggera):
FROM alpine:latest
# Immagine risultante: ~50 MB
Risparmio: 93% di spazio!
Tecnica 2: Multi-Stage Build
Il multi-stage build ti permette di compilare la tua app in un container “grande” e poi copiare solo il risultato finale in un container “piccolo”.
Come Usare Docker Multistage Build
Risparmio Complessivo
Progetto con 10 microservizi:
Senza ottimizzazione:
-
10 servizi × 800 MB = 8 GB
-
Costo storage: 8 GB × $0,10 = $0,80/mese
Con ottimizzazione:
-
10 servizi × 100 MB = 1 GB
-
Costo storage: 1 GB × $0,10 = $0,10/mese
Risparmio annuale: $8,40 + deployment più veloci!
3. Evita Duplicazione delle Immagini
Un errore comune è creare più copie della stessa immagine con tag diversi, sprecando spazio.
Cattiva Pratica: Tag Multipli Ridondanti
# Stesso contenuto, 3 tag diversi = 3x lo spazio
docker tag mia-app:latest 123456.dkr.ecr.region.amazonaws.com/mia-app:latest
docker push 123456.dkr.ecr.region.amazonaws.com/mia-app:latest
docker tag mia-app:latest 123456.dkr.ecr.region.amazonaws.com/mia-app:v1.0.0
docker push 123456.dkr.ecr.region.amazonaws.com/mia-app:v1.0.0
docker tag mia-app:latest 123456.dkr.ecr.region.amazonaws.com/mia-app:prod
docker push 123456.dkr.ecr.region.amazonaws.com/mia-app:prod
# Risultato: 3 GB usati per la stessa immagine!
Buona Pratica: Usa Image Digest
# Pusha una sola volta con un tag semantico
docker push 123456.dkr.ecr.region.amazonaws.com/mia-app:v1.0.0
# Poi usa il digest (hash) per riferimenti garantiti
# Il digest identifica univocamente l'immagine senza duplicarla
aws ecr describe-images --repository-name mia-app --image-ids imageTag=v1.0.0
4. Scegli la Region AWS Giusta
La region dove crei il repository ECR influisce sui costi di trasferimento dati.
Regola d’oro: Usa ECR nella stessa region dei tuoi servizi (ECS, EKS, Lambda).
Esempio scenario sbagliato:
-
ECR in: us-east-1 (Virginia)
-
ECS in: eu-west-1 (Irlanda)
-
Risultato: Paghi il trasferimento cross-region ($0,02/GB)
Scenario corretto:
-
ECR in: eu-west-1 (Irlanda)
-
ECS in: eu-west-1 (Irlanda)
-
Risultato: Trasferimento gratis
5. Considera ECR Public per Progetti Open Source
Se hai un progetto open source o immagini che vuoi condividere pubblicamente, usa ECR Public invece di ECR privato.
Vantaggi di ECR Public:
-
Bandwidth gratuita per pull da internet
-
Nessun costo di trasferimento dati
-
Visibilità per la community
Risparmio esempio:
-
1000 pull al mese da sviluppatori esterni
-
500 MB per immagine
-
Con ECR privato: 500 GB × $0,09 = $45/mese
-
Con ECR Public: $0/mese
Risparmio annuale: $540!
Amazon ECR vs Docker Hub: Confronto Completo
Molti developer si chiedono: meglio ECR o Docker Hub? Vediamo un confronto obiettivo.
Confronto Prezzi e Funzionalità
Caratteristica | Amazon ECR | Docker Hub Free | Docker Hub Pro |
---|---|---|---|
Storage privato | $0,10/GB/mese | 1 repository gratis | $5/mese illimitato |
Repository privati | Illimitati | 1 solo | Illimitati |
Repository pubblici | Illimitati (ECR Public) | Illimitati | Illimitati |
Bandwidth AWS | Gratis | N/A | N/A |
Pull rate limit | Nessuno | 100 pull / 6 ore | 5000 pull / giorno |
Image scanning | Incluso (basic) | A pagamento | A pagamento |
Integrazione AWS | Nativa | Configurazione manuale | Configurazione manuale |
Performance in AWS | Eccellente | Dipende da rete | Dipende da rete |
Quando Scegliere Docker Hub
Docker Hub può essere la scelta migliore se:
-
Hai un progetto open source molto visitato
-
Lavori in ambiente multi-cloud (non solo AWS)
-
Hai già workflow consolidati su Docker Hub
-
Vuoi visibilità nella community Docker
-
Team molto piccolo con budget limitatissimo
Quando Scegliere Amazon ECR
ECR è la scelta migliore se:
-
La tua infrastruttura è su AWS
-
Usi ECS, EKS, Fargate o Lambda
-
Hai bisogno di integrazione nativa con IAM
-
Vuoi prestazioni ottimali (latenza minima)
-
La sicurezza e il controllo accessi sono priorità
-
Vuoi scalabilità automatica senza pensieri
Soluzione Ibrida: Il Meglio di Entrambi
Molte aziende usano entrambi in questo modo:
-
Docker Hub: Immagini pubbliche, base images, tool open source
-
Amazon ECR: Immagini private, applicazioni aziendali, produzione
Esempio pratico:
# Pull di immagine base pubblica da Docker Hub
FROM node:18-alpine
# Build della tua app
COPY . /app
RUN npm install
# Push dell'immagine finale su ECR
# docker push 123456.dkr.ecr.region.amazonaws.com/mia-app:v1.0.0
Vantaggi:
-
Usi immagini base gratuite da Docker Hub
-
Mantieni le tue app private su ECR
-
Ottimizzi costi e performance
Domande Frequenti su Amazon ECR
Quanto costa Amazon ECR per un piccolo progetto?
Per un piccolo progetto con 2-3 microservizi (circa 1-2 GB storage totale), ECR costa $0,10-0,20 al mese senza enhanced scanning. Con il free tier (primi 12 mesi), è completamente gratuito.
ECR è più economico di Docker Hub?
Dipende dall’uso. Per progetti su AWS con meno di 50 GB, ECR è generalmente più economico. Per progetti con molti pull pubblici, Docker Hub può essere più conveniente. Vedi la sezione confronto per dettagli.
Come posso ridurre i costi di storage ECR?
Le strategie principali sono:
-
Implementare lifecycle policy per eliminare immagini vecchie
-
Ottimizzare le dimensioni delle immagini Docker
-
Evitare tag duplicati della stessa immagine
-
Usare immagini base leggere come Alpine
Devo pagare per il trasferimento dati in AWS?
No! Il trasferimento dati tra ECR e servizi AWS nella stessa region è completamente gratuito. Paghi solo per trasferimenti verso internet o cross-region.
Qual è la differenza tra basic e enhanced scanning?
Basic scanning è gratuito ma controlla solo vulnerabilità del sistema operativo usando database CVE. Enhanced scanning costa $0,09 per scan ma monitora continuamente anche vulnerabilità nei linguaggi (Python, Java, Node.js, ecc.) e offre report più dettagliati.
Posso usare ECR con servizi non-AWS?
Sì! Puoi fare pull/push da qualsiasi sistema con Docker installato e credenziali AWS valide. Tuttavia, pagherai costi di trasferimento dati per pull verso internet.
Come faccio il backup delle immagini ECR?
Puoi:
-
Abilitare la replica cross-region automatica
-
Fare pull periodico e salvare su S3
-
Usare tool di terze parti per backup automatizzato
ECR supporta immagini container non-Docker?
Sì! ECR supporta qualsiasi immagine compatibile con OCI (Open Container Initiative), incluse immagini create con Podman, Buildah, o altri tool.
Posso limitare l’accesso a specifiche immagini?
Sì, tramite IAM policies puoi controllare chi può fare pull/push di quali immagini, fino al livello di singolo tag.
Come gestisco le immagini per team diversi?
La best practice è creare repository separati per team o progetti, usando naming convention come team/project/service
. Poi usa IAM per dare accesso granulare.
Conclusioni: Amazon ECR Conviene Davvero?
Dopo aver analizzato in dettaglio costi, funzionalità e best practices di Amazon ECR, possiamo trarre alcune conclusioni chiare.
Amazon ECR è Conveniente se:
-
Usi già AWS - L’integrazione nativa con ECS, EKS, Lambda rende ECR la scelta naturale
-
Vuoi semplicità - Nessun server da gestire, scalabilità automatica, backup inclusi
-
La sicurezza è prioritaria - IAM, encryption, scanning vulnerabilità nativi
-
Hai progetti di qualsiasi dimensione - Da pochi MB a centinaia di GB, paghi solo quello che usi
-
Vuoi performance ottimali - Latenza minima per pull/push all’interno di AWS
Punti di Forza di ECR
Convenienza economica:
-
Storage a $0,10/GB/mese è competitivo
-
Trasferimenti gratuiti in AWS (il caso d’uso principale)
-
Free tier generoso per iniziare
-
Nessun costo fisso, paghi solo l’uso reale
Semplicità operativa:
-
Zero manutenzione dell’infrastruttura
-
Integrazione one-click con servizi AWS
-
API e CLI ben documentate
-
Supporto AWS completo
Sicurezza enterprise:
-
IAM per controllo accessi granulare
-
Encryption at rest di default
-
Scanning vulnerabilità incluso
-
VPC endpoints per traffico privato
Attenzione a:
-
Enhanced scanning può costare - Usalo solo dove necessario (produzione, servizi critici)
-
Pull esterni hanno un costo - Considera di spostare CI/CD in AWS
-
Lifecycle policy non è automatica - Devi configurarla manualmente