Home» Blog» Amazon AWS – Servizio S3 (Sviluppatori – introduzione)
Amazon S3

Negli articoli precedenti abbiamo visto come utilizzare il servizio S3 con interfaccia grafica tramite la console AWS e qualche accenno su come sviluppare dei propri programmi con l’utilizzo delle API messe a disposizione da Amazon. In questo articolo invece cercheremo di approfondire l’aspetto di questo argomento con concetti rivolti agli sviluppatori che vogliono implementare il servizio S3 nei propri programmi o scripts di sistema per una qualsiasi esigenza che comporta la memorizzazione di dati e il suo controllo.

Innanzitutto iniziamo dalle terminologie esatte che vengono usate da Amazon per identificare i vari componenti gestiti dal servizio S3 Simple Storage Service.

Buckets: Un bucket corrisponde a una ben precisa entità di memorizzazione associata ad un’account AWS, il limite massimo per ogni account è di 100 buckets e il nome di ogni bucket deve essere univoco rispetto a tutti i bucket esistenti sulla rete Amazon, quindi utilizzate dei nomi con dei prefissi come il vostro dominio od altro.  Una volta che avete creato il vostro bucket lo potete utilizzare per memorizzare un numero qualsiasi di oggetti, il numero teoricamente è illimitato, nel bucket S3 potrete memorizzare qualsiasi tipo di oggetto come un file di testo, una pagina HTML, immagini, video etc l’importante che l’oggetto non superi la dimensione di 5 GB.

Objects: Gli oggetti sono le entità fondamentali memorizzate in Amazon S3, ogni oggetto è composto dalla parte dati in forma binaria e dai metadati che sono delle informazioni create con una coppia di chiave=valore, ci sono dei metadati di default come la data di ultima modifica, informazioni HTTP come Content-Type ed altro, mentre altri valori possono essere personalizzati per essere usati dai vostri programmi come controllo di informazioni particolari. Ogni oggetto S3 memorizzato è identificato da un URL univoco cosi composto:

http://{nome-del-bucket}.s3.amazonaws.com/{nome-oggetto}

Il servizio S3 non è un file system gerarchico e quindi non applica il concetto di cartella, anche se i programmi di interfaccia esistenti come anche la console AWS attribuisco al carattere / un valore speciale e quindi simulano la gestione della cartella come siamo abituati, quindi possiamo creare un oggetto con un nome simile a questo:  cartella/cartella2/cartella3/nome-del-file.

Regions: Ad ogni bucket che creiamo con il nostro account possiamo associare una regione geografica di memorizzazione, questo ci permette di scegliere una zona con migliore latenza, rispettare magari dei prerequisiti normativi o anche per risparmiare sul costo di memorizzazione. Le regioni in questo momento disponibili sono le seguenti: ( vedi mappa ufficiale )

  • Standard US –  Usa Amazon S3 server negli Stati Uniti
  • US West (Oregon) Regione – Usa server Amazon S3 in Oregon
  • US West (California settentrionale) Regione – Usa S3 nel nord della California
  • UE (Irlanda) Regione –  Usa server Amazon S3 in Irlanda
  • Asia-Pacifico (Singapore) Regione – Usa server Amazon S3 a Singapore
  • Asia-Pacifico (Tokyo) Regione – Usa server Amazon S3 a Tokyo
  • Sud America (San Paolo) Regione – Usa server Amazon S3 a San Paolo

Amazon S3 Data Consistency Model: Quando memorizziamo un’oggetto in S3 dobbiamo sapere che l’oggetto non viene memorizzato solo in un posto fisico ma viene propagato su differenti zone di disponibilità che si trovano nella regione che abbiamo scelto, questo per rendere ridondante il dato e non perdere l’informazione se una zona di memorizzazione andasse in fase di “non disponibilità”. Per Amazon lo stato di memorizzazione definitiva avviene quando l’oggetto è stato replicato con successo in tutte le zone previste,  anche se questa operazione è molto veloce, nel frattempo potrebbero accadere le seguenti situazioni:

  • Scriviamo un oggetto e immediatamente dopo lo leggiamo, è possibile che ci venga ridato l’oggetto precedente o venga mandato un messaggio di “oggetto inesistente”.
  • Scriviamo un oggetto e richiediamo immediatamente una lista del bucket, può capitare che nella lista l’oggetto non è presente lo sarà quando sarà finita la propagazione del file.
  • Cancelliamo un’oggetto e qualche istande dopo qualcuno continuerà a leggerlo, infatti l’oggetto non esisterà più nel momento che anche la cancellazione sarà stata propagata.
  • Amazon non gestisce l’oggetto in LOCKED quindi se la procedura memorizza con lo stesso nome oggetto due richieste temporanee vince l’ultima data di modifica.

Reduced Redundancy Storage: Se vogliamo memorizzare dei dati non critici o delle informazioni che possono essere facilmente riprodotte da un’origine sicura ad esempio le miniature di un catalogo immagini, possiamo attivare questa opzione e avremo dei costi di memorizzazione più bassi, in quanto il dato non sarà propagato in varie zone di disponibilità. Per vedere la differenza dei costi  vai su https://aws.amazon.com/s3/#pricing.

Bucket Policies: Una delle cose più belle del servizio S3 sono le politiche di accesso, infatti è possibile configurare l’accesso al bucket specificando tantissime condizioni, per esempio un utente può accedere ad un solo bucket, lo può fare solo in una determinata fascia oraria e magari solo tramite dei programmi specifici che rilasciano uno user agent da controllare. Potremmo autorizzare questo utente a modificare e creare oggetti ma non a cancellarli, come potremmo autorizzare solo la gestione di oggetti con estensione HTML o DOC e cosi via. Per fare tutto questo bisognerà creare delle ACL (access control list) e aggiungere le regole tramite l’apposito linguaggio “access policy language” dove dovremmo definire l’operazione sul bucket, i parametri del richiedente e le condizioni della policy applicata. (vedi documentazione )

AWS Identity and Access Management: E’ un servizio aggiuntivo di Amazon che permette di creare utenti e gruppi per un’organizzazione o azienda, facilita la condivisione delle informazioni tra i vari account, assegnazione di credenziali di sicurezza uniche per ogni utente, controllo degli accessi alle risorse per i vari utenti, unico metodo di pagamento per tutti gli utenti. Se sei interessato ad approfondire l’argomenti vai su Identity and Access Management (IAM).

Autore:
Articoli:
57
Website:
http://startbyzero.com/
Nato a Roma nel 1968, appassionato di informatica da subito con il primo acquisto di un Sinclair ZX Spectrum, programmatore e sistemista su sistemi IBM iSeries, sviluppatore di procedure web con PHP e MySQL, grande utilizzatore e stimatore dei prodotti Google ed Amazon AWS. Attualmente vive in Perù nella città di Lima, da dove porta avanti il suo progetto favorito riguardante il blog multitematico di startbyzero.com.

Condividi

Commenti

Scrivi un tuo commento o qualche consiglio