Dengan Cloud Storage, aplikasi Anda dapat menyajikan objek data besar seperti file video atau gambar, dan pengguna dapat mengupload file data berukuran besar. Di runtime Python 2, App Engine menyediakan library kliennya sendiri untuk menulis dan membaca objek di Cloud Storage. Library App Engine ini tidak tersedia di runtime App Engine yang lebih baru, termasuk runtime Python 3.
Jika aplikasi Python 2 Anda menggunakan library GoogleAppEngineCloudStorageClient
, Anda
harus bermigrasi ke Library Klien Cloud untuk Cloud Storage sebelum dapat
menjalankan aplikasi di runtime Python 3. Perhatikan bahwa Anda hanya perlu memigrasikan aplikasi
untuk menggunakan library klien yang baru. Semua objek data dan izin di
bucket Cloud Storage yang ada tidak berubah, dan Anda dapat mengakses
bucket yang ada menggunakan library klien baru.
Perbandingan Library Klien Cloud dan App Engine
Kesamaan:
Library Klien Cloud mendukung semua fitur Cloud Storage yang diaktifkan oleh library klien App Engine, seperti membaca, menulis, menghapus, dan membuat daftar objek. Migrasi hanya memerlukan perubahan kecil pada kode Anda.
Library Klien Cloud juga mendukung fitur tambahan, seperti membuat dan memberi label bucket, serta mengambil versi objek yang lebih lama.
Perbedaan:
Di library App Engine, fungsi yang mengambil daftar objek berfungsi secara asinkron. Library Klien Cloud tidak menyediakan fungsi asinkron untuk membuat daftar objek, meskipun Anda dapat menggunakan paging dan melakukan iterasi pada sekumpulan kecil objek.
Library klien App Engine mengharuskan Anda menggunakan daftar kontrol akses (ACL) untuk mengontrol akses ke bucket dan objek. Namun, Cloud Storage dan Library Klien Cloud mendukung dua sistem untuk memberi pengguna izin mengakses bucket dan objek Anda: ACL dan akses level bucket seragam. Akses level bucket seragam memberikan pengalaman kontrol akses yang lebih sederhana dan konsisten di semua resource Cloud Anda.
Semua ACL yang Anda gunakan dengan library klien App Engine tetap berlaku untuk bucket yang ada setelah Anda bermigrasi ke Library Klien Cloud, dan Anda dapat terus menggunakan ACL jika diperlukan.
Jika akses level bucket yang seragam memenuhi kebutuhan Anda, sebaiknya gunakan sistem yang lebih sederhana ini untuk bucket baru yang Anda buat. Meskipun Anda dapat mengonversi bucket yang ada untuk menggunakan akses level bucket seragam, hal ini mungkin memerlukan perubahan signifikan pada cara aplikasi Anda mengamankan akses ke objek penyimpanannya.
Contoh kode:
Operasi penyimpanan dasar menggunakan API App Engine
Operasi penyimpanan dasar menggunakan library klien Cloud untuk Cloud Storage
Sebelum memulai migrasi
Jika Anda belum melakukannya, siapkan lingkungan pengembangan Python Anda untuk menggunakan versi Python yang kompatibel dengan Google Cloud, dan instal alat pengujian untuk membuat lingkungan Python yang terisolasi.
Memahami izin Cloud Storage
Secara default, akun layanan default yang dibuat otomatis pada aplikasi Anda memiliki hak istimewa baca dan tulis ke bucket dalam project Anda, dan aplikasi memiliki hak penuh atas objek yang dibuatnya, baik sebelum maupun setelah migrasi.
Jika Anda menggunakan akun layanan atau akun pengguna lain untuk mengamankan akses ke bucket dan objek Cloud Storage, pastikan Anda terus menggunakan akun dan teknik autentikasi yang sama sebelum dan sesudah migrasi.
Ringkasan proses migrasi
Untuk memigrasikan aplikasi Python Anda agar dapat menggunakan Library Klien Cloud untuk Cloud Storage, bukan library klien App Engine:
Instal Library Klien Cloud untuk Cloud Storage.
Update kode Anda untuk menggunakan Library Klien Cloud.
Uji update Anda.
Deploy aplikasi Anda ke App Engine.
Menginstal Library Klien Cloud untuk Cloud Storage
Agar Library Klien Cloud untuk Cloud Storage tersedia bagi aplikasi Anda saat dijalankan di App Engine:
Update file
app.yaml
:- Jika Anda menggunakan Library Klien Cloud, tambahkan versi terbaru
library
grpcio
dansetuptools
. - Tambahkan library
ssl
karena diperlukan oleh Cloud Storage.
Berikut adalah contoh file
app.yaml
:runtime: python27 threadsafe: yes api_version: 1 libraries: - name: grpcio version: 1.0.0 - name: setuptools version: 36.6.0 - name: ssl version: latest
Beberapa library klien tidak memerlukan library SSL. Jika Anda tidak menyertakan library SSL untuk library klien yang membutuhkannya, Anda akan melihat error SSL di Logs Explorer saat aplikasi menerima permintaan.
- Jika Anda menggunakan Library Klien Cloud, tambahkan versi terbaru
library
Update file
requirements.txt
dengan menambahkan Library Klien Cloud untuk Cloud Storage ke daftar dependensi Anda:google-cloud-storage==1.24.1
Sebaiknya gunakan library klien Cloud Storage versi 1.24.1 karena mendukung aplikasi Python 2.7.
Lalu, jalankan
pip install -t lib -r requirements.txt
untuk mengupdate daftar library yang tersedia untuk aplikasi Anda.Untuk aplikasi Python 2, jika aplikasi Anda menggunakan library bawaan atau yang disalin, Anda harus menentukan jalur tersebut dalam file
appengine_config.py
:import pkg_resources from google.appengine.ext import vendor # Set PATH to your libraries folder. PATH = 'lib' # Add libraries installed in the PATH folder. vendor.add(PATH) # Add libraries to pkg_resources working set to find the distribution. pkg_resources.working_set.add_entry(PATH)
File
appengine_config.py
dalam contoh sebelumnya mengasumsikan bahwa folderlib
berada di direktori kerja saat ini. Jika Anda tidak dapat menjamin bahwalib
akan selalu berada di direktori kerja saat ini, tentukan jalur lengkap ke folderlib
. Contoh:import os path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
Mengupdate kode Anda untuk menggunakan Library Klien Cloud
Membuat Klien Cloud Storage
Agar dapat menggunakan Library Klien Cloud untuk Cloud Storage, buat objek
Client
. Klien berisi kredensial dan data
lain yang diperlukan untuk terhubung ke Cloud Storage. Contoh:
from google.cloud import storage
client = storage.Client()
Dalam skenario otorisasi default yang dijelaskan sebelumnya, klien Cloud Storage berisi kredensial dari akun layanan default App Engine, yang diotorisasi untuk berinteraksi dengan bucket dan objek project Anda. Jika Anda tidak menangani skenario default ini, lihat Kredensial Default Aplikasi (ADC) untuk mengetahui informasi tentang cara memberikan kredensial.
Menggunakan metode Library Klien Cloud
Tabel berikut merangkum metode mana dari Library Klien Cloud yang akan digunakan saat mengimplementasikan fitur Cloud Storage tertentu.
Fitur Cloud Storage | Metode klien Cloud |
Membuat daftar objek di bucket | Client.list_blobs
Lihat contoh kode sederhana dan contoh mode direktori emulasi. Untuk menjelajahi daftar objek, gunakan properti |
Menulis ke penyimpanan | blob.upload_from_file
blob.upload_from_filename
blob.upload_from_string
Lihat contoh kode. |
Menentukan ACL | Untuk menerapkan ACL
yang telah ditetapkan, gunakan parameter predefined_acl saat
membuat
bucket atau membuat objek.
Untuk kontrol yang lebih mendetail, gunakan |
Membaca dari penyimpanan | blob.download_to_file
blob.download_to_filename
blob.download_as_string
Lihat contoh kode. |
Menghapus objek |
blob.delete
Lihat contoh kode. |
Salin objek | bucket.copy_blob
Lihat contoh kode. |
Membaca metadata untuk sebuah objek | blob.propertyname
dan blob.metadata
Lihat contoh kode. |
Menguji update Anda
Anda dapat menguji update aplikasi di lingkungan lokal, tetapi semua permintaan Cloud Storage harus dikirim melalui internet ke bucket Cloud Storage yang sebenarnya. App Engine maupun Cloud Storage tidak menyediakan emulator Cloud Storage.
Untuk informasi selengkapnya tentang menguji aplikasi Python 2, lihat Menggunakan server pengembangan lokal.
Untuk mengetahui informasi selengkapnya tentang pengujian aplikasi Python 3, lihat Menguji dan men-deploy aplikasi Anda.
Men-deploy aplikasi Anda
Setelah siap men-deploy aplikasi, Anda harus:
Jika aplikasi berjalan tanpa error, gunakan pemisahan traffic untuk meningkatkan traffic aplikasi yang diupdate secara perlahan. Pantau aplikasi dengan cermat untuk menemukan masalah sebelum merutekan lebih banyak traffic ke aplikasi yang diupdate.