Google Cloud Storage (GCS) is een zeer eenvoudig en krachtig objectopslagaanbod van Google als onderdeel van zijn Google Cloud Platform (GCP). Het biedt een zeer duurzame, schaalbare, consistente en beschikbare opslagoplossing voor ontwikkelaars en is dezelfde technologie die Google gebruikt om zijn eigen objectopslag te voeden.
Het is factureerbaar met een betalen voor wat je gebruikt model en GCP wordt geleverd met een proefperiode van 60 dagen, dus het is gratis om uit te proberen of het voldoet aan de behoeften van uw organisatie. GCS heeft verschillende serviceniveaus (ook opslagklassen genoemd) die naar behoefte kunnen worden gekozen (gedetailleerde bespreking hiervan valt buiten het bestek van deze zelfstudie). GCS kan voor verschillende doeleinden worden gebruikt, zoals het weergeven van statische / dynamische website-inhoud, het opslaan van gebruikersspecifieke toepassingsbestanden, noodherstel of het downloaden van grote gegevensobjecten voor gebruikers.
Degenen die aan GCP hebben gewerkt, weten dat alles in GCP draait om projecten. Elk project kan er veel hebben emmers waaromheen de architectuur van Google Cloud Storage is gestructureerd. Emmers zijn de basiscontainers op GCS die de opgeslagen gegevens bevatten. Deze worden gebruikt als basisblokken voor het indelen van uw gegevens en eruit zien als mappen op een besturingssysteem, maar ze kunnen niet worden genest.
Elke bucket kan een willekeurig aantal objecten bevatten, dit kunnen mappen en / of bestanden zijn. Aan een bucket wordt bij het maken een opslagklasse en geografische locatie toegewezen. Deze instellingen kunnen worden opgegeven tijdens het maken van de bucket, maar kunnen later niet worden gewijzigd.
Emmers hebben specifieke naamgevingsconventies die strikt moeten worden opgevolgd, anders staat GCP je niet toe een bucket te maken. Bucket-namen zijn wereldwijd uniek, dus moeten ze zodanig worden gekozen dat conflicten worden voorkomen. Een naam die door een verwijderde bucket wordt gebruikt, kan echter opnieuw worden gebruikt.
De naam kan ook niet worden gewijzigd nadat deze aan een bucket is toegewezen. De enige oplossing als u deze wilt wijzigen, is door een nieuwe bucket met de gewenste naam te maken, de inhoud van de vorige bucket naar de nieuwe bucket te verplaatsen en vervolgens de vorige bucket te verwijderen.
In deze zelfstudie ga ik in op het beheren van buckets uit de Google Cloud Console. Dit wordt gevolgd door een Python-script waarin ik zal demonstreren dat ik dezelfde bewerkingen programmatisch zal uitvoeren.
Laten we eerst kijken hoe we buckets kunnen beheren met de webgebruikersinterface van GCP, bekend als Google Cloud Console.
Open Storage Browser in een webbrowser naar keuze. Als u voor het eerst een gebruiker bent, wordt u gevraagd om eerst een project aan te maken. Er zal ook een optie worden getoond om aan te melden voor een gratis proefperiode. Ga door met de gratis proefinschrijving, anders mag je zelf geen nieuwe emmer maken. Standaard biedt GCP slechts één gratis bucket per App Engine-instantie.
Wanneer u met al deze formele processen klaar bent, zou het navigeren naar deze pagina de hieronder getoonde pagina moeten openen.
Klik op de knop om een nieuwe bucket te maken Maak een bucket knop hierboven gemarkeerd. Maak een bucket door een gewenste naam in te vullen, zoals hieronder getoond. De naam moet de conventies voor baknamen volgen.
Nadat u een bucket heeft gemaakt, geeft de GCS-browser deze weer. Emmers kunnen worden verwijderd door ze in de lijst te selecteren en op de knop Verwijderen te klikken.
Als u op de knop Vernieuwen klikt, wordt de gebruikersinterface gevuld met eventuele wijzigingen in de lijst met buckets zonder de hele pagina te vernieuwen.
Laten we eerst een instantie van Google Compute Engine maken, zodat u snel de getargete concepten kunt demonstreren in plaats van extra authenticatiestappen op lokale computers te gebruiken. Als u een GCE-exemplaar wilt maken, opent u de koppeling en klikt u op de Maak een instantie knop zoals hieronder weergegeven.
Er zal een formulier verschijnen met de vraag om relevante details, die u op uw gemak kunt invullen. Nadat het GCE-exemplaar is gemaakt, opent u de SSH-client zoals hieronder wordt weergegeven, die standaard wordt geopend in een nieuw browservenster.
Het SSH-clientscherm ziet er ongeveer zo uit zoals hieronder wordt weergegeven. Alle verdere bewerkingen in deze zelfstudie worden rechtstreeks op de SSH-client zelf uitgevoerd.
Hieronder staan de opdrachten die u moet uitvoeren om de nieuw aangemaakte server in te stellen voor een Python-ontwikkelomgeving.
$ sudo apt-get update $ sudo apt-get install python-dev python-setuptools $ sudo easy_install pip
Hieronder staat de afhankelijkheid die moet worden geïnstalleerd voor het schrijven van dit script.
$ sudo pip installeer google-api-python-client
Op productiesystemen is het niet raadzaam om bibliotheken te installeren met "sudo". Volg hiervoor de praktische tips van Python virtualenv.
import sys van pprint import pprint van googleapiclient import discovery van googleapiclient import http van oauth2client.client import GoogleCredentials def create_service (): credentials = GoogleCredentials.get_application_default () return discovery.build ('opslag', 'v1', referenties = referenties) def list_buckets (project): service = create_service () res = service.buckets (). list (project = project) .execute () pprint (res) def create_bucket (project, bucket_name): service = create_service () res = service.buckets () .insert (project = project, body = "name": bucket_name) .execute () pprint (res) def delete_bucket (bucket_name): service = create_service () res = service.buckets (). verwijderen (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 " "" Gebruik: python gcs_bucket.pyOpdracht kan zijn: help: Drukt deze helplijst af: toont alle emmers in opgegeven project aanmaken: maak de opgegeven bucket naam in gespecificeerde project delete: verwijder de verstrekte bucket naam haal: Verkrijg details van de verstrekte bucket naam "" "als __name__ = = "__main__": if 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()
Het bovenstaande Python-script toont de belangrijkste bewerkingen die op een bucket kunnen worden uitgevoerd. Waaronder:
Laten we eens kijken hoe deze bewerkingen eruit zien wanneer het script wordt uitgevoerd.
$ python gcs_bucket.py Gebruik: python gcs_bucket.pyOpdracht kan zijn: help: Drukt deze helplijst af: geeft alle emmers weer in opgegeven project maken: maak de opgegeven bucketnaam in gespecificeerde projectwissen: verwijder de verstrekte bucketnaam krijg: Verkrijg details van de verstrekte bucketnaam $ python gcs_bucket.py lijst 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 # buckets ' $ python gcs_bucket.py create 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'updated' : u'2016-10-07T05: 55: 29.638Z ' $ python gcs_bucket.py krijg 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' projectnummer ': 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 delete tutsplus-demo-test "
In deze zelfstudie zag u hoe u buckets op Google Cloud Storage beheert. Dit ging ook gepaard met een kleine inleiding tot het maken van een Google Compute Engine-instantie en het gebruik ervan via een SSH-client.
In de volgende zelfstudie zal ik ingaan op het beheren van objecten, dat wil zeggen mappen en bestanden in een bucket.