Google Cloud Storage gestione dei bucket

Google Cloud Storage (GCS) è un'offerta di archiviazione di oggetti molto semplice e potente di Google come parte della sua Google Cloud Platform (GCP). Fornisce agli sviluppatori una soluzione di storage altamente durevole, scalabile, coerente e disponibile ed è la stessa tecnologia utilizzata da Google per alimentare la propria memoria di oggetti. 

È fatturabile con a paga per quello che usi modello, e GCP ha un periodo di prova di 60 giorni, quindi è libero di provare a vedere se soddisfa le esigenze della tua organizzazione. GCS ha diversi livelli di servizio (chiamati anche classi di archiviazione) che possono essere scelti in base alle esigenze (la discussione dettagliata su questi argomenti non rientra nell'ambito di questo tutorial). GCS può essere utilizzato per una varietà di scopi, come la pubblicazione di contenuto statico / dinamico del sito Web, la memorizzazione di file di applicazioni specifiche dell'utente, il ripristino di emergenza o la creazione di oggetti di dati di grandi dimensioni scaricabili dagli utenti.

Coloro che hanno lavorato su GCP sapranno che tutto nel GCP ruota attorno ai progetti. Ogni progetto può avere molti benne attorno al quale è strutturata l'architettura di Google Cloud Storage. I bucket sono i contenitori di base su GCS che contengono i dati memorizzati. Questi sono usati come blocchi di base per organizzare i dati e assomigliano a cartelle su un sistema operativo, ma non possono essere annidati. 

Ogni bucket può contenere qualsiasi numero di oggetti, che possono essere cartelle e / o file. Al momento della creazione, a un bucket viene assegnata una classe di memoria e una posizione geografica. Queste impostazioni possono essere specificate durante la creazione del bucket, ma non possono essere modificate in seguito.

I bucket hanno convenzioni di denominazione specifiche che devono essere seguite rigorosamente, altrimenti GCP non ti consentirà di creare un bucket. I nomi dei bucket sono globalmente unici, quindi devono essere scelti in modo da prevenire i conflitti. Tuttavia, un nome utilizzato da un bucket eliminato può essere riutilizzato. 

Inoltre, il nome non può essere modificato una volta che è stato assegnato a un bucket. L'unica soluzione se si desidera cambiarla è creare un nuovo bucket con il nome desiderato, spostare il contenuto dal bucket precedente a quello nuovo e quindi eliminare il bucket precedente.

In questo tutorial illustrerò come gestire i bucket dalla Google Cloud Console. Questo è seguito da uno script Python in cui dimostrerò di eseguire le stesse operazioni a livello di programmazione.

Utilizzo di Google Cloud Console

Innanzitutto, vediamo come gestire i bucket utilizzando l'interfaccia utente Web fornita da GCP, nota come Google Cloud Console. 

Apri Storage Browser in un browser web di tua scelta. Se sei un utente principiante, ti verrà richiesto prima di creare un progetto. Inoltre, verrà mostrata un'opzione per registrarsi per una prova gratuita. Procedi con la registrazione di prova gratuita, altrimenti non ti sarà consentito creare un nuovo bucket da solo. Per impostazione predefinita, GCP fornisce solo un bucket gratuito per ogni istanza di App Engine. 

Una volta terminato con tutti questi processi formali, la navigazione in questa pagina dovrebbe aprire la pagina mostrata di seguito.

Per creare un nuovo bucket, fare clic su Crea un secchio pulsante evidenziato sopra. Crea un secchio compilando il nome desiderato come mostrato di seguito. Il nome dovrebbe seguire le convenzioni di denominazione del bucket.

Dopo aver creato un bucket, il browser GCS lo elencherà. I bucket possono essere eliminati selezionandoli dall'elenco e facendo clic sul pulsante Elimina.

Facendo clic sul pulsante di aggiornamento, l'interfaccia utente verrà popolata con qualsiasi modifica all'elenco di bucket senza aggiornare l'intera pagina.

Gestione di bucket a livello di codice

Per prima cosa, creiamo un'istanza di Google Compute Engine che consenta una rapida dimostrazione dei concetti mirati piuttosto che affrontare passaggi di autenticazione aggiuntivi su macchine locali. Per creare un'istanza GCE, apri il link e fai clic su Crea istanza pulsante come mostrato di seguito.

Verrà visualizzato un modulo che richiede i dettagli pertinenti, che possono essere compilati a proprio piacimento. Una volta creata l'istanza GCE, apri il client SSH come mostrato di seguito, che per impostazione predefinita si apre in una nuova finestra del browser.

La schermata del client SSH avrà un aspetto simile a quello mostrato di seguito. Tutte le ulteriori operazioni in questo tutorial verranno eseguite direttamente sul client SSH stesso.

Scrivere uno script Python

Di seguito sono riportati i comandi che è necessario eseguire per configurare il server appena creato per un ambiente di sviluppo Python.

$ sudo apt-get update $ sudo apt-get installa python-dev python-setuptools $ sudo easy_install pip 

Di seguito è riportata la dipendenza che deve essere installata per scrivere questo script.

$ sudo pip installa google-api-python-client

Sui sistemi di produzione, non è consigliabile installare le librerie usando "sudo". Per favore segui le best practice virtualenv di Python per questo.

gcs_bucket.py

import sys dal pprint di importazione pprint da googleapiclient discovery discovery da googleapiclient import http da oauth2client.client import GoogleCredentials def create_service (): credentials = GoogleCredentials.get_application_default () return discovery.build ('storage', 'v1', credentials = credentials) def list_buckets (progetto): service = create_service () res = service.buckets (). list (progetto = progetto) .execute () pprint (res) def create_bucket (progetto, nome_sonda): service = create_service () res = service.buckets () .insert (project = project, body = "nome": bucket_name) .execute () pprint (res) def delete_bucket (bucket_name): service = create_service () res = service.buckets (). delete (bucket = bucket_name) .execute () pprint (res) def get_bucket (bucket_name): service = create_service () res = service.buckets (). get (bucket = bucket_name) .execute () pprint (res) def print_help (): print " "" Uso: python gcs_bucket.py  Il comando può essere: help: stampa questo elenco di aiuto: elenca tutti i bucket nella creazione del progetto specificata: crea il nome bucket fornito nell'eliminazione del progetto specificato: elimina il nome bucket fornito get: ottieni i dettagli del nome bucket fornito "" "if __name__ = = "__main__": se len (sys.argv) < 2 or sys.argv[1] == "help" or \ sys.argv[1] not in ['list', 'create', 'delete', 'get']: print_help() sys.exit() if sys.argv[1] == 'list': if len(sys.argv) == 3: list_buckets(sys.argv[2]) sys.exit() else: print_help() sys.exit() if sys.argv[1] == 'create': if len(sys.argv) == 4: create_bucket(sys.argv[2], sys.argv[3]) sys.exit() else: print_help() sys.exit() if sys.argv[1] == 'delete': if len(sys.argv) == 3: delete_bucket(sys.argv[2]) sys.exit() else: print_help() sys.exit() if sys.argv[1] == 'get': if len(sys.argv) == 3: get_bucket(sys.argv[2]) sys.exit() else: print_help() sys.exit()

Lo script Python sopra mostra le principali operazioni che possono essere eseguite su un bucket. Questi includono:

  • creazione di un nuovo bucket in un progetto
  • elenco di tutti i bucket in un progetto
  • ottenere dettagli di un secchio specifico
  • eliminazione di un bucket specifico

Vediamo come appaiono queste operazioni quando viene eseguito lo script.

$ python gcs_bucket.py Uso: python gcs_bucket.py  Il comando può essere: help: stampa questo elenco di aiuto: elenca tutti i bucket nella creazione del progetto specificata: crea il nome bucket fornito nell'eliminazione del progetto specificato: elimina il nome bucket fornito get: ottieni i dettagli del nome bucket fornito $ python lista gcs_bucket.py tutsplus-demo u'items ': [u'etag': u'CAE = ', u'id': u'tutsplus-demo.appspot.com ', u'kind': u'storage # bucket ', u'location ': u'US', u'metageneration ': u'1', u'name ': u'tutsplus-demo.appspot.com', u'projectNumber ': u'1234567890', u'selfLink ' : u'https: //www.googleapis.com/storage/v1/b/tutsplus-demo.appspot.com ', u'storageClass': u'STANDARD ', u'timeCreated': u'2016-10-05T15 : 30: 52.237Z ', u'updated': u'2016-10-05T15: 30: 52.237Z '], u'kind': u'storage # bucket ' $ python gcs_bucket.py crea tutsplus-demo tutsplus -demo-test u'etag ': u'CAE =', u'id ': u'tutsplus-demo-test', u'kind ': u'storage # bucket', u'location ': u'US ', u'metageneration': u'1 ', u'name': u'tutsplus-demo-test ', u'projectNumber': u'1234567890 ', u'selfLink': u'https: //www.goog leapis.com/storage/v1/b/tutsplus-demo-test ', u'storageClass': u'STANDARD ', u'timeCreated': u'2016-10-07T05: 55: 29.638Z ', u'aggiornato' : u'2016-10-07T05: 55: 29.638Z ' $ python gcs_bucket.py ottieni tutsplus-demo-test u'etag': u'CAE = ', u'id': u'tutsplus-demo-test ', u'kind': u'storage # bucket ', u'location': u'US ', u'metageneration': u'1 ', u'name': u'tutsplus-demo-test ', u' projectNumber ': u'1234567890', u'selfLink ': u'https: //www.googleapis.com/storage/v1/b/tutsplus-demo-test', u'storageClass ': u'STANDARD', u ' timeCreated ': u'2016-10-07T05: 55: 29.638Z', u'updated ': u'2016-10-07T05: 55: 29.638Z' $ python gcs_bucket.py cancella tutsplus-demo-test "

Conclusione

In questo tutorial, hai visto come gestire i bucket su Google Cloud Storage. Ciò è stato anche accompagnato da una breve introduzione alla creazione di un'istanza di Google Compute Engine e al suo utilizzo tramite un client SSH.

Nel prossimo tutorial illustrerò come gestire gli oggetti, ovvero le cartelle e i file all'interno di un bucket.