Pengenalan Penyimpanan Awan Google dengan Java

1. Gambaran keseluruhan

Penyimpanan Awan Google menawarkan storan dalam talian yang disesuaikan dengan keperluan aplikasi individu berdasarkan lokasi, kekerapan akses, dan kos. Tidak seperti Perkhidmatan Web Amazon, Penyimpanan Awan Google menggunakan satu API untuk akses frekuensi tinggi, sederhana dan rendah.

Seperti kebanyakan platform awan, Google menawarkan tahap akses percuma; maklumat harga ada di sini.

Dalam tutorial ini, kita akan menyambung ke storan, membuat baldi, menulis, membaca, dan mengemas kini data. Semasa menggunakan API untuk membaca dan menulis data, kami juga akan menggunakan utiliti penyimpanan awan gsutil .

2. Persediaan Penyimpanan Awan Google

2.1. Ketergantungan Maven

Kita perlu menambahkan satu kebergantungan pada pom.xml kami :

 com.google.cloud google-cloud-storage 1.17.0 

Maven Central mempunyai versi terbaru perpustakaan.

2.2. Buat Kunci Pengesahan

Sebelum kita dapat menyambung ke Google Cloud, kita perlu mengkonfigurasi pengesahan. Aplikasi Google Cloud Platform (GCP) memuat kunci peribadi dan maklumat konfigurasi dari fail konfigurasi JSON. Kami menghasilkan fail ini melalui konsol GCP. Akses ke konsol memerlukan Akaun Google Cloud Platform yang sah.

Kami membuat konfigurasi kami dengan:

  1. Pergi ke Google Cloud Platform Console
  2. Jika kita belum mendefinisikan proyek GCP, kita mengklik tombol buat dan memasukkan nama proyek, seperti " baeldung-cloud-tutorial "
  3. Pilih " akaun perkhidmatan baru " dari senarai drop-down
  4. Tambahkan nama seperti " baeldung-cloud-storage " ke dalam bidang nama akaun.
  5. Di bawah " peranan " pilih Projek, dan kemudian Pemilik di submenu.
  6. Pilih buat, dan konsol memuat turun fail kunci peribadi.

Peranan dalam langkah # 6 memberi kebenaran kepada akaun untuk mengakses sumber projek. Demi kesederhanaan, kami memberikan akaun ini akses penuh ke semua sumber projek.

Untuk persekitaran produksi, kami akan menentukan peranan yang sesuai dengan akses yang diperlukan aplikasi.

2.3. Pasang Kekunci Pengesahan

Seterusnya, kami menyalin fail yang dimuat turun dari konsol GCP ke lokasi yang mudah dan menunjukkan pemboleh ubah persekitaran GOOGLE_APPLICATION_CREDENTIALS ke arahnya . Ini adalah kaedah termudah untuk memuatkan kelayakan, walaupun kita akan melihat kemungkinan lain di bawah.

Untuk Linux atau Mac:

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/file"

Untuk Windows:

set GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\file"

2.4. Pasang Alat Awan

Google menyediakan beberapa alat untuk menguruskan platform cloud mereka. Kami akan menggunakan gsutil semasa tutorial ini untuk membaca dan menulis data di samping API.

Kita boleh melakukan ini dalam dua langkah mudah:

  1. Pasang Cloud SDK dari arahan di sini untuk platform kami.
  2. Ikuti Quickstart untuk platform kami di sini. Pada langkah 4 Menginisialisasi SDK , kami memilih nama proyek pada langkah 4 dari bahagian 2.2 di atas (" baeldung-cloud-storage " atau nama mana pun yang anda gunakan).

gsutil kini dipasang dan dikonfigurasi untuk membaca data dari projek cloud kami.

3. Menyambung ke Penyimpanan dan Membuat Baldi

3.1. Sambungkan ke Storan

Sebelum kita dapat menggunakan storan Google Cloud, kita harus membuat objek perkhidmatan. Sekiranya kita sudah menyediakan pemboleh ubah persekitaran GOOGLE_APPLICATION_CREDENTIALS , kita boleh menggunakan contoh lalai:

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

Sekiranya kita tidak mahu menggunakan pemboleh ubah persekitaran, kita harus membuat instance Kredensial dan menyebarkannya ke Penyimpanan dengan nama projek:

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

3.2. Membuat Baldi

Setelah kita disambungkan dan disahkan, kita boleh membuat baldi. Baldi adalah bekas yang menyimpan objek. Mereka boleh digunakan untuk mengatur dan mengawal akses data.

Tidak ada had bilangan objek dalam baldi. GCP menghadkan bilangan operasi pada baldi dan mendorong pereka aplikasi untuk menekankan operasi pada objek dan bukannya pada baldi.

Untuk membuat baldi memerlukan BucketInfo:

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

Untuk contoh mudah ini, kami memberikan nama baldi dan menerima sifat lalai. Nama baldi mestilah unik di seluruh dunia. Sekiranya kita memilih nama yang sudah digunakan, buat () akan gagal.

3.3. Membeli Baldi Dengan Gsutil

Oleh kerana kita mempunyai baldi sekarang, kita dapat memeriksanya dengan gsutil.

Mari buka prompt arahan dan lihat:

$ gsutil ls -L -b gs://baeldung-1-bucket/ gs://baeldung-1-bucket/ : Storage class: STANDARD Location constraint: US Versioning enabled: None Logging configuration: None Website configuration: None CORS configuration: None Lifecycle configuration: None Requester Pays enabled: None Labels: None Time created: Sun, 11 Feb 2018 21:09:15 GMT Time updated: Sun, 11 Feb 2018 21:09:15 GMT Metageneration: 1 ACL: [ { "entity": "project-owners-385323156907", "projectTeam": { "projectNumber": "385323156907", "team": "owners" }, "role": "OWNER" }, ... ] Default ACL: [ { "entity": "project-owners-385323156907", "projectTeam": { "projectNumber": "385323156907", "team": "owners" }, "role": "OWNER" }, ... ]

gsutil mirip perintah shell, dan sesiapa yang biasa dengan baris perintah Unix harus merasa sangat selesa di sini. Perhatikan bahawa kami meneruskan jalan ke baldi kami sebagai URL: gs: // baeldung-1-bucket / , bersama dengan beberapa pilihan lain.

The ls option produces a listing or objects or buckets, and the -L option indicated that we want a detailed listing – so we received details about the bucket including the creation times and access controls.

Let's add some data to our bucket!

4. Reading, Writing and Updating Data

In Google Cloud Storage, objects are stored in Blobs; Blob names can contain any Unicode character, limited to 1024 characters.

4.1. Writing Data

Let's save a String to our bucket:

String value = "Hello, World!"; byte[] bytes = value.getBytes(UTF_8); Blob blob = bucket.create("my-first-blob", bytes); 

As you can see, objects are simply arrays of bytes in the bucket, so we store a String by simply operating with its raw bytes.

4.2. Reading Data with gsutil

Now that we have a bucket with an object in it, let's take a look at gsutil.

Let's start by listing the contents of our bucket:

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

We passed gsutil the ls option again but omitted -b and -L, so we asked for a brief listing of objects. We receive a list of URIs for each object, which is one in our case.

Let's examine the object:

$ gsutil cat gs://baeldung-1-bucket/my-first-blob Hello World!

Cat concatenates the contents of the object to standard output. We see the String we wrote to the Blob.

4.3. Reading Data

Blobs are assigned a BlobId upon creation.

The easiest way to retrieve a Blob is with the BlobId:

Blob blob = storage.get(blobId); String value = new String(blob.getContent()); 

We pass the id to Storage and get the Blob in return, and getContent() returns the bytes.

If we don't have the BlobId, we can search the Bucket by name:

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

4.4. Updating Data

We can update a Blob by retrieving it and then accessing its WriteableByteChannel:

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

Let's examine the updated object:

$ gsutil cat gs://baeldung-1-bucket/my-first-blob Bye now!

4.5. Save an Object to File, Then Delete

Let's save the updated the object to a file:

$ gsutil copy gs://baeldung-1-bucket/my-first-blob my-first-blob Copying gs://baeldung-1-bucket/my-first-blob... / [1 files][ 9.0 B/ 9.0 B] Operation completed over 1 objects/9.0 B. Grovers-Mill:~ egoebelbecker$ cat my-first-blob Bye now!

As expected, the copy option copies the object to the filename specified on the command line.

gsutil can copy any object from Google Cloud Storage to the local file system, assuming there is enough space to store it.

We'll finish by cleaning up:

$ gsutil rm gs://baeldung-1-bucket/my-first-blob Removing gs://baeldung-1-bucket/my-first-blob... / [1 objects] Operation completed over 1 objects. $ gsutil ls gs://baeldung-1-bucket/ $

rm ( del berfungsi juga) memadam objek yang ditentukan

5. Kesimpulan

Dalam tutorial ringkas ini, kami membuat kelayakan untuk Penyimpanan Awan Google dan disambungkan ke infrastruktur. Kami membuat baldi, menulis data, dan kemudian membaca dan mengubahnya. Semasa kami bekerja dengan API, kami juga menggunakan gsutil untuk memeriksa penyimpanan awan ketika kami membuat dan membaca data.

Kami juga membincangkan cara menggunakan baldi dan menulis serta mengubah data dengan cekap.

Contoh kod, seperti biasa, boleh didapati di GitHub.