Google Cloud Storage: Mengelola Bucket
() translation by (you can also view the original English article)
Google Cloud Storage (GCS) adalah sebuah penyimpanan obyek yang sangat sederhana dan ampuh yang menawarkan oleh Google sebagai bagian dari Google Cloud Platform (GCP). Itu menyediakan sebuah solusi penyimpanan yang berdaya tahan tinggi, dapat diukur, konsisten dan tersedia bagi pengembang dan merupakan teknologi yang sama yang Google gunakan untuk memperkuat penyimpanan obyeknya sendiri.
Itu berbayar dengan model bayar apa yang kamu gunakan, dan GCP hadir dengan percobaan 60 hari, jadi itu bebas untuk dicoba untuk melihat jika itu sesuai dengan kebutuhan organisasimu. GCS memiliki tingkat pelayanan yang berbeda (juga disebut kelas penyimpanan) yang dapat dipilih sesuai kebutuhan (diskusi lebih detail pada ini diluar lingkup tutorial ini). GCS dapat digunakan untuk berbagai tujuan, seperti melayani konten website statis/dinamis, menyimpan file aplikasi khusus pengguna, penanganan bencana, atau membuat obyek data yang besar dapat didownload bagi pengguna.
Mereka yang telah berkerja pada GCP akan mengetahui bahwa dalam GCP berputar di sekitar project. Tiap project dapat memiliki banyak bucket di sekitar dimana arsitektur Google Cloud Storage dibuat strukturnya. Bucket adalah container dasar pada GCS yang mengandung data yang disimpan. Ini digunakan sebagai blok dasar untuk mengelola datamu dan tampak seperti folder dalam sebuah sistem operasi, namun mereka tidak dapat bersarang.
Tiap bucket dapat berisi sejumlah obyek, yang dapat berapa folder dan / atau file. Sebuah bucket ditentukan kelas penyimpanan dan lokasi geografisnya ketika dibuat. Pengaturan ini dapat ditentukan ketika membuat bucket namun tidak dapat diganti nantinya.
Bucket memiliki konvensi penamaan khusus yang perlu diikuti dengan ketat, jika tidak GCP tidak akan mengijinkanmu untuk membuat sebuah bucket. Nama bucket umumnya unik, sehingga mereka perlu dipilih dalam sebuah cara untuk mencegah konflik. Bagaimana pun juga, sebuah nama yang digunakan oleh bucket yang dihapus tidak dapat digunakan kembali.
Juga, nama tidak dapat diganti setelah itu ditentukan pada sebuah bucket. Satu-satunya solusi jika kamu ingin mengganti itu adalah membuat sebuah bucket baru dengan nama yang diinginkan, memindahkan konten dari bucket sebelumnya ke bucket yang baru, dan kemudian menghapus bucket sebelumnya.
Dalam tutorial ini, saya akan mengcover bagaimana menangani bucket dari Google Cloud Console. Ini diikuti dengan sebuah script Python dimana saya akan mendemonstrasikan melakukan operasi yang sama secara pemrograman.
Menggunakan Google Cloud Console
Pertama-tama, mari kita lihat bagaimana mengelola bucket menggunakan tampilan pengguna web yang disediakan GCP dikenal sebagai Google Cloud Console.
Buka Storage Browser dalam browser web pilihanmu. Jika kamu adalah pengguna pertama, kamu akan diminta untuk membuat sebuah project dahulu. Juga, sebuah pilihan akan ditampilkan untuk mendaftar uji coba gratis. Lanjutkan dengan pendaftaran uji coba gratis, jika tidak kamu tidak akan diijinkan untuk membuat bucket baru. Secara default, GCP hanya menyediakan satu bucket gratis tiap contoh App Engine.
Setelah selesai melakukan smua proses formal ini, mengarahkan ke halaman ini akan membuka halaman yang ditunjukkan di bawah.



Untuk membuat sebuah bucket baru, klik pada tombol Create Bucket yang disorot di atas. Buat sebuah bucket dengan mengisi nama yang diinginkan seperti yang ditunjukkan di bawah. Namanya harus mengikuti konvensi penamaan bucket.



Setelah kamu membuat sebuah bucket, browser GCS akan mendaftarkannya. Bucket dapat dihapus dengan memilihnya dari daftar dan mengklik tombol delete.



Mengklik pada tombol refresh akan mengisi UI dengan perubahan apapun pada daftar bucket tanpa memuat ulang keseluruhan halaman.
Mengelola Bucket Secara Pemrograman
Pertama-tama, mari buat sebuah contoh Google Compute Engine yang akan mengijinkan demonstrasi cepat pada konsep yang ditargetkan daripada berhadapan dengan langkah otentifikasi tambahan pada mesin lokal. Untuk membuat sebuah contoh GCE, buka tautan dan klik pada tombol Create Instance seperti yang ditunjukkan di bawah.



Sebuah form akan muncul meminta detail yang relevan, yang dapat diisi sesuai kenyamananmu. Setelah contoh GCE dibuat, buka SSH client seperti yang ditunjukkan di bawah, yang secara default membuka dalam sebuah jendela browser baru.



Layar SSH client akan tampak seperti yang ditunjukkan di bawah. Semua operasi lebih lanjut dalam tutorial ini akan dilakukan secara langsung pada SSH client itu sendiri.



Menulis Sebuah Script Python
Di bawah adalah perintah yang kamu butuhkan untuk dijalankan untuk mengatur server yang baru dibuat untuk lingkungan pengembangan Python.
1 |
$ sudo apt-get update |
2 |
$ sudo apt-get install python-dev python-setuptools |
3 |
$ sudo easy_install pip |
Di bawah ini adalah dependency yang perlu diinstal untuk menulis script.
1 |
$ sudo pip install google-api-python-client |
Pada sistem produksi, tidak disarankan untuk menginstal libraries menggunakan "sudo". Tolong ikuti penerapan terbaik Python virtualenv untuk hal ini.
gcs_bucket.py
1 |
import sys |
2 |
from pprint import pprint |
3 |
|
4 |
from googleapiclient import discovery |
5 |
from googleapiclient import http |
6 |
from oauth2client.client import GoogleCredentials |
7 |
|
8 |
|
9 |
def create_service(): |
10 |
credentials = GoogleCredentials.get_application_default() |
11 |
return discovery.build('storage', 'v1', credentials=credentials) |
12 |
|
13 |
|
14 |
def list_buckets(project): |
15 |
service = create_service() |
16 |
res = service.buckets().list(project=project).execute() |
17 |
pprint(res) |
18 |
|
19 |
|
20 |
def create_bucket(project, bucket_name): |
21 |
service = create_service() |
22 |
res = service.buckets().insert( |
23 |
project=project, body={ |
24 |
"name": bucket_name |
25 |
}
|
26 |
).execute() |
27 |
pprint(res) |
28 |
|
29 |
|
30 |
def delete_bucket(bucket_name): |
31 |
service = create_service() |
32 |
res = service.buckets().delete(bucket=bucket_name).execute() |
33 |
pprint(res) |
34 |
|
35 |
|
36 |
def get_bucket(bucket_name): |
37 |
service = create_service() |
38 |
res = service.buckets().get(bucket=bucket_name).execute() |
39 |
pprint(res) |
40 |
|
41 |
|
42 |
def print_help(): |
43 |
print """Usage: python gcs_bucket.py <command> |
44 |
Command can be:
|
45 |
help: Prints this help
|
46 |
list: Lists all the buckets in specified project
|
47 |
create: Create the provided bucket name in specified project
|
48 |
delete: Delete the provided bucket name
|
49 |
get: Get details of the provided bucket name
|
50 |
"""
|
51 |
|
52 |
|
53 |
if __name__ == "__main__": |
54 |
if len(sys.argv) < 2 or sys.argv[1] == "help" or \ |
55 |
sys.argv[1] not in ['list', 'create', 'delete', 'get']: |
56 |
print_help() |
57 |
sys.exit() |
58 |
if sys.argv[1] == 'list': |
59 |
if len(sys.argv) == 3: |
60 |
list_buckets(sys.argv[2]) |
61 |
sys.exit() |
62 |
else: |
63 |
print_help() |
64 |
sys.exit() |
65 |
if sys.argv[1] == 'create': |
66 |
if len(sys.argv) == 4: |
67 |
create_bucket(sys.argv[2], sys.argv[3]) |
68 |
sys.exit() |
69 |
else: |
70 |
print_help() |
71 |
sys.exit() |
72 |
if sys.argv[1] == 'delete': |
73 |
if len(sys.argv) == 3: |
74 |
delete_bucket(sys.argv[2]) |
75 |
sys.exit() |
76 |
else: |
77 |
print_help() |
78 |
sys.exit() |
79 |
if sys.argv[1] == 'get': |
80 |
if len(sys.argv) == 3: |
81 |
get_bucket(sys.argv[2]) |
82 |
sys.exit() |
83 |
else: |
84 |
print_help() |
85 |
sys.exit() |
Script Python di atas mendemonstrasikan operasi besar yang dapat dilakukan pada sebuah bucket. Ini mencakup:
- pembuatan sebuah bucket baru dalam sebuah project
- membuat daftar semua bucket dalam sebuah project
- mendapatkan detail sebuah bucket spesifik
- menghapus sebuah bucket spesifik
Mari lihat seperti apa operasi ini ketika script ini dijalankan.
1 |
$ python gcs_bucket.py
|
2 |
Usage: python gcs_bucket.py <command> |
3 |
Command can be: |
4 |
help: Prints this help |
5 |
list: Lists all the buckets in specified project |
6 |
create: Create the provided bucket name in specified project
|
7 |
delete: Delete the provided bucket name |
8 |
get: Get details of the provided bucket name |
9 |
|
10 |
$ python gcs_bucket.py list tutsplus-demo
|
11 |
{u'items': [{u'etag': u'CAE=', |
12 |
u'id': u'tutsplus-demo.appspot.com', |
13 |
u'kind': u'storage#bucket', |
14 |
u'location': u'US', |
15 |
u'metageneration': u'1', |
16 |
u'name': u'tutsplus-demo.appspot.com', |
17 |
u'projectNumber': u'1234567890', |
18 |
u'selfLink': u'https://www.googleapis.com/storage/v1/b/tutsplus-demo.appspot.com', |
19 |
u'storageClass': u'STANDARD', |
20 |
u'timeCreated': u'2016-10-05T15:30:52.237Z', |
21 |
u'updated': u'2016-10-05T15:30:52.237Z'}], |
22 |
u'kind': u'storage#buckets'} |
23 |
|
24 |
$ python gcs_bucket.py create tutsplus-demo tutsplus-demo-test
|
25 |
{u'etag': u'CAE=', |
26 |
u'id': u'tutsplus-demo-test', |
27 |
u'kind': u'storage#bucket', |
28 |
u'location': u'US', |
29 |
u'metageneration': u'1', |
30 |
u'name': u'tutsplus-demo-test', |
31 |
u'projectNumber': u'1234567890', |
32 |
u'selfLink': u'https://www.googleapis.com/storage/v1/b/tutsplus-demo-test', |
33 |
u'storageClass': u'STANDARD', |
34 |
u'timeCreated': u'2016-10-07T05:55:29.638Z', |
35 |
u'updated': u'2016-10-07T05:55:29.638Z'} |
36 |
|
37 |
$ python gcs_bucket.py get tutsplus-demo-test
|
38 |
{u'etag': u'CAE=', |
39 |
u'id': u'tutsplus-demo-test', |
40 |
u'kind': u'storage#bucket', |
41 |
u'location': u'US', |
42 |
u'metageneration': u'1', |
43 |
u'name': u'tutsplus-demo-test', |
44 |
u'projectNumber': u'1234567890', |
45 |
u'selfLink': u'https://www.googleapis.com/storage/v1/b/tutsplus-demo-test', |
46 |
u'storageClass': u'STANDARD', |
47 |
u'timeCreated': u'2016-10-07T05:55:29.638Z', |
48 |
u'updated': u'2016-10-07T05:55:29.638Z'} |
49 |
|
50 |
$ python gcs_bucket.py delete tutsplus-demo-test
|
51 |
''
|
Kesimpulan
Dalam tutorial ini, kamu melihat bagaimana mengelola bucket pada Google Cloud Storage. Ini juga diiringi dengan perkenalan singkat membuat sebuah contoh Google Compute Engine dan menggunakannya via SSH client.
Dalam tutorial selanjutnya, saya akan mengcover bagaimana mengelola obyek, yaitu folder dan file di dalam sebuah bucket.