f in x
> cd .. / HUB_EDITORIALE > Visualizza in Inglese
Sviluppo di siti web

AWS S3 per Sviluppatori: Object Storage, Bucket Policy, Versioning e Hosting Statico

[2026-06-17] Author: Ing. Calogero Bono

Hai mai perso un file fondamentale per un errore umano? O hai scoperto che il tuo sito statico era offline perché il bucket era pubblico per sbaglio? Noi di Meteora Web ci siamo passati. AWS S3 è lo storage più diffuso del pianeta, ma senza una configurazione solida diventa una bomba a orologeria. In questa guida vediamo come usarlo bene: object storage, bucket policy, versioning e hosting statico. Niente teoria inutile, solo pratica che funziona.

Object Storage: Perché Non è un Disco di Rete

Un file system tradizionale (come NTFS o ext4) organizza i dati in una gerarchia di cartelle. S3 invece è un object storage piatto: ogni file (oggetto) ha una chiave univoca, e i "percorsi" sono solo prefissi nella chiave. Questo permette scalabilità orizzontale senza limiti pratici. Ma attenzione: non puoi montare S3 come un disco con mount diretto (se non con strumenti come s3fs, ma sconsigliato per produzione).

Errore comune: trattare S3 come un NAS. Esempio: un cliente carica immagini da 10 MB senza compressione. Il costo di storage e trasferimento lievita, e le performance peggiorano. Noi consigliamo sempre di ottimizzare a monte: riduci il peso degli oggetti prima di caricarli. Un'immagine da 2 MB compressa a 200 KB ti fa risparmiare l'80% sui costi di trasferimento.

Sponsored Protocol

Azioni Immediate

  • Usa nomi di chiave con prefissi (es. images/2026/prodotto.jpg) per simulare una struttura logica.
  • Carica oggetti con aws s3 cp o SDK, non via browser se vuoi automazione.
  • Imposta Storage Class in base all'accesso: STANDARD per dati frequenti, GLACIER per backup.
# Carica un file con classe standard
aws s3 cp ./report.pdf s3://tuo-bucket/report/2026/report.pdf --storage-class STANDARD

Bucket Policy: Il Controllo degli Accessi

Una bucket policy è un documento JSON che definisce chi può fare cosa sul tuo bucket. È il primo baluardo di sicurezza. Errore fatale: lasciare un bucket pubblico in lettura/scrittura. Lo vediamo spesso in progetti ereditati: dati sensibili esposti, costi fuori controllo. Noi partiamo sempre dal principio del minimo privilegio: nega tutto ciò che non è esplicitamente consentito.

Esempio: Bucket per hosting statico (solo lettura pubblica su specifici oggetti)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::tuo-bucket/*"
    }
  ]
}

Questo permette lettura pubblica a tutti. Attenzione: se non vuoi che tutto il bucket sia pubblico, usa Condition per limitare per IP, referer, o percorso.

Sponsored Protocol

Policy per bloccare l'accesso pubblico (default consigliato)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::tuo-bucket",
        "arn:aws:s3:::tuo-bucket/*"
      ],
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": "192.168.1.0/24"
        }
      }
    }
  ]
}

Questa policy nega ogni operazione a chiunque non provenga dalla tua rete interna. La sicurezza non è un optional: è un costo evitato.

Azioni Immediate

  • Usa AWS Policy Generator per scrivere policy corrette.
  • Attiva Block Public Access nelle impostazioni del bucket a meno che tu non abbia un bisogno esplicito.
  • Verifica con aws s3api get-bucket-policy che la policy sia applicata.
# Verifica la policy
aws s3api get-bucket-policy --bucket tuo-bucket

Versioning: Il Tuo Salvavita

Immagina di sovrascrivere per errore un file critico. Senza versioning, è perso. Con il versioning, ogni modifica crea una nuova versione e puoi tornare indietro. Il versioning non è un costo: è un’assicurazione. Noi lo attiviamo su ogni bucket di produzione, specialmente per dati gestiti tramite ERP o cron job.

Sponsored Protocol

Come Abilitarlo

aws s3api put-bucket-versioning --bucket tuo-bucket --versioning-configuration Status=Enabled

Una volta abilitato, non puoi disabilitarlo (solo sospenderlo). I costi aggiuntivi? Solo lo spazio occupato dalle versioni non eliminate. Se cancelli un oggetto, S3 crea un delete marker — non viene rimosso fisicamente finché elimini anche le versioni.

Recupero di una Vecchia Versione

# Elenca tutte le versioni di un oggetto
aws s3api list-object-versions --bucket tuo-bucket --prefix report.pdf

# Recupera la versione specifica
aws s3 cp s3://tuo-bucket/report.pdf?versionId=xyz123 ./restored_report.pdf

Lifecycle per Pulire le Versioni

Per evitare costi di storage infiniti, configura un lifecycle rule che elimini le versioni dopo X giorni.

{
  "Rules": [
    {
      "Id": "Elimina versioni vecchie",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 30
      }
    }
  ]
}

Hosting Statico: Un Sito Veloce e Senza Server

S3 può servire file HTML, CSS, JS direttamente come sito web. È la soluzione perfetta per landing page, documentazione, portfolio. Niente server da gestire, niente PHP, solo storage. I costi sono bassissimi: per un sito con poche visite paghi centesimi al mese.

Sponsored Protocol

Configurazione

  1. Attiva l'hosting statico nelle proprietà del bucket: scegli index.html come documento di default e error.html per errori 404.
  2. Rendi il bucket pubblico in lettura (vedi policy sopra) oppure usa CloudFront per distribuire con HTTPS e caching.
  3. Carica i file: aws s3 sync ./dist/ s3://tuo-bucket
# Sincronizza la cartella locale con il bucket
aws s3 sync ./dist/ s3://tuo-bucket --delete --cache-control "max-age=3600"

Consiglio pratico: usa --delete per rimuovere dal bucket i file non più presenti nella cartella locale. E imposta cache-control per migliorare le performance.

CloudFront + S3: Il Combo Vincente

L'hosting diretto S3 ha un limite: non supporta HTTPS nativamente (usa solo HTTP). Per avere HTTPS e velocità globale, metti CloudFront davanti. Noi lo facciamo sempre. Configuri una distribuzione CloudFront con origine S3, abiliti SSL e ottieni un CDN mondiale. I costi? Minimi per volumi bassi.

Sponsored Protocol

# Esempio di comando per creare una distribuzione CloudFront con CLI
aws cloudfront create-distribution --origin-domain-name tuo-bucket.s3.amazonaws.com --default-root-object index.html

In Sintesi — Cosa Fare Adesso

  1. Attiva il versioning su ogni bucket che contiene dati importanti. Costa poco e salva il lavoro.
  2. Applica una bucket policy che segua il principio del minimo privilegio. Blocca l'accesso pubblico se non serve.
  3. Usa S3 per hosting statico solo se affiancato da CloudFront per HTTPS e caching.
  4. Monitora i costi con AWS Cost Explorer e imposta lifecycle per oggetti non correnti.
  5. Non montare S3 come filesystem in produzione: usa SDK per operazioni atomiche.

Noi di Meteora Web usiamo S3 quotidianamente per clienti che vanno dalla piccola impresa al grande e-commerce. Se hai dubbi sulla configurazione del tuo bucket, torna alla nostra guida pillar su AWS o contattaci. La tecnologia cloud è potente, ma va domata con metodo.

Risorsa esterna: Documentazione ufficiale AWS S3

Ing. Calogero Bono

> AUTHOR_EXTRACTED

Ing. Calogero Bono

Ingegnere Informatico, co-fondatore di Meteora Web. Esperto in architetture software, sicurezza informatica e sviluppo sistemi scalabili.
[ Read Full Dossier ]

> METEORA_WEB // WEB AGENCY

Costruiamo la presenza digitale che la tua azienda merita.

Siti web, social, pubblicità online, e-commerce e hosting performante: ingegnerizzati con metodo da ingegneri informatici a Sciacca, per tutta Italia.

> MW_JOURNAL

> READ_ALL()