I den første delen av denne todelte opplæringsserien hadde vi en oversikt over hvordan skuffer brukes på Google Cloud Storage for å organisere filer. Vi så hvordan du administrerer skuffer på Google Cloud Storage fra Google Cloud Console. Dette ble etterfulgt av et Python-skript hvor disse operasjonene ble utført programmatisk.
I denne delen vil jeg demonstrere hvordan man håndterer objekter, dvs. filer og mapper i GCS-buckets. Strukturen til denne opplæringen vil være lik den forrige. Først vil jeg demonstrere hvordan du utfører grunnleggende operasjoner relatert til filbehandling ved hjelp av Google Cloud Console. Dette vil bli fulgt av et Python-skript for å gjøre de samme operasjonene programmatisk.
Akkurat som bøtte som navngir i GCS hadde noen retningslinjer og begrensninger, følger objektering også et sett med retningslinjer. Objektnavnene skal inneholde gyldige Unicode-tegn og skal ikke inneholde Videresendings- eller Linjestrøm-tegn. Noen anbefalinger inkluderer ikke å ha tegn som "#", "[", "]", "*", "?" eller ulovlige XML-kontrolltegn fordi de kan tolkes feil og kan føre til tvetydighet.
Objektnavnene i GCS følger også et flatt navneområde. Dette betyr fysisk at det ikke er noen kataloger og underkataloger på GCS. For eksempel, hvis du oppretter en fil med navn /tutsplus/tutorials/gcs.pdf
, det vil se ut som om gcs.pdf
ligger i en katalog som heter tutorials
som igjen er en underkatalog av tutsplus
. Men ifølge GCS ligger objektet bare i en bøtte med navnet /tutsplus/tutorials/gcs.pdf
.
La oss se på hvordan du håndterer objekter ved hjelp av Google Cloud Console, og hopp deretter på Python-skriptet for å gjøre det samme programmatisk.
Jeg vil fortsette fra der vi dro i den siste opplæringen. La oss begynne med å lage en mappe.
For å opprette en ny mappe, klikk på Lag mappe knappen fremhevet ovenfor. Opprett en mappe ved å fylle ut ønsket navn som vist nedenfor. Navnet skal følge konvensjonene for navngivning av objekt.
La oss nå laste opp en fil i den nylig opprettede mappen.
Etter opprettelsen vil GCS-nettleseren vise de nyopprettede objektene. Objekter kan slettes ved å velge dem fra listen og klikke på sletteknappen.
Hvis du klikker på oppdateringsknappen, fyller du brukergrensesnittet med eventuelle endringer i listen over objekter uten å forny hele siden.
I første del så vi hvordan du oppretter en Compute Engine-forekomst. Jeg vil bruke det samme her og bygge på Python-skriptet fra den siste delen.
Det er ingen ekstra installasjonstrinn som må følges for denne opplæringen. Se første del for mer informasjon om installasjons- eller utviklingsmiljø.
importer sys fra pprint import pprint fra googleapiclient import funnet fra googleapiclient import http fra oauth2client.client import GoogleCredentials def create_service (): credentials = GoogleCredentials.get_application_default () return discovery.build ('lagring', 'v1', legitimasjon = legitimasjon) def list_objects (bucket): service = create_service () # Lag en forespørsel til objects.list for å hente en liste over objekter. fields_to_return = \ 'nextPageToken, elementer (navn, størrelse, contentType, metadata (my-key)) req = service.objects (). list (bucket = bucket, fields = fields_to_return) all_objects = [] # Hvis du har for mange elementer som skal listes i en forespørsel, list_next () vil # automatisk håndtere personsøking med sidenToken. mens req: resp = req.execute () all_objects.extend (resp.get ('items', [])) req = service.objects (). list_next (req, resp) pprint (all_objects) def create_object (bøtte, filnavn ): service = create_service () # Dette er forespørselslegemet som angitt: # http://g.co/cloud/storage/docs/json_api/v1/objects/insert#request body = 'name': filnavn med åpne (filnavn, 'rb') som f: req = service.objects (). sett inn (bøtte = bucket, body = body, # Du kan også bare sette media_body = filnavn, men for # demonstrasjons skyld, send inn det mer generiske filhåndtaket, som kunne # vel være en StringIO eller lignende. media_body = http.MediaIoBaseUpload (f, 'application / octet stream')) resp = req.execute () pprint (resp) def delete_object (bøtte, filnavn): service = create_service () res = service.objects (). slett (bucket = bucket, object = filnavn) .execute () pprint (res) def print_help (): print "" "Bruk: python gcs_objects.pyKommandoen kan være: hjelp: Skriver ut denne hjelpelisten: Viser alle objekter i den angitte bøtteopprettelsen: Last opp den angitte filen i spesifisert bøtte-sletting: Slett det oppgitte filnavnet fra bøtte "" "hvis __name__ ==" __main__ ": hvis 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_objects(sys.argv[2]) sys.exit() else: print_help() sys.exit() if sys.argv[1] == 'create': if len(sys.argv) == 4: create_object(sys.argv[2], sys.argv[3]) sys.exit() else: print_help() sys.exit() if sys.argv[1] == 'delete': if len(sys.argv) == 4: delete_object(sys.argv[2], sys.argv[3]) sys.exit() else: print_help() sys.exit()
Det ovennevnte Python-skriptet viser de viktigste operasjonene som kan utføres på objekter. Disse inkluderer:
La oss se hvordan hver av de ovennevnte operasjonene ser ut når skriptet kjøres.
$ python gcs_objects.py Bruk: python gcs_objects.pyKommando kan være: hjelp: Skriver ut denne hjelpelisten: Viser alle objekter i den angitte bøtteopprettelsen: Last opp den angitte filen i spesifisert bøtte-sletting: Slett det oppgitte filnavnet fra bøtte $ python gcs_objects.py liste tutsplus-demotest [u 'contentType': u'applikasjon / x-www-form-urlenkodd; charset = UTF-8 ', dinnavn': du har en oversikt / ', uverdi': u'0 ', u'contentType' : u'image / png ', resp = req.execute () du'navn': u'tutsplus / Screen Shot 2016-10-17 på 1.03.16 PM.png ', u'ize': u'36680 ' ] $ python gcs_objects.py opprett tutsplus-demo-test gcs_buckets.py u'bucket ': u'tutsplus-demo-test', u'contentType ': u'applikasjon / octet-stream', u'crc32c ': u 'XIEyEw ==', u'etag ': u'CJCckonZ4c8CEAE =', u'generation ': u'1476702385770000', du har det: u'tutsplus-demo-test / gcs_buckets.py / 1476702385770000 ', u'kind ': u'minnes # objekt', u'md5Hash ': u' + bd6Ula + mG4bRXReSnvFew == ', u'mediaLink': u'https: //www.googleapis.com/download/storage/v1/b/tutsplus -demo-test / o / gcs_buckets.py? generasjon = 147670238577000 0 & alt = media ', u'metag eneration ': u'1', navn ': u'gcs_buckets.py', du selvLink ': u'https: //www.googleapis.com/storage/v1/b/tutsplus-demo-test/o /gcs_buckets.py 'u'ize': u'2226 ', u'storageClass': u'STANDARD ', du er opprettet': u'2016-10-17T11: 06: 25.753Z ', uoppdatert': u'2016-10-17T11: 06: 25.753Z ' $ python gcs_objects.py liste tutsplus-demo-test [u'contentType': u'applikasjon / octet-stream ', u'navn': u'gcs_buckets. py ', u'ize': u'2226 ', u'contentType': u'applikasjon / x-www-form-urlencoded; charset = UTF-8 ', dinnavn': u'tutsplus / ', u'0 ', u'contentType': u'image / png ', navn': u'tutsplus / Screen Shot 2016-10-17 på 1.03.16 PM.png ', u 'size': u'36680 '] $ python gcs_objects.py slett tutsplus-demo-test gcs_buckets.py "$ python gcs_objects.py liste tutsplus-demo-test [u'contentType': u'applikasjon / x-www -form-urlenkodd; charset = UTF-8 ',' navn ': du har det / du er' u'0 ', u'contentType': u'image / png ', din navn ': u'tutsplus / Screen Shot 2016-10-17 at 1.03.16 PM.png', u'se ': u'36680']
I denne opplæringsserien så vi hvordan Google Cloud Storage fungerer fra en fugleperspektiv, som ble etterfulgt av grundig analyse av bøtter og objekter. Vi så da hvordan du utfører store bøtte- og objektrelaterte operasjoner via Google Cloud Console.
Da utførte vi det samme ved hjelp av Python-skript. Det er flere som kan gjøres med Google Cloud Storage, men det er igjen for deg å utforske.