Introduksjon til Google Cloud Storage med Java

1. Oversikt

Google Cloud Storage tilbyr online lagring som er skreddersydd for et enkelt applikasjons behov, basert på plassering, hyppighet og tilgang. I motsetning til Amazon Web Services bruker Google Cloud Storage en enkelt API for høy, middels og lavfrekvent tilgang.

Som de fleste skyplattformer tilbyr Google et gratis nivå av tilgang; prisinformasjonen er her.

I denne opplæringen kobler vi til lagring, oppretter en bøtte, skriver, leser og oppdaterer data. Mens vi bruker API for å lese og skrive data, bruker vi også gsutil skylagringsverktøy.

2. Oppsett av Google Cloud Storage

2.1. Maven avhengighet

Vi må legge til en enkelt avhengighet til vår pom.xml:

 com.google.cloud google-cloud-storage 1.17.0 

Maven Central har den nyeste versjonen av biblioteket.

2.2. Opprett godkjenningsnøkkel

Før vi kan koble til Google Cloud, må vi konfigurere autentisering. Google Cloud Platform (GCP) -applikasjoner laster inn en privat nøkkel og konfigurasjonsinformasjon fra en JSON-konfigurasjonsfil. Vi genererer denne filen via GCP-konsollen. Tilgang til konsollen krever en gyldig Google Cloud Platform-konto.

Vi lager vår konfigurasjon ved å:

  1. Gå til Google Cloud Platform Console
  2. Hvis vi ennå ikke har definert et GCP-prosjekt, klikker vi på skape og skriv inn et prosjektnavn, for eksempel “baeldung-cloud-tutorial
  3. Å velge "ny tjenestekonto”Fra rullegardinlisten
  4. Legg til et navn som “baeldung-sky-lagring”Inn i kontonavnfeltet.
  5. Under “rolle”Velg Prosjekt, og deretter Eier i undermenyen.
  6. Velg Create, og konsollen laster ned en privat nøkkelfil.

Rollen i trinn 6 autoriserer kontoen til å få tilgang til prosjektressurser. For enkelhets skyld ga vi denne kontoen full tilgang til alle prosjektressursene.

For et produksjonsmiljø vil vi definere en rolle som tilsvarer tilgangen applikasjonen trenger.

2.3. Installer godkjenningsnøkkelen

Deretter kopierer vi filen som er lastet ned fra GCP-konsollen til et praktisk sted og peker på GOOGLE_APPLICATION_CREDENTIALS miljøvariabel på det. Dette er den enkleste måten å laste inn legitimasjonen på, selv om vi ser på en annen mulighet nedenfor.

For Linux eller Mac:

eksporter GOOGLE_APPLICATION_CREDENTIALS = "/ sti / til / fil"

For Windows:

sett GOOGLE_APPLICATION_CREDENTIALS = "C: \ bane \ til \ fil"

2.4. Installer Cloud Tools

Google tilbyr flere verktøy for å administrere skyplattformen sin. Vi skal bruke gsutil i løpet av denne opplæringen for å lese og skrive data ved siden av API.

Vi kan gjøre dette i to enkle trinn:

  1. Installer Cloud SDK fra instruksjonene her for plattformen vår.
  2. Følg hurtigstarten for plattformen vår her. I trinn 4 av Initialiser SDKvelger vi prosjektnavnet i trinn 4 i avsnitt 2.2 ovenfor (“baeldung-sky-lagring”Eller hvilket navn du brukte).

gsutil er nå installert og konfigurert til å lese data fra skyprosjektet vårt.

3. Koble til Oppbevaring og skape en Bøtte

3.1. Koble til Oppbevaring

Før vi kan bruke Google Cloud-lagring, må vi opprette et tjenesteobjekt. Hvis vi allerede har satt opp GOOGLE_APPLICATION_CREDENTIALS miljøvariabel, kan vi bruke standardforekomsten:

Storage storage = StorageOptions.getDefaultInstance (). GetService (); 

Hvis vi ikke vil bruke miljøvariabelen, må vi opprette en Legitimasjonserklæring eksempel og gi den videre Oppbevaring med prosjektnavnet:

Legitimasjonsinformasjon = GoogleCredentials .fromStream (ny FileInputStream ("sti / til / fil")); Storage storage = StorageOptions.newBuilder (). SetCredentials (credentials) .setProjectId ("baeldung-cloud-tutorial"). Build (). GetService (); 

3.2. Opprette en Bøtte

Nå som vi er koblet til og autentisert, kan vi lage en bøtte. Skuffer er beholdere som inneholder gjenstander. De kan brukes til å organisere og kontrollere datatilgang.

Det er ingen grense for antall objekter i en bøtte. GCP begrenser antall operasjoner på bøtter og oppfordrer applikasjonsdesignere til å legge vekt på operasjoner på gjenstander i stedet for på bøtter.

Å lage en bøtte krever en BucketInfo:

Bøttebøtte = storage.create (BucketInfo.of ("baeldung-bucket")); 

For dette enkle eksemplet, vi en bucket navn og godtar standardegenskapene. Bøttenavn må væreglobalt unik. Hvis vi velger et navn som allerede er brukt, skape() vil mislykkes.

3.3. Eksamen a Bøtte Med gsutil

Siden vi har en bøtte nå, kan vi undersøke den med gsutil.

La oss åpne en ledetekst og ta en titt:

$ gsutil ls -L -b gs: // baeldung-1-bucket / gs: // baeldung-1-bucket /: Lagringsklasse: STANDARD Posisjonsbegrensning: US Versjon aktivert: Ingen Loggkonfigurasjon: Ingen Nettsteds konfigurasjon: Ingen CORS konfigurasjon : Ingen Konfigurasjon av livssyklus: Ingen Forespørsel Betalt aktivert: Ingen Etiketter: Ingen Opprettet tid: Sun, 11 Feb 2018 21:09:15 GMT Tid oppdatert: Sun, 11 Feb 2018 21:09:15 GMT Metageneration: 1 ACL: [{" entity ":" project-owners-385323156907 "," projectTeam ": {" projectNumber ":" 385323156907 "," team ":" owners "}," role ":" OWNER "}, ...] Standard ACL: [ {"entity": "project-owners-385323156907", "projectTeam": {"projectNumber": "385323156907", "team": "owners"}, "role": "OWNER"}, ...]

gsutil ser veldig ut som skallkommandoer, og alle som er kjent med Unix-kommandolinjen, bør føle seg veldig komfortable her. Legg merke til at vi passerte i veien til bøtta vår som en URL: gs: // baeldung-1-bucket /, sammen med noen få andre alternativer.

De ls alternativet produserer en liste eller gjenstander eller bøtter, og -L alternativet indikerte at vi ønsker en detaljert oppføring - så vi mottok detaljer om bøtte inkludert opprettelsestider og tilgangskontroller.

La oss legge til litt data i bøtta vår!

4. Lesing, skriving og oppdatering av data

I Google Cloud Storage lagres objekter i Blobs; Blob navn kan inneholde hvilket som helst Unicode-tegn, begrenset til 1024 tegn.

4.1. Skrive data

La oss lagre en String til bøtta vår:

Strengverdi = "Hello, World!"; byte [] byte = value.getBytes (UTF_8); Blobblob = bucket.create ("min første blob", byte); 

Som du kan se, er objekter bare matriser av byte i bøtta, så vi lagrer en String ved å bare operere med sine rå byte.

4.2. Lese data med gsutil

Nå som vi har en bøtte med en gjenstand i, la oss se på gsutil.

La oss starte med å liste opp innholdet i bøtta vår:

$ gsutil ls gs: // baeldung-1-bucket / gs: // baeldung-1-bucket / my-first-blob

Vi passerte gsutil de ls alternativet igjen, men utelatt -b og -L, så vi ba om en kort liste over objekter. Vi mottar en liste over URI-er for hvert objekt, som er en i vårt tilfelle.

La oss undersøke objektet:

$ gsutil cat gs: // baeldung-1-bucket / min første blob Hello World!

Katt sammenkobler innholdet av objektet til standard utdata. Vi ser String vi skrev til Blob.

4.3. Lese data

Blobs tildeles a BlobId ved skapelsen.

Den enkleste måten å hente en Blob på er BlobId:

Blob blob = storage.get (blobId); Strengverdi = ny streng (blob.getContent ()); 

Vi overfører id til Oppbevaring og få Blob til gjengjeld, og getContent () returnerer byte.

Hvis vi ikke har BlobId, kan vi søke i Bucket etter navn:

Sideblobs = bucket.list (); for (Blob blob: blobs.getValues ​​()) {if (name.equals (blob.getName ())) {return new String (blob.getContent ()); }}

4.4. Oppdaterer data

Vi kan oppdatere en Blob ved å hente den og deretter få tilgang til den WriteableByteChannel:

String newString = "Farvel nå!"; Blob blob = storage.get (blobId); WritableByteChannel channel = blob.writer (); channel.write (ByteBuffer.wrap (newString.getBytes (UTF_8))); channel.close ();

La oss undersøke det oppdaterte objektet:

$ gsutil cat gs: // baeldung-1-bucket / my-first-blob Farvel nå!

4.5. Lagre et objekt i filen og deretter Slett

La oss lagre det oppdaterte objektet i en fil:

$ gsutil copy gs: // baeldung-1-bucket / my-first-blob my-first-blob Kopiering gs: // baeldung-1-bucket / my-first-blob ... / [1 filer] [9.0 B / 9.0 B] Operasjonen fullført over 1 objekter / 9.0 B. Grovers-Mill: ~ egoebelbecker $ cat my-first-blob Farvel nå!

Som forventet, kopiere alternativet kopierer objektet til filnavnet som er spesifisert på kommandolinjen.

gsutil kan kopiere ethvert objekt fra Google Cloud Storage til det lokale filsystemet, forutsatt at det er nok plass til å lagre det.

Vi avslutter med å rydde opp:

$ gsutil rm gs: // baeldung-1-bucket / my-first-blob Fjerne gs: // baeldung-1-bucket / my-first-blob ... / [1 objekter] Operasjonen fullført over 1 objekter. $ gsutil ls gs: // baeldung-1-bøtte / $

rm (del fungerer også) sletter det spesifiserte objektet

5. Konklusjon

I denne korte opplæringen opprettet vi legitimasjon for Google Cloud Storage og koblet til infrastrukturen. Vi opprettet en bøtte, skrev data, og så leste og endret den. Mens vi jobber med API, brukte vi også gsutil for å undersøke skylagring mens vi opprettet og leser data.

Vi diskuterte også hvordan du bruker bøtter og skriver og endrer data effektivt.

Kodeeksempler, som alltid, kan du finne på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found