Introduzione ad Amazon S3: come funziona l’archiviazione degli oggetti sul cloud
Amazon Simple Storage Service (S3) è un popolare servizio di storage sul cloud che fa parte di Amazon Web Services (AWS). Il servizio di storage sul cloud Amazon S3 offre elevata affidabilità, flessibilità, scalabilità e accessibilità. Il numero di oggetti e la quantità di dati archiviati su Amazon S3 sono illimitati. Il servizio di storage sul cloud S3 è interessante per le aziende perché si paga solo per ciò che si utilizza.
Tuttavia, la terminologia e la metodologia possono causare malintesi e difficoltà ai nuovi utenti di Amazon S3. Dove vengono archiviati i dati su S3? Come funziona lo storage sul cloud Amazon S3? Questo articolo del blog illustra i concetti principali e il principio di funzionamento dello storage sul cloud Amazon S3.
Informazioni sul servizio di storage sul cloud Amazon S3
Amazon S3 è stato il primo servizio cloud di AWS, lanciato nel 2006. Da allora, la popolarità di questo servizio di storage sul cloud è cresciuta costantemente. Oggi Amazon offre un’ampia gamma di altri servizi cloud, ma il servizio di storage sul cloud Amazon S3 rimane quello più utilizzato. Oltre al servizio di storage sul cloud Amazon S3, AWS offre i volumi Amazon EBS per EC2 e Amazon Drive. Tuttavia, i tre servizi hanno usi e finalità diversi.
EBS (Elastic Block Storage) I volumi per le istanze di EC2 (Elastic Compute Cloud) sono dischi virtuali per VM ospitate nel cloud di Amazon. Come si può intuire dal nome EBS, si tratta di uno storage sul cloud che è l’equivalente dei dischi rigidi nei computer fisici. È possibile installare un sistema operativo su un volume EBS collegato a un’istanza di EC2 .
Amazon Drive (precedentemente noto come Amazon Cloud Drive) è l’equivalente di Google Drive e Microsoft OneDrive. Amazon Drive offre una gamma di funzioni più limitata rispetto ad Amazon S3. Amazon Drive è posizionato come servizio di storage sul cloud per il backup di foto e altri dati degli utenti.
Amazon S3 Lo storage sul cloud è un servizio di storage basato su oggetti. Non è possibile installare un sistema operativo quando si utilizza l’archiviazione Amazon S3, poiché non è possibile accedere ai dati a livello di blocco come obbligatorio da un sistema operativo. Se è necessario montare l’archiviazione Amazon S3 come unità di rete sul proprio sistema operativo, utilizzare un file system nello spazio utente. Leggere il post del blog su Configurazione dello storage sul cloud S3 per diversi sistemi operativi. Google Cloud è l’analogo dell’archiviazione sul cloud Amazon S3.
Concetti principali di Amazon S3
Se si intende utilizzare Amazon S3 per la prima volta, alcuni concetti potrebbero risultare insoliti e poco familiari. La metodologia di archiviazione dei dati nel cloud S3 è diversa da quella su dischi rigidi tradizionali, unità a stato solido o array di dischi. Di seguito è riportata una panoramica dei principali concetti e delle tecnologie utilizzate per archiviare e gestire i dati nell’archiviazione sul cloud di Amazon S3.
In che modo S3 archivia i file?
Come spiegato in precedenza, i dati in Amazon S3 vengono archiviati come oggetti. Questo approccio garantisce un’archiviazione altamente scalabile sul cloud. Gli oggetti possono avere diverse ubicazioni su unità disco fisiche distribuite all’interno di un data center. Nei data center di Amazon vengono utilizzati hardware, software e file system distribuiti specifici per garantire un’elevata scalabilità. La ridondanza e il controllo delle versioni sono funzioni implementate utilizzando l’approccio di storage a blocchi. Quando un file viene archiviato in Amazon S3 come oggetto, per impostazione predefinita viene archiviato contemporaneamente in più posizioni (ad esempio su dischi, in data center o zone di disponibilità). Il servizio Amazon S3 verifica regolarmente la coerenza dei dati controllando le somme di controllo (hash). Se viene rilevato un danneggiamento dei dati, l’oggetto viene ripristinato utilizzando i dati ridondanti. Gli oggetti sono archiviati nei bucket di Amazon S3. Per impostazione predefinita, è possibile accedere agli oggetti presenti nell’archivio Amazon S3 e gestirli tramite l’interfaccia web.
Che cos’è l’archiviazione a oggetti S3?
Object storage is a type of storage where data is stored as objects rather than blocks. This concept is useful for data backup, archiving, and scalability in high-load environments.
Objects are the fundamental entities of data storage in Amazon S3 buckets. An object is composed of three main components: the object content (the data stored in the object, such as a file or directory), the unique object identifier (ID), and metadata. I metadati sono memorizzati come coppie chiave-valore e contengono informazioni quali nome, dimensione, data, attributi di sicurezza, tipo di contenuto e URL.
Ogni oggetto dispone di un elenco di controllo degli accessi (ACL) per configurare chi è autorizzato ad accedere all’oggetto. L’archiviazione a oggetti di Amazon S3 consente di evitare colli di bottiglia di rete nelle ore di punta, quando il traffico verso gli oggetti memorizzati sul cloud storage S3 aumenta in modo significativo. Amazon fornisce una larghezza di banda di rete flessibile, ma addebita costi per l’accesso di rete agli oggetti archiviati. L’archiviazione a oggetti è indicata quando un numero elevato di client deve accedere ai dati (elevata frequenza di lettura). La ricerca tramite i metadati è più veloce nel modello di archiviazione a oggetti.
Leggi anche l’articolo su Crittografia di Amazon S3 che può aiutarti a proteggere i dati archiviati nel storage sul cloud di Amazon S3 e a migliorare la sicurezza.
I bucket
A bucket sono contenitori logici fondamentali in cui vengono archiviati i dati nel sistema di archiviazione Amazon S3. È possibile archiviare una quantità infinita di dati e un numero illimitato di oggetti in un bucket. Ogni oggetto S3 è archiviato in un bucket. Esiste un limite di 5 TB per la dimensione di un singolo oggetto archiviato in un bucket. I bucket vengono utilizzati per organizzare lo spazio dei nomi al livello più alto e per il controllo degli accessi.
Chiavi
Un oggetto dispone di una unique key dopo essere stato caricato in un bucket. Questa chiave è una stringa che riproduce una gerarchia di directory. Conoscere la chiave consente di accedere all’oggetto nel bucket. Un bucket, una chiave e un ID versione identificano un oggetto in modo univoco. Ad esempio, se il nome di un bucket è blog-bucket01 , l’ubicazione dei data center che archiviano i dati è s3-eu-west-1 e il nome dell’oggetto è test1.txt (un file di testo), l’URL del file richiesto archiviato come oggetto nel bucket è: https://blog-bucket01.s3-eu-west-1.amazonaws.com/test1.txt
Se si desidera condividere oggetti con altri utenti, è necessario configurare le autorizzazioni modificando gli attributi degli oggetti. Allo stesso modo, è possibile creare una cartella TextFiles e memorizzare il file di testo in quella cartella:
https://blog-bucket01.s3-eu-west-1.amazonaws.com/TextFiles/test1.txt
Esistono due tipi di URL che possono essere utilizzati:
- bucketname.s3.amazonaws.com/objectname
- s3.amazon.aws.com/bucketname/objectname
Regioni AWS
Amazon dispone di data center in diverse regioni in tutto il mondo, tra cui Stati Uniti, Irlanda, Sudafrica, India, Giappone, Cina, Corea, Canada, Germania, Italia e Gran Bretagna. È possibile selezionare la regione desiderata al momento della creazione di un bucket. Si consiglia di selezionare la regione più vicina a voi o ai vostri clienti per garantire una minore latenza nella connessione di rete o ridurre al minimo i costi (poiché il prezzo per l’archiviazione dei dati varia a seconda della regione). I dati archiviati in una determinata regione AWS non lasciano mai i data center di quella regione fino a quando non vengono migrati manualmente. Le regioni AWS sono isolate l’una dall’altra per garantire tolleranza ai guasti e stabilità.
Ogni regione contiene zone di disponibilità, ovvero ubicazioni isolate all’interno di una regione AWS. Per ogni regione sono disponibili almeno tre zone di disponibilità, al fine di prevenire guasti causati da disastri quali incendi, tifoni, uragani, inondazioni e così via.
Il modello di coerenza dei dati
Per gli oggetti archiviati nel servizio di storage Amazon S3 viene eseguito un controllo di coerenza di tipo “read-after-write”. Amazon S3 replica i dati tra i server e i data center all’interno di una regione selezionata per garantire un’elevata disponibilità. Dopo una richiesta PUT andata a buon fine, i dati modificati devono essere replicati tra i server. Questo processo può richiedere un po’ di tempo. In questo caso, un utente può ottenere i dati precedenti o quelli aggiornati, ma non quelli danneggiati. Ciò vale anche per gli oggetti e i bucket eliminati. Il blocco degli oggetti non viene eseguito quando vengono inviati nuovi oggetti ai bucket S3. Se vengono eseguite più richieste PUT contemporaneamente, prevale l’ultima richiesta PUT. È possibile creare la propria applicazione con un meccanismo di blocco che funzioni con gli oggetti archiviati nel servizio di storage Amazon S3.
Funzionalità di Amazon S3
Il concetto di archiviazione basata su oggetti consente ad Amazon di fornire funzionalità utili e un’elevata flessibilità per l’archiviazione e la gestione dei dati nel servizio Amazon S3. Esaminiamo queste funzioni.
Controllo delle versioni
Il controllo delle versioni degli oggetti consente di archiviare più versioni di un oggetto in un unico bucket. Questa funzione protegge gli oggetti archiviati nel servizio di storage Amazon S3 da modifiche, sovrascritture o cancellazioni involontarie. Dopo aver modificato o cancellato un oggetto, è possibile ripristinare una delle versioni precedenti di tale oggetto. Il controllo delle versioni è implementato grazie all’utilizzo dell’approccio di storage a oggetti. È possibile utilizzare il controllo delle versioni a fini di archiviazione. Il controllo delle versioni è disabilitato per impostazione predefinita.
A ogni oggetto S3 viene assegnato un ID di versione anche se il controllo delle versioni non è abilitato (in questo caso il valore dell’ID di versione è impostato su null). Se il controllo delle versioni è abilitato, dopo aver salvato le modifiche viene assegnato un nuovo valore di ID di versione alla nuova versione dell’oggetto. Il controllo delle versioni può essere abilitato a livello di bucket. Il valore dell’ID di versione della prima versione dell’oggetto rimane invariato. Quando si elimina un oggetto da un bucket S3 (con il controllo delle versioni abilitato), il marcatore di eliminazione viene applicato all’ultima versione dell’oggetto.
Classi di archiviazione
Le classi di archiviazione di Amazon S3 definiscono lo scopo dello spazio di archiviazione selezionato per la conservazione dei dati. Una classe di archiviazione può essere impostata a livello di oggetto. Tuttavia, è possibile impostare la classe di archiviazione predefinita per gli oggetti che verranno creati a livello di bucket.
S3 Standard è la classe di archiviazione predefinita. Questa classe è destinata all’archiviazione di dati ad alto utilizzo ed è indicata per i dati utilizzati frequentemente. Utilizzare la classe di archiviazione Standard per ospitare siti web, distribuire contenuti, sviluppare applicazioni sul cloud e così via. Costi di archiviazione elevati, costi di ripristino ridotti e accesso rapido ai dati sono le funzioni di questa classe di archiviazione.
S3 Standard-IA (accesso poco frequente) può essere utilizzata per archiviare dati a cui si accede meno frequentemente rispetto alla classe S3 Standard. S3 Standard-IA è ottimizzata per un periodo di archiviazione più lungo. Il recupero dei dati archiviati nella classe di storage S3 Standard-IA comporta un costo. Inoltre, sia in S3 Standard che in S3 Standard-IA è necessario pagare per le richieste sui dati (PUT, COPY, POST, LIST, GET, SELECT).
S3 One Zone-IA è progettata per i dati a cui si accede raramente. I dati vengono archiviati in una sola zona di disponibilità (mentre per S3 Standard vengono archiviati in tre zone di disponibilità) e, di conseguenza, viene garantito un livello inferiore di ridondanza e resilienza. Il livello di disponibilità dichiarato è del 99,5%, inferiore a quello delle altre due classi di storage. S3 One Zone-IA presenta costi di storage inferiori, costi di ripristino più elevati e prevede il pagamento del recupero dei dati su base GB. È possibile considerare questa classe di storage come una soluzione conveniente per archiviare copie di backup o copie dei dati create tramite la replica interregionale di Amazon S3.
S3 Glacier non offre accesso immediato ai dati archiviati, a differenza delle altre classi di storage. S3 Glacier può essere utilizzato per archiviare dati a lungo termine a basso costo. Non vi è alcuna garanzia di funzionamento ininterrotto. Per recuperare i dati è necessario attendere da pochi minuti a qualche ora. È possibile trasferire i dati meno recenti da una classe di storage superiore (ad esempio, da S3 Standard) a S3 Glacier utilizzando i criteri del ciclo di vita di S3 e ridurre così i costi di storage.
S3 Glacier Deep Archive è simile a S3 Glacier, ma il tempo necessario per recuperare i dati varia da circa 12 a 48 ore. Il prezzo è inferiore a quello di S3 Glacier. La classe di archiviazione S3 Glacier Deep Archive può essere utilizzata per archiviare backup e dati di archivio di aziende soggette a requisiti normativi in materia di archiviazione dei dati (settore finanziario, sanitario). Si tratta di una valida alternativa alle cartucce a nastro.
S3 Intelligent-Tiering è una classe di archiviazione speciale che utilizza altre classi di archiviazione. S3 Intelligent-Tiering ha lo scopo di selezionare automaticamente la classe di archiviazione più adatta per i dati quando non si conosce la frequenza con cui sarà necessario accedervi. Amazon S3 è in grado di effettuare il monitoraggio dei modelli di accesso ai dati quando si utilizza S3 Intelligent-Tiering, per poi archiviare gli oggetti in una delle due classi di archiviazione selezionate (una per i dati a cui si accede frequentemente e l’altra per quelli a cui si accede raramente). Questo approccio garantisce un rapporto costo-efficacia ottimale senza compromettere le prestazioni.
Ad esempio, se si accede a un oggetto archiviato in una classe di archiviazione per dati a cui si accede raramente, tale oggetto viene spostato automaticamente in una classe di archiviazione per dati a cui si accede frequentemente. Al contrario, se un oggetto non viene consultato per un lungo periodo, viene spostato nella classe di storage per i dati utilizzati raramente. Gli oggetti possono trovarsi nello stesso bucket e la classe di storage viene modificata a livello di oggetto S3.
Elenchi di controllo degli accessi
Un elenco di controllo degli accessi (ACL) è una funzione utilizzata per gestire e controllare l’accesso agli oggetti e ai bucket. Gli elenchi di controllo degli accessi sono criteri basati sulle risorse associati a ciascun bucket e oggetto per definire gli utenti e i gruppi che dispongono delle autorizzazioni per accedere al bucket e all’oggetto. Per impostazione predefinita, il proprietario della risorsa dispone di accesso completo a un bucket o a un oggetto dopo aver creato la risorsa. Le autorizzazioni di accesso al bucket definiscono chi può accedere agli oggetti presenti nel bucket. Le autorizzazioni di accesso agli oggetti definiscono gli utenti autorizzati ad accedere agli oggetti e il tipo di accesso. È possibile, ad esempio, impostare autorizzazioni di sola lettura per un utente e autorizzazioni di lettura-scrittura per un altro.
L’elenco completo degli utenti a cui possono essere assegnate autorizzazioni (un utente a cui sono state assegnate autorizzazioni è denominato “beneficiario”):
Owner – un utente che crea un bucket/oggetto.
Authenticated Users – qualsiasi utente in possesso di un account AWS.
All Users – qualsiasi utente, inclusi gli utenti anonimi (utenti che non dispongono di un account AWS).
User by Email/Id – un utente specifico che dispone di un account AWS. Per concedere l’accesso a questo utente è necessario specificarne l’e-mail o l’ID AWS.
Tipi di autorizzazioni disponibili:
Full Control – questo tipo di autorizzazione fornisce le autorizzazioni di Lettura, Scrittura, Lettura (ACP) e Scrittura ACP.
Read – applica il contenuto del bucket quando applicato a livello di bucket. Consente di leggere i dati e i metadati dell’oggetto quando applicato a livello di oggetto.
Write – può essere applicato solo a livello di bucket e consente di creare, eliminare e sovrascrivere qualsiasi oggetto nel bucket.
Read Permissions (READ ACP) – un utente può leggere le autorizzazioni per l’oggetto o il bucket specificato.
Write Permissions (WRITE ACP) – un utente può sovrascrivere le autorizzazioni per l’oggetto o il bucket specificato. Abilitare questo tipo di autorizzazione per un utente equivale a impostare autorizzazioni di “Controllo completo”, poiché l’utente può impostare qualsiasi autorizzazione per il proprio account. Questa autorizzazione è disponibile per il proprietario del bucket per impostazione predefinita.
Politiche di bucket
Le politiche di bucket sono politiche di gestione delle identità e degli accessi AWS basate sulle risorse, utilizzate per creare regole condizionali per la concessione di autorizzazioni di accesso agli account e agli utenti AWS quando accedono ai bucket e agli oggetti nei bucket. È possibile utilizzare le politiche di bucket per definire regole di sicurezza per più di un oggetto in un bucket.
La politica di bucket è definita come un file JSON. Il testo di configurazione della politica di bucket deve soddisfare i requisiti di formato JSON per essere valido. La politica di bucket può essere allegata solo a livello di bucket e viene ereditata da tutti gli oggetti presenti nel bucket. È possibile concedere l’accesso agli utenti che si connettono da indirizzi IP specificati, agli utenti di account AWS specificati e così via.
Di seguito è riportato un esempio di criterio che concede l’accesso completo a tutti gli utenti di un account e l’accesso in sola lettura a ogni utente di un altro account. {
"Statement": [
{
"Effect": "Allow",
"Principal": {
"SGWS": "95381782731015222837"
},
"Action": "s3:*",
"Resource": [
"urn:sgws:s3:::blog-bucket01",
"urn:sgws:s3:::blog-bucket01/*"
]
},
{
"Effect": "Allow",
"Principal": {
"SGWS": "30284200178239526177"
},
"Action": "s3:GetObject",
"Resource": "urn:sgws:s3:::blog-bucket01/shared/*"
},
{
"Effect": "Allow",
"Principal": {
"SGWS": "30284200178239526177"
},
"Action": "s3:ListBucket",
"Resource": "urn:sgws:s3:::blog-bucket01",
"Condition": {
"StringLike": {
"s3:prefix": "shared/*"
}
}
}
]
}
Gli utenti possono accedere allo spazio di archiviazione Amazon S3 utilizzando le chiavi di accesso (Access Key ID e Secret Access Key) senza inserire nome utente e password. Questo approccio consente di migliorare la sicurezza e viene utilizzato per creare applicazioni che utilizzano le API per accedere allo storage sul cloud Amazon S3.
API per Amazon S3
Amazon fornisce interfacce di programmazione delle applicazioni (API) per accedere alle funzionalità di S3 e sviluppare applicazioni personalizzate che devono interagire con lo spazio di archiviazione Amazon S3. Amazon mette a disposizione interfacce REST e SOAP. L’interfaccia REST utilizza richieste HTTP standard per gestire i bucket e gli oggetti. L’API REST utilizza le intestazioni HTTP standard. L’interfaccia SOAP è un’altra opzione disponibile. L’uso di SOAP su HTTP è deprecato, ma è ancora possibile utilizzare SOAP su HTTPS.
Il modello di pagamento
Amazon S3 offre il modello “paga solo ciò che usi”. Non è obbligatorio alcun canone minimo: non è necessario pagare per una quantità predeterminata di spazio di storage e traffico di rete. Esistono diverse categorie di utilizzo per cui è necessario pagare:
Storage. Si paga per gli oggetti archiviati in Amazon S3. L’importo da pagare dipende dallo spazio di archiviazione utilizzato, dal tempo di permanenza degli oggetti nell’archivio Amazon S3 (nel corso del mese) e dalla classe di archiviazione utilizzata dagli oggetti archiviati.
Requests and data retrieval. È necessario pagare per le richieste effettuate per recuperare i dati archiviati nel storage sul cloud di Amazon S3.
Data transfer. È necessario pagare per tutta la larghezza di banda utilizzata (traffico in entrata e in uscita), ad eccezione dei dati in entrata provenienti da Internet; dei dati in uscita trasferiti alle istanze di Amazon EC2 situate nella stessa regione AWS del bucket S3 di origine; dei dati in uscita da un bucket S3 verso CloudFront.
Management and replication. È necessario pagare per l’utilizzo delle funzioni di gestione dello spazio di archiviazione, come l’analisi dei dati e l’assegnazione di tag agli oggetti. Amazon addebita costi per la replica tra regioni e per la replica all’interno della stessa regione.
Utilizza Calcolatore Amazon S3 per stimare i tuoi pagamenti.


