Come interagire con AWS S3 con la programmazione Python

Amazon Web Services (AWS) è ormai diventato uno dei leader nel settore del cloud computing. Uno dei suoi componenti principali è S3, il servizio di storage di oggetti. Con la sua impressionante disponibilità e durata, è diventato il modo standard per archiviare video, immagini e dati. Grazie alle sue potenzialità è possibile combinare S3 con altri servizi per creare applicazioni infinitamente scalabili. Boto3 è il nome dell'SDK Python per AWS. Esso consente di creare, aggiornare ed eliminare le risorse AWS direttamente dagli script Python. In questo articolo andremo a descrivere come operare su S3 attraverso uno script in Python.

Introduzione

Mentre il negozio web di Amazon è cresciuto nel corso degli anni, la necessità di un'infrastruttura IT scalabile è diventata ogni giorno più urgente. Ciò ha consentito ad Amazon di creare la propria infrastruttura orientata ai servizi. Sulla ricerca di nuovi modelli di business, Amazon è stato uno dei primi pionieri ad offrire i servizi costruiti per la propria attività anche ai clienti. Tutti questi servizi vengono offerti attraverso la piattaforma on demand Amazon Web Services (AWS). Tra i vari servizi di cloud computing offerti da AWS, quello che ci interessa in questo articolo è denominato Amazon Simple Storage Service (S3). Amazon S3 è un servizio di storage progettato per archiviare sul Web qualsiasi quantità di dati, in qualsiasi momento e da qualsiasi luogo. S3 offre un'interfaccia Web service facile da usare che può essere utilizzata dagli sviluppatori di applicazioni per diversi casi d'uso. Amazon integra il servizio di storage anche in altri servizi, quindi è possibile utilizzare i dati archiviati in S3 anche per indagini analitiche o per il riconoscimento facciale.

Formato dei dati in S3

L'unità di base per archiviare i dati all'interno di Amazon S3 è l'oggetto. Un oggetto è costituito dai dati effettivi arricchiti con metadati. I metadati sono un insieme di coppie nome-valore che forniscono informazioni aggiuntive sull'oggetto. Accanto alle informazioni predefinite come la data dell'ultima modifica, queste informazioni forniscono anche metadati HTTP standard. È anche possibile fornire metadati definiti dall'utente, come ad esempio l'applicazione utilizzata per creare un dato oggetto. Gli oggetti sono organizzati in bucket. Un bucket può essere pensato come a una raccolta di oggetti che condividono lo stesso spazio dei nomi. I bucket vengono utilizzati anche per il controllo degli accessi, il reporting sull'utilizzo e le spese di trasferimento. Per esempio, il file immagine cane.jpg è posizionato nel bucket animali con l'URL http://animali.s3.amazonaws.com/photos/cane.jpg.

Ogni oggetto all'interno di un bucket ha una chiave univoca. Quindi, la combinazione tra "endpoint del servizio Web + bucket + chiave + versione" identifica un oggetto in Amazon S3. Nell'esempio di prima c'era il bucket animali, s3.amazonaws.com rappresentava l'endpoint del servizio Web e photos/cane.jpg la chiave. La versione è opzionale e può essere tralasciata. Sebbene Amazon affermi che si possa accedere ai dati da qualsiasi parte del mondo, per molte applicazioni è fondamentale sapere dove risiedono i dati. Pertanto, è importante scegliere la regione in cui si trova un bucket. Ciò consente agli utenti finali di ottimizzare i tempi di latenza e di soddisfare i requisiti legali. Per chi opera dall'Italia la regione più adatta dovrebbe essere Milano (eu-south-1).

Prima di iniziare

Prima di iniziare, c'è bisogno di configurare il nostro ambiente di lavoro. Le istruzioni che riportiamo di seguito sono relative all'ambiente Windows. Per gli utenti Mac OS o Linux le istruzioni sono disponibili sul sito ufficiale. Per installare Boto3 sul computer usiamo il solito strumento pip. Quindi dal prompt dei comandi basta inserire ed eseguire quanto segue:

py -m pip install --user boto3

Un altro modulo utile per il nostro script è uuid, che consente di creare delle stringhe casuali univoche.

py -m pip install --user uuid

Oltre ai moduli Python, c'è bisogno anche di installare la CLI AWS, ovvero l'interfaccia a linee di comando di AWS. Questo strumento utile per gestire i servizi AWS, si potrebbe installare con pip, ma scaricando l'eseguibile dal seguente link rende la procedura assai più snella e semplice. Dopo aver completato l'installazione, mediante l'eseguibile scaricato, andiamo a verificare l'installazione. Basta andare nel prompt dei comandi e digitare cd\ per scendere nella directory C, e digitare aws --version. Dovrebbe venir fuori la seguente riga:

aws-cli/2.4.25 Python/3.8.8 Windows/10 exe/AMD64 prompt/off

Ora possediamo gli strumenti per operare, ma non possiamo ancora usarli in questo momento, perché non sappiamo a quale account AWS dovremmo connetterci. Chiaramente occorre un account AWS. Se non si possiede un account AWS occorre crearlo. AWS consente di creare account gratuiti, seppur limitati nelle funzionalità, ma comunque sufficienti per il nostro scopo.

All'interno di AWS

Una volta creato un account AWS, occorre ottenere delle credenziali valide. Se si possiede già uno user IAM che dispone delle autorizzazioni complete per S3, si possono utilizzare le credenziali di tale user (l'ID della chiave di accesso e la chiave di accesso segreta) senza dover creare un nuovo user. In caso contrario, il modo più semplice per farlo è creare un nuovo user AWS e quindi archiviare le nuove credenziali. Per creare un nuovo user, basta andare nel proprio account AWS, nella pagina principale denominata Console di gestione AWS andare su Servizi e selezionare Sicurezza, identità, conformità quindi dal menu a tendina fare clic su IAM (Figura 1).

Figura 1: Come creare un nuovo utente per gestire il suo accesso alle risorse

All'interno del pannello di controllo IAM, selezionare sulla sinistra la voce Utenti e fare clic sul pulsante Aggiungi Utenti all'interno della pagina. Occorre adesso dare allo user un nome (per esempio, boto3). Abilitare programmatic access. Questo garantirà allo user creato di essere in grado di lavorare con qualsiasi SDK supportato da AWS o di effettuare chiamate API separate (Figura 2).

Figura 2: Impostazione del nome utente e selezione del tipo di credenziali

Per semplificare le cose, scegliere la policy preconfigurata AmazonS3FullAccess. Con questa policy, il nuovo user potrà avere il pieno controllo su S3 (Figura 3). Procedere alla scheda successiva per creare lo user. Una nuova schermata mostrerà le credenziali generate.

Figura 3: Impostazione autorizzazioni per il nuovo utente

Fare clic sul pulsante Scarica .csv per ottenere una copia delle credenziali. Le credenziali serviranno per completare la configurazione.

Nel prompt dei comandi

Ora, tornando al prompt dei comandi, usando il comando aws configure è possibile impostare le credenziali. Con questo comando la AWS CLI chiederà di immettere quattro pezzi di informazione:

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2452 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend