Introduktion til Google Cloud Storage med Java

1. Oversigt

Google Cloud Storage tilbyder online lagring, der er skræddersyet til en enkelt applikations behov baseret på placering, hyppighed af adgang og omkostninger. I modsætning til Amazon Web Services bruger Google Cloud Storage en enkelt API til høj, medium og lavfrekvent adgang.

Som de fleste skyplatforme tilbyder Google et gratis niveau af adgang; prisoplysningerne er her.

I denne vejledning opretter vi forbindelse til opbevaring, opretter en spand, skriver, læser og opdaterer data. Mens vi bruger API'en til at læse og skrive data, bruger vi også gsutil skylagringsudstyr.

2. Opsætning af Google Cloud Storage

2.1. Maven afhængighed

Vi er nødt til at tilføje en enkelt afhængighed af vores pom.xml:

 com.google.cloud google-cloud-storage 1.17.0 

Maven Central har den nyeste version af biblioteket.

2.2. Opret godkendelsesnøgle

Før vi kan oprette forbindelse til Google Cloud, skal vi konfigurere godkendelse. Google Cloud Platform (GCP) -applikationer indlæser en privat nøgle og konfigurationsoplysninger fra en JSON-konfigurationsfil. Vi genererer denne fil via GCP-konsollen. Adgang til konsollen kræver en gyldig Google Cloud Platform-konto.

Vi opretter vores konfiguration ved at:

  1. Gå til Google Cloud Platform Console
  2. Hvis vi endnu ikke har defineret et GCP-projekt, skal vi klikke på skab og indtast et projektnavn, såsom “baeldung-cloud-tutorial
  3. Vælg "ny servicekonto”Fra rullelisten
  4. Tilføj et navn som “baeldung-cloud-storage”I feltet Kontonavn.
  5. Under “rolle”Vælg Projekt, og derefter Ejer i undermenuen.
  6. Vælg Opret, og konsollen downloader en privat nøglefil.

Rollen i trin # 6 giver kontoen adgang til projektressourcer. Af hensyn til enkelheden gav vi denne konto fuld adgang til alle projektressourcer.

For et produktionsmiljø ville vi definere en rolle, der svarer til den adgang, applikationen har brug for.

2.3. Installer godkendelsesnøglen

Derefter kopierer vi den fil, der er downloadet fra GCP-konsollen, til et praktisk sted og peger på GOOGLE_APPLICATION_CREDENTIALS miljøvariabel ved det. Dette er den nemmeste måde at indlæse legitimationsoplysninger på, selvom vi ser på en anden mulighed nedenfor.

Til Linux eller Mac:

eksporter GOOGLE_APPLICATION_CREDENTIALS = "/ sti / til / fil"

Til Windows:

indstil GOOGLE_APPLICATION_CREDENTIALS = "C: \ sti \ til \ fil"

2.4. Installer Cloud Tools

Google leverer flere værktøjer til styring af deres skyplatform. Vi skal bruge gsutil under denne tutorial til at læse og skrive data sammen med API'en.

Vi kan gøre dette i to nemme trin:

  1. Installer Cloud SDK fra instruktionerne her til vores platform.
  2. Følg Quickstart for vores platform her. I trin 4 af Initialiser SDK, vælger vi projektnavnet i trin 4 i afsnit 2.2 ovenfor (“baeldung-cloud-storage”Eller hvilket navn du brugte).

gsutil er nu installeret og konfigureret til at læse data fra vores cloud-projekt.

3. Opretter forbindelse til Opbevaring og Oprettelse af en Spand

3.1. Forbinde til Opbevaring

Før vi kan bruge Google Cloud-lager, skal vi oprette et serviceobjekt. Hvis vi allerede har oprettet GOOGLE_APPLICATION_CREDENTIALS miljøvariabel, kan vi bruge standardforekomsten:

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

Hvis vi ikke vil bruge miljøvariablen, skal vi oprette en Legitimationsoplysninger eksempel og videregive det til Opbevaring med projektnavnet:

Credentials credentials = GoogleCredentials .fromStream (new FileInputStream ("path / to / file")); Storage storage = StorageOptions.newBuilder (). SetCredentials (credentials) .setProjectId ("baeldung-cloud-tutorial"). Build (). GetService (); 

3.2. Oprettelse af en Spand

Nu hvor vi er forbundet og godkendt, kan vi oprette en spand. Skovle er containere, der indeholder genstande. De kan bruges til at organisere og kontrollere dataadgang.

Der er ingen grænse for antallet af objekter i en spand. GCP begrænser antallet af operationer på skovle og opfordrer applikationsdesignere til at understrege operationer på genstande snarere end på spande.

Oprettelse af en spand kræver en BucketInfo:

Bucket bucket = storage.create (BucketInfo.of ("baeldung-bucket")); 

I dette enkle eksempel accepterer vi et standardnavn og accepterer standardegenskaberne. Spandnavne skal væreglobalt unik. Hvis vi vælger et navn, der allerede er brugt, skab() vil mislykkes.

3.3. Eksamen a Spand Med gsutil

Da vi har en spand nu, kan vi undersøge den med gsutil.

Lad os åbne en kommandoprompt og se:

$ gsutil ls -L -b gs: // baeldung-1-bucket / gs: // baeldung-1-bucket /: Opbevaringsklasse: STANDARD Placeringsbegrænsning: US Versioner aktiveret: Ingen : Ingen Konfiguration af livscyklus: Ingen Ansøger Betaling aktiveret: Ingen Etiketter: Ingen Tid oprettet: søn, 11 feb 2018 21:09:15 GMT Opdateret tid: søn, 11. feb 2018 21:09:15 GMT Metageneration: 1 ACL: [{" enhed ":" projekt-ejere-385323156907 "," projectTeam ": {" projectNumber ":" 385323156907 "," team ":" ejere "}," rolle ":" EJER "}, ...] Standard ACL: [ {"entity": "project-owners-385323156907", "projectTeam": {"projectNumber": "385323156907", "team": "owners"}, "role": "OWNER"}, ...]

gsutil ligner meget shell-kommandoer, og enhver, der er fortrolig med Unix-kommandolinjen, skal føle sig godt tilpas her. Bemærk, at vi passerede i stien til vores spand som en URL: gs: // baeldung-1-spand /sammen med et par andre muligheder.

Det ls indstilling producerer en fortegnelse eller genstande eller spande, og -L indstilling angav, at vi ønsker en detaljeret liste - så vi modtog detaljer om spand herunder oprettelsestider og adgangskontrol.

Lad os tilføje nogle data til vores spand!

4. Læsning, skrivning og opdatering af data

I Google Cloud Storage gemmes objekter i Klatter; Blob navne kan indeholde ethvert Unicode-tegn, begrænset til 1024 tegn.

4.1. Skrivning af data

Lad os gemme en Snor til vores spand:

Strengværdi = "Hej verden!"; byte [] bytes = value.getBytes (UTF_8); Blob blob = bucket.create ("min første blob", bytes); 

Som du kan se, er objekter simpelthen arrays af bytes i spanden, så vi opbevarer en Snor ved simpelthen at arbejde med sine rå byte.

4.2. Læsning af data med gsutil

Nu hvor vi har en spand med en genstand i, lad os se på gsutil.

Lad os starte med at liste indholdet af vores spand:

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

Vi gik forbi gsutil det ls mulighed igen, men udeladt -b og -L, så vi bad om en kort liste over objekter. Vi modtager en liste over URI'er for hvert objekt, hvilket er et i vores tilfælde.

Lad os undersøge objektet:

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

Kat sammenkæder objektets indhold til standardoutput. Vi ser Snor vi skrev til Blob.

4.3. Læsning af data

Blobs tildeles a BlobId ved skabelsen.

Den nemmeste måde at hente en Blob på er med BlobId:

Blob blob = storage.get (blobId); Strengværdi = ny streng (blob.getContent ()); 

Vi videregiver id'et til Opbevaring og få den Blob til gengæld og getContent () returnerer byte.

Hvis vi ikke har BlobId, vi kan søge i spanden efter navn:

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

4.4. Opdatering af data

Vi kan opdatere en Blob ved at hente den og derefter få adgang til dens WriteableByteChannel:

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

Lad os undersøge det opdaterede objekt:

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

4.5. Gem et objekt i filen, og derefter slet

Lad os gemme det opdaterede objekt i en fil:

$ gsutil kopi gs: // baeldung-1-bucket / min første blob min første blob Kopiering gs: // baeldung-1-bucket / min første blob ... / [1 filer] [9.0 B / 9.0 B] Drift afsluttet over 1 objekter / 9.0 B. Grovers-Mill: ~ egoebelbecker $ cat my-first-blob Farvel nu!

Som forventet kopi option kopierer objektet til det filnavn, der er angivet på kommandolinjen.

gsutil kan kopiere ethvert objekt fra Google Cloud Storage til det lokale filsystem, forudsat at der er nok plads til at gemme det.

Vi slutter med at rydde op:

$ gsutil rm gs: // baeldung-1-bucket / my-first-blob Fjernelse af gs: // baeldung-1-bucket / my-first-blob ... / [1 objekter] Handlingen afsluttet over 1 objekter. $ gsutil ls gs: // baeldung-1-spand / $

rm (del fungerer også) sletter det angivne objekt

5. Konklusion

I denne korte vejledning oprettede vi legitimationsoplysninger til Google Cloud Storage og oprettede forbindelse til infrastrukturen. Vi oprettede en spand, skrev data og læste og ændrede dem derefter. Da vi arbejder med API'en, brugte vi også gsutil at undersøge cloud-lagring, når vi oprettede og læste data.

Vi diskuterede også, hvordan man bruger spande og skriver og ændrer data effektivt.

Kodeprøver kan som altid findes på GitHub.


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