Uvod u Google Cloud Storage s Javom

1. Pregled

Google Cloud Storage nudi internetsku pohranu prilagođenu potrebama pojedine aplikacije na temelju lokacije, učestalosti pristupa i cijene. Za razliku od Amazonovih web usluga, Google Cloud Storage koristi jedan API za pristup visokim, srednjim i niskim frekvencijama.

Kao i većina oblačnih platformi, Google nudi besplatan pristup; detalji o cijenama su ovdje.

U ovom ćemo se vodiču povezati s pohranom, stvoriti skup, zapisati, pročitati i ažurirati podatke. Dok koristimo API za čitanje i pisanje podataka, koristit ćemo i gsutil uslužni program za pohranu u oblaku.

2. Postavljanje Google Cloud Storagea

2.1. Ovisnost Mavena

Moramo dodati jednu ovisnost o našoj pom.xml:

 com.google.cloud google-cloud-storage 1.17.0 

Maven Central ima najnoviju verziju knjižnice.

2.2. Stvorite autentifikacijski ključ

Prije nego što se povežemo s Google Cloudom, moramo konfigurirati provjeru autentičnosti. Aplikacije Google Cloud Platform (GCP) učitavaju privatni ključ i podatke o konfiguraciji iz JSON konfiguracijske datoteke. Ovu datoteku generiramo putem GCP konzole. Za pristup konzoli potreban je važeći račun Google Cloud Platform.

Konfiguraciju izrađujemo na način da:

  1. Odlazak na konzolu Google Cloud Platform
  2. Ako još nismo definirali GCP projekt, kliknite na stvoriti gumb i unesite naziv projekta, poput "baeldung-cloud-tutorial
  3. Odaberi "novi račun usluge”S padajućeg popisa
  4. Dodajte ime poput "baeldung-cloud-storage”U polje naziva računa.
  5. Pod, ispod "uloga”Odaberite Projekt, a zatim Vlasnik u podizborniku.
  6. Odaberite Stvori, a konzola preuzima datoteku privatnog ključa.

Uloga u koraku # 6 autorizira račun za pristup resursima projekta. Radi jednostavnosti, ovom smo računu dali cjelovit pristup svim projektnim resursima.

Za proizvodno okruženje definirali bismo ulogu koja odgovara pristupu koji aplikacija treba.

2.3. Instalirajte autentifikacijski ključ

Zatim kopiramo datoteku preuzetu s GCP konzole na prikladno mjesto i usmjeravamo na GOOGLE_APPLICATION_CREDENTIALS varijabla okoline na njemu. Ovo je najlakši način učitavanja vjerodajnica, iako ćemo u nastavku pogledati još jednu mogućnost.

Za Linux ili Mac:

izvoz GOOGLE_APPLICATION_CREDENTIALS = "/ put / do / datoteke"

Za Windows:

postavite GOOGLE_APPLICATION_CREDENTIALS = "C: \ put \ do \ datoteke"

2.4. Instalirajte Cloud Tools

Google nudi nekoliko alata za upravljanje njihovom oblačnom platformom. Koristit ćemo gsutil tijekom ovog vodiča čitati i pisati podatke uz API.

To možemo učiniti u dva jednostavna koraka:

  1. Instalirajte Cloud SDK iz ovih uputa za našu platformu.
  2. Slijedite Quickstart za našu platformu ovdje. U koraku 4 od Inicijalizirajte SDK, odabiremo naziv projekta u koraku 4 odjeljka 2.2 gore („baeldung-cloud-storage"Ili bilo koje ime koje ste upotrijebili).

gsutil je sada instaliran i konfiguriran za čitanje podataka iz našeg projekta u oblaku.

3. Povezivanje s Skladištenje i Stvaranje a Kanta

3.1. Povežite se s Skladištenje

Prije nego što možemo koristiti Google Cloud pohranu, moramo stvoriti objekt usluge. Ako smo već postavili GOOGLE_APPLICATION_CREDENTIALS varijabla okoline, možemo koristiti zadanu instancu:

Pohrana za pohranu = StorageOptions.getDefaultInstance (). GetService (); 

Ako ne želimo koristiti varijablu okruženja, moramo stvoriti Vjerodajnice instance i proslijedite je Pohrana sa naziv projekta:

Vjerodajnice za vjerodajnice = GoogleCredentials .fromStream (novi FileInputStream ("put / do / datoteke")); Pohrana za pohranu = StorageOptions.newBuilder (). SetCredentials (vjerodajnice) .setProjectId ("baeldung-cloud-tutorial"). Build (). GetService (); 

3.2. Stvaranje a Kanta

Sad kad smo povezani i provjerili autentičnost, možemo stvoriti segment. Kante su spremnici u kojima se nalaze predmeti. Pomoću njih mogu se organizirati i kontrolirati pristup podacima.

Ne postoji ograničenje broja predmeta u segmentu. GCP ograničava broj operacija na segmentima i potiče dizajnere aplikacija da naglašavaju operacije na objektima, a ne na segmentima.

Stvaranje kante zahtijeva a BucketInfo:

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

Za ovaj jednostavan primjer, mi naziv segmenta i prihvaćamo zadana svojstva. Imena segmenata moraju bitiglobalno jedinstven. Ako odaberemo ime koje se već koristi, stvoriti() neće uspjeti.

3.3. Ispitivanje a Kanta S gsutil

Budući da sada imamo kantu, možemo je pregledati gsutil.

Otvorimo naredbeni redak i pogledajmo:

$ gsutil ls -L -b gs: // baeldung-1-bucket / gs: // baeldung-1-bucket /: Klasa pohrane: STANDARD Ograničenje lokacije: Omogućeno izdanje verzija u SAD-u: Nijedna Konfiguracija evidencije: Nijedna Konfiguracija web mjesta: Nema Konfiguracija CORS : Ništa Konfiguracija životnog ciklusa: Nijedan Podnositelj zahtjeva Omogućeno plaćanje: Nijedno Oznake: Ništa Stvoreno vrijeme: Nedjelja, 11. veljače 2018. 21:09:15 GMT Ažurirano vrijeme: Nedjelja, 11. veljače 2018. 21:09:15 GMT Metageneracija: 1 ACL: [{" entitet ":" project-owner-385323156907 "," projectTeam ": {" projectNumber ":" 385323156907 "," team ":" owner "}," role ":" OWNER "}, ...] Zadani ACL: [ {"entity": "project-owner-385323156907", "projectTeam": {"projectNumber": "385323156907", "team": "owner"}, "role": "OWNER"}, ...]

gsutil izgleda poput naredbi ljuske, i svi koji su upoznati s naredbenim retkom Unixa ovdje bi se trebali osjećati ugodno. Obavijest da smo put do našeg segmenta proslijedili kao URL: gs: // baeldung-1-bucket /, zajedno s nekoliko drugih opcija.

The ls opcija daje popis ili predmeta ili kante, i -L opcija naznačila je da želimo detaljan popis - pa smo dobili detalje o kanta uključujući vrijeme izrade i kontrole pristupa.

Dodajmo neke podatke u našu skupinu!

4. Čitanje, pisanje i ažuriranje podataka

U Google Cloud Storageu objekti se pohranjuju u Blobs; Blob Imena mogu sadržavati bilo koji Unicode znak, ograničen na 1024 znaka.

4.1. Pisanje podataka

Sačuvajmo a Niz u našu kantu:

Vrijednost niza = "Hello, World!"; bajt [] bajtova = value.getBytes (UTF_8); Blob blob = bucket.create ("moj prvi blob", bajtovi); 

Kao što vidite, objekti su jednostavno nizovi bajtova u kantu, pa pohranjujemo a Niz jednostavnim radom sa svojim sirovim bajtovima.

4.2. Čitanje podataka s gsutil

Sad kad imamo kantu u kojoj je objekt, pogledajmo je gsutil.

Počnimo s popisom sadržaja našeg segmenta:

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

Prošli smo gsutil the ls opcija opet, ali izostavljena -b i -L, pa smo zatražili kratki popis predmeta. Za svaki objekt dobivamo popis URI-ova, koji je jedan u našem slučaju.

Ispitajmo objekt:

$ gsutil cat gs: // baeldung-1-bucket / my-first-blob Pozdrav svijetu!

Mačka spaja sadržaj predmeta na standardni izlaz. Vidimo Niz napisali smo Blob.

4.3. Čitanje podataka

Blobs su dodijeljeni a BlobId po stvaranju.

Blob je najlakši način dohvatiti pomoću BlobId:

Blob blob = storage.get (blobId); Vrijednost niza = novi String (blob.getContent ()); 

Prosljeđujemo id Skladištenje i dobiti Blob zauzvrat, i getContent () vraća bajtove.

Ako nemamo BlobId, možemo pretražiti kantu po imenu:

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

4.4. Ažuriranje podataka

Možemo ažurirati a Blob dohvativši ga i zatim pristupivši njegovu WriteableByteChannel:

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

Ispitajmo ažurirani objekt:

$ gsutil cat gs: // baeldung-1-bucket / my-first-blob Doviđenja!

4.5. Spremite objekt u datoteku, a zatim izbrišite

Spremimo ažurirani objekt u datoteku:

$ gsutil copy gs: // baeldung-1-bucket / my-first-blob my-first-blob Kopiranje gs: // baeldung-1-bucket / my-first-blob ... / [1 datoteke] [9,0 B / 9,0 B] Operacija završena za više od 1 objekta / 9,0 B. Grovers-Mill: ~ egoebelbecker $ cat moja prva mrlja Doviđenja!

Očekivano, kopirati opcija kopira objekt u naziv datoteke naveden u naredbenom retku.

gsutil može kopirati bilo koji objekt iz Google Cloud Storagea u lokalni sustav datoteka, pod pretpostavkom da ima dovoljno prostora za njegovo pohranjivanje.

Završit ćemo čišćenjem:

$ gsutil rm gs: // baeldung-1-bucket / my-first-blob Uklanjanje gs: // baeldung-1-bucket / my-first-blob ... / [1 objekti] Operacija je dovršena za više od 1 objekta. $ gsutil ls gs: // baeldung-1-bucket / $

rm (del radi i previše) briše navedeni objekt

5. Zaključak

U ovom kratkom vodiču stvorili smo vjerodajnice za Google Cloud Storage i povezali se s infrastrukturom. Stvorili smo skupinu, zapisali podatke, a zatim ih pročitali i izmijenili. Kako radimo s API-jem, također smo koristili gsutil ispitati pohranu u oblaku dok smo stvarali i čitali podatke.

Također smo razgovarali o tome kako koristiti segmente i učinkovito pisati i mijenjati podatke.

Uzorke koda, kao i uvijek, možete pronaći na GitHubu.


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