Amazon S3 (Simple Storage Service) il servizio di storage
da Massimo Della Rovere · pubblicato il 17 maggio, 2014 · modificato il 5 giugno, 2017

Amazon Simple Storage Service (S3) è un servizio di storage online che ci permette di memorizzazione grandi quantità di dati all’interno del cloud. Amazon S3 può essere utilizzato e gestito in due modi, via web tramite la Management Console oppure attraverso le Amazon S3 API. In ogni caso esistono anche software di altri produttori che permettono l’integrazione del servizio tramite client FTP o mount di filesystem.

Caratteristiche

Il servizio S3 come tutti gli altri AWS è un “pay only for what you use” quindi non ha limiti di utilizzo sulla quantità di dati, è automaticamente scalabile nell’infrastruttura cloud, non dovete pensare minimamente al numero delle richieste concorrenti ed ha un’affidabilità del dato del 99,999999999% per quanto riguarda la durevolezza e una percentuale del 99,99% per quanto riguarda la disponibilità online. I prezzi del servizio che riguardano Amazon S3 sono diversi in base alla “regione geografica” e cambiano con molta frequenza, la cosa positiva è che si abbassano continuamente. Per controllare il listino prezzi attuale usate sempre la fonte ufficiale di Amazon Pricing.

Amazon S3

Prima di vedere come utilizzare il servizio è consigliabile conoscere tutti i termini che vengono utilizzati in ambiente S3 per poi essere sicuri di configurare i vari aspetti del servizio in maniera corretta, dato che questo articolo rappresenta solo un’introduzione, per il momento affrontiamo solo i termini più importanti, gli altri li vediamo con degli articoli successivi in cui tratteremo argomenti del servizio più specifici.

Regions

Come abbiamo più volete accennato negli articoli precedenti gli Amazon Web Services sono basati su “regioni geografiche” e ogni regione ha delle “zone di disponibilità” che possiamo considerare come dei datacenter distaccati e ridondanti tra di loro. Anche per quanto riguarda il servizio di Amazon S3 dobbiamo sempre decidere la zona geografica in cui vogliamo memorizzare i nostri dati, a seguito di questa scelta ci penserà Amazon a rendere il dato ridondante in tutte le zone di disponibilità collegate.

La scelta può essere effettuata per ottimizzare la latenza, ridurre i costi o per soddisfare i diversi requisiti normativi. Ad esempio nella Regione Europea i dati personali sono tutelati dalle normative “EC Directive 95/46/EC”, “Safe Harbour EU Compliant”, etc, etc. Gli oggetti memorizzati in una regione non vengono per nessun motivo duplicati da parte di Amazon in altre regioni, solo il responsabile può eseguire questa operazione.

Bucket

Un bucket è un contenitore di oggetti memorizzato in S3 e ogni oggetto memorizzato in Amazon S3 è contenuto sempre all’interno di un bucket. Il nome deve essere univoco su scala mondiale e una volta assegnato non può essere più modificato. Questo nome compone la stringa URL che permette di raggiungere via web i diversi oggetti.

Caratteristiche del nome del bucket

  • Il nome può contenere lettere maiuscole, minuscole e numeri.
  • i simboli utilizzabili sono il punto ‘.’ underscore ‘_’ e il meno ‘-’
  • Il nome deve iniziare con lettere o numeri.
  • deve essere compreso tra i 3 e i 255 caratteri.
  • non può avere il formato di un indirizzo ip.

Se si vuole rendere il nome conforme alle specifiche DNS

  • Il nome può contenere lettere maiuscole, minuscole e numeri.
  • i simboli utilizzabili sono il punto ‘.’ underscore ‘_’ e il meno ‘-’
  • Il nome deve iniziare con lettere o numeri.
  • deve essere compreso tra i 3 e i 255 caratteri.
  • non può avere il formato di un indirizzo ip.

Operazioni sui Buckets

Una volta che abbiamo creato un bucket S3 rispettando la scelta geografica e le regole del nome vediamo le operazioni e le configurazioni che possiamo eseguire:

Cancellazione: un bucket per essere cancellato deve essere vuoto, se ci sono degli oggetti nel bucket bisogna prima cancellare gli oggetti e poi eliminare il bucket. Quando un bucket viene cancellato, prima che lo stesso nome possa essere riutilizzato bisogna attendere un certo intervallo di tempo che può arrivare fino ad un’ora. Se il bucket viene ricreato nella stessa regione e dallo stesso proprietario non è necessario aspettare.

Logging: questa opzione permette di tenere traccia degli accessi eseguiti sul bucket tramite dei file di log. Questi log contengono tutti i dettagli che riguardano le richieste effettuate come ad esempio: il tipo di richiesta, le risorse utilizzate e la data e l’ora della richiesta. L’attivazione del servizio non ha costi aggiuntivi, ma i file che vengono memorizzati concorrono alla fatturazione dello spazio di archiviazione utilizzato.

Amazon S3

