Cos'è Amazon ECR? Costi e Come Usarlo

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:

  1. Sviluppi la tua applicazione sul tuo computer

  2. Crei un’immagine Docker che contiene l’applicazione

  3. Carichi (push) l’immagine su Amazon ECR

  4. I tuoi servizi AWS scaricano (pull) l’immagine quando serve

  5. 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:

  1. Storage - Paghi per lo spazio disco usato dalle tue immagini

  2. Trasferimento dati - Paghi quando trasferisci dati fuori da AWS

  3. 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:

  1. Implementare lifecycle policy per eliminare immagini vecchie

  2. Ottimizzare le dimensioni delle immagini Docker

  3. Evitare tag duplicati della stessa immagine

  4. 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:

  1. Abilitare la replica cross-region automatica

  2. Fare pull periodico e salvare su S3

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

Risorse Utili