Ogni oggetto che vogliamo memorizzare su amazon S3 deve essere contenuto in un bucket, il nome del bucket deve essere univoco rispetto a tutta la rete globale di S3 e solo un account semplice o di un’organizzazione può esserne il proprietario. Il nome da assegnare ad ogni bucket deve essere compatibile con lo standard per i DNS in quanto verrà usato in un URL di richiesta HTTP per permettere l’accesso ad un singolo oggetto. Ogni account amazon può definire al massimo 100 buckets che posso contenere un numero illimitato di oggetti, se si cancella un bucket il suo nome diventa disponibile per una nuova creazione. Quando creiamo un bucket dovremmo decidere la regione geografica sui cui vogliamo memorizzare i nostri oggetti, se volessimo memorizzare un nostro backup in più regioni dovremmo usare dei nomi di bucket diversi, uno per ogni regione interessata.
Bucket restrizioni e limitazioni: Per la creazione di un bucket anche se pubblico devono essere specificate le chiavi di accesso, la proprietà del bucket una volta creato non potrà mai essere trasferita ad un altro account, quanto si crea un bucket fare attenzione a quanto segue:
- Può contenere lettere minuscole, numeri, punti (.), underscore (_), trattini (-)
- Deve iniziare con un numero o con una lettera
- Deve essere lungo da un minimo di 3 caratteri ad un massimo di 255 caratteri
- Non deve essere formattato come un indirizzo IP (es: 192.168.1.1)
Per essere conformi alle regole del DNS amazon nella documentazione ufficiale raccomanda di utilizzare queste regole rispetto alle precedenti per una questione di compatibilità:
- Il nome non deve usare gli underscore (_)
- La lunghezza del nome usare da 3 a 63 caratteri e non 255
- Il nome non deve finire con un trattino (-)
- Il nome non deve contenere due punti (.) adiacenti
- Il nome non deve contenere un punto dopo un trattino (es: my-.bucket.com = non valido)
Indirizzo del bucket: Una volta creato il bucket e memorizzato un oggetto possiamo accedere alla risorsa in varie maniere, ad esempio facciamo conto che abbiamo un bucket con un nome “mio-bucket” e abbiamo memorizzato in esso un oggetto chiamato “mio-oggetto.jpg”:
- http://mio-bucket.s3.amazonaws.com/mio-oggetto.jpg
- http://s3.amazonaws.com/mio-bucket/mio-oggetto.jpg
In alternativa potrei mappare il record CNAME del mio DNS ad esempio static.mio-sito.com con un valore alias mio-bucket.s3.amazonaws.com ed accedere alla risorsa in questo modo:
- http://static.mio-sito.com/mio-oggetto.jpg
Operazioni in PHP sul bucket: Tramite il pacchetto SDK per PHP possiamo creare, modificare e cancellare il nostro bucket come nell’esempio seguente:
/* Impostazione nome deve essere univoco sulla rete globale */ $bucketname = 'ilmiobucket.ilmiodominio'; /* Creazione di un nuovo bucket */ $s3 = new AmazonS3(); $s3->create_bucket($bucketname,S3_LOCATION_US); /* Reperire alcune informazioni */ $s3->get_bucket_region($bucketname); $s3->get_bucket_headers($bucketname); /* Cancellazione del bucket */ $s3->delete_bucket($bucketname);
Usare il bucket come website: dato che il nostro bucket è accessibile da internet e può essere reso pubblico, possiamo utilizzarlo per ospitare un intero sito web statico, con l’accortezza di specificare che vogliamo l’utilizzo di questa feature e specificare il documento indexpage. Questa operazione può essere impostata direttamente dalla console aws o tramite script PHP:
$bucket = '*** Provide bucket name ***';
$indexDocument = '*** Provide index document name ****';
$errorDocument = '*** Provide error document name ***';
// Instantiate the class
$s3 = new AmazonS3();
// 1) Add website config. to bucket.
$response = $s3->create_website_config($bucket,array(
'indexDocument' => $indexDocument,
'errorDocument' => $errorDocument));
// 2) Retrieve website configuration.
$response = $s3->get_website_config($bucket);
// 3) Delete website configuration.
$response = $s3->delete_website_config($bucket);
Indice dei capitoli per argomento Amazon S3 Sviluppatori
- Amazon AWS – Servizio S3 (Sviluppatori – introduzione)
- Amazon AWS – Servizio S3 (Sviluppatori – credenziali di accesso)
- Amazon AWS – Servizio S3 (Sviluppatori – buckets)
- Amazon AWS – Servizio S3 (Sviluppatori – objects)
- Amazon AWS – Servizio S3 (Sviluppatori – hosting website)
- Amazon AWS – Servizio S3 (Sviluppatori – usare BitTorrent)
Risorse ed articoli di approfondimento sul servizio Amazon S3
- Amazon AWS – Guida generale dei servizi
- Amazon AWS – Servizio S3 (Simple Storage Service)
- Amazon AWS – Servizio S3 (Simple Storage Service – incominciare)
- Amazon AWS – Object Expiration S3 per scadenza oggetto
- Amazon AWS – Gestire il servizio S3 da linea di comando con s3cmd
- Amazon AWS – Gestire le API con lo Zend Framework in PHP
- Amazon AWS – Documentazione ufficiale in formato HTML o PDF
- Amazon AWS – Articoli presenti nel blog con tag S3