RRS NotificationReduced Redundancy Storage (RRS) è un sistema di memorizzazione più economico per la memorizzazione di oggetti con informazioni non critiche. È possibile abilitare degli eventi di notifica tramite il servizio Amazon SNS nel momento in cui Amazon S3 rileva che un oggetto RRS viene perso. Possiamo utilizzare questa tecnica ad esempio per la creazione di miniature da immagini più grandi, infatti se dovessimo perdere il dato le possiamo sempre ricreare.

Ciclo di vita: sul bucket possiamo definire un parametro chiamato lifecycle per controllare il ciclo di vita degli oggetti. Durante l’impostazione del parametro di lifecycle è possibile specificare se l’oggetto una volta scaduto deve essere cancellato o spostato nel servizio di Amazon Glacier. Questa funzione è utile per i file di log che possono essere cancellati e/o archiviati automaticamente.

Tags: su ogni bucket possiamo specificare dei tag con cui possiamo analizzare i costi del servizio S3 e poterli dividere per centro di costo di competenza. Ad esempio se gestiamo con il nostro account anche servizi per terzi potremmo ottenere i costi del servizio divisi per ogni cliente o per ogni applicazione.

Website Hosting: un bucket può essere utilizzato anche come contenitore di file HTML statici che verranno serviti tramite HTTP come un qualsiasi server web. Inoltre è possibile creare una mappatura DNS in maniera tale da mascherare il bucket con un proprio dominio e simulare un server completo. Questa funzione è molto utile anche con piccoli siti di backup da mandare online durante le operazioni di manutenzione.

Key

Ogni oggetto memorizzato all’interno dei bucket possiede una key. Questa può essere considerata come il nome di un file e identifica l’oggetto nel bucket. La combinazione tra la key e il version ID (se attivo) identificano in maniera univoca ogni oggetto.

Folder

Le cartelle servono per raggruppare gli oggetti all’interno di un bucket. Quando viene creata una cartella viene creato un oggetto a zero-byte con una slash (/) alla fine del nome. Amazon S3 interpreta la slash come un delimitatore durante le list. Se venisse creata una nuova cartella chiamata “logs”, S3 andrebbe a creare un oggetto “logs/”. Nel momento in cui andassimo a caricare un oggetto con il nome “history.txt” all’interno di “logs”, il nome completo di questo oggetto diverrà “logs/history.txt”.

Object

Gli oggetti sono entità di base memorizzate in S3. L’oggetto è composto da dati e metadati. I dati sono binari mentre i metadati sono nomi e valori che descrivono l’oggetto. Un esempio di metadati può essere la data dell’ultima modifica dell’oggetto oppure un metadato come il Content-Type da includere in un richiesta HTTP. Un oggetto viene identificato in maniera univoca all’interno del Bucket con una Key (name) e un version ID. In quanto ogni oggetto protebbe avere diverse versioni memorizzate.

Amazon S3

Data Encryption: fornisce maggiore sicurezza agli oggetti memorizzati nei bucket dando la possibilità di attivare l’opzione di cifratura. La crittografia avviene prima che questi vengano salvati sui dischi e li decifra quando l’oggetto viene scaricato. Può essere un’alternativa alla cifratura client che possiamo gestire prima del caricamento. Gli oggetti vengono cifrati con uno degli algoritmi a blocchi tra i più robusti attualmente presenti sul mercato, 256-bit Advanced Encryption Standard (AES-256).

Versioning: mantiene più versioni di un oggetto nello stesso bucket. È possibile avere due oggetti con lo stesso nome ma con differente version ID. È possibile utilizzare il versioning per prevenire la cancellazione o la sovrascrittura accidentale degli oggetti e prevenire errori fatti dal software. Di base il versioning in un bucket è disabilitato, una volta attivato non è più possibile disattivarlo, ma si può solo sospenderlo.

Access control

Amazon utilizza due metodi per poter controllare gli accessi ai bucket e agli oggetti, uno tramite Access Control List (ACL) e l’altro tramite le policy di bucket. Le ACL definiscono i permessi associati ad ogni singolo bucket o oggetto. Possiamo definire le classiche funzioni di READ, WRITE, READ_ACP e WRITE_ACP. Le policy invece sono un insieme di istruzioni che definiscono le autorizzazioni di un utente per accedere alle risorse di Amazon S3, come ad esempio CreateBucker, DeleteBucker, ect.

Per quanto riguarda le ACL possono essere inserite tramite le REST API o tramite la management console usando un’interfaccia sicuramente più familiare. Le policy invece vengono inserite tramite un file JSON, il quale può essere creato utilizzando un tools messo a disposizione sul sito ufficiale di Amazon e chiamato AWS Policy.

Data Consistency Model

Il servizio realizza l’affidabilità dei dati replicando gli oggetti su più server all’interno del data center, e come già detto solo nella zona geografica interessata. Solo alla fine di questo processo possiamo considerare i dati memorizzati in modo sicuro e considerare il dato integro e utilizzabile dalle nostre procedure applicative. Amazon S3 attualmente non supporta l’object locking, quindi se viene caricato simultaneamente un oggetto nella stessa key, vince l’oggetto con il timestamp più recente.

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services.  Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

condividi