Nell'ambito della consulenza cloud che offriamo ai nostri clienti in DoiT International, mi capita di imbattermi in casi limite in cui i tentativi di risparmio del cliente finiscono per far lievitare i costi di storage S3. In questo articolo spiego come evitarlo.

Quando si archiviano file (oggetti) in un bucket S3, sono disponibili le seguenti storage class: Standard (predefinita), Infrequent Access (nota anche come Standard-IA), Intelligent-Tiering, Glacier e S3 Outposts.
La storage class si imposta al momento dell'upload o in qualsiasi momento successivo. Una pratica diffusa consiste nel creare una lifecycle rule nel bucket per definire le azioni che Amazon S3 deve eseguire durante il ciclo di vita di un oggetto (ad esempio passare la storage class del file da Standard a Infrequent Access dopo 30 giorni dalla sua creazione).
Lo storage Infrequent Access permette di archiviare i file a un costo inferiore rispetto alla classe Standard. Velocità di download, durabilità e latenza sono identiche a quelle della classe Standard, ma il costo per scaricare il file è più alto. Come suggerisce il nome, Infrequent Access è quindi indicata per i file a cui si accede di rado.

Lifecycle rule che sposta i file dalla storage class Standard a Intelligent tier. Il costo di transizione è di 2.000 $. A cinque mesi dalla transizione, il cliente inizia a pagare meno per lo storage.
Le insidie più comuni sui costi di S3
Due problemi ricorrenti possono far aumentare il costo di storage di un bucket:
- In molti non sanno che il passaggio da una storage class a un'altra ha un costo. AWS addebita 0,01 $ ogni 1.000 transizioni dalla storage class Standard alla classe Infrequent Access.
- Alcune storage class di S3 prevedono una dimensione minima per i file. Nel caso di Infrequent Access, la dimensione minima è 128 Kb.


Specifiche delle storage class di S3
Questo aspetto può creare situazioni in cui un cliente con centinaia di milioni di file di piccole dimensioni in un bucket S3 si trova a pagare una commissione di transizione una tantum molto elevata.
Quanti file contiene il mio bucket?
Ci sono due modi per verificare il numero di file e la dimensione del bucket:
- A livello di file — con S3 Inventory è possibile generare un report giornaliero con l'elenco dei file nel bucket, la loro dimensione e la storage class.
- A livello di bucket — tramite le metriche di Cloudwatch è possibile visualizzare il numero di file e la dimensione del bucket. Le stesse metriche sono disponibili anche dalla console S3, in Management —> Metrics.

Dimensione del bucket S3

Numero di file nel bucket S3
Quando conviene impostare una lifecycle rule?
Si parte calcolando la dimensione media (non ponderata) dei file, dividendo la dimensione del bucket S3 per il numero di file.
Ad esempio, il bucket che ho usato per gli screenshot di questo articolo ha una dimensione di 22,1 Tb e contiene 6,3 milioni di file, con una dimensione media per file di 3,42 Mb.
Il passaggio a Infrequent Access potrebbe tradursi in un'elevata spesa una tantum sui costi di storage.
Calcolare il costo di transizione del lifecycle e la convenienza
Se per questo bucket da 22,1 Tb modifichiamo la storage class tramite lifecycle rule passando a Infrequent Access, per la transizione di 6,3 milioni di file pagheremo una commissione una tantum di 63 $ (6.300.000 file divisi in blocchi da 1.000 e moltiplicati per 0,01 $), con un costo di storage risultante di 282,88 $ al mese.
Dai calcoli sopra riportati emerge che la transizione tra classi porta a una riduzione dei costi già dal primo mese.
In conclusione
AWS S3 offre numerose storage class che, usate nel modo giusto, garantiscono efficienza e risparmio.