Bermigrasi dari paket layanan lama

Sebagian besar fungsi yang disediakan oleh paket layanan lama kini disediakan oleh Library Klien Cloud. Untuk informasi selengkapnya, lihat alternatif yang direkomendasikan yang tercantum di bawah ini.

Jika bermigrasi ke solusi yang tidak dipaketkan bukan merupakan opsi untuk project, Anda mungkin dapat terus menggunakan paket layanan lama di aplikasi Python 3 sebagai gantinya. Pendekatan ini memberi Anda fleksibilitas untuk beralih ke layanan yang tidak dipaketkan nanti dalam siklus migrasi.

Setelah bermigrasi dari layanan paket lama, Anda dapat terus menggunakan App Engine atau bermigrasi ke Cloud Run. Cloud Run dirancang untuk meningkatkan pengalaman App Engine, dan menggabungkan banyak fitur terbaik dari lingkungan standar dan lingkungan fleksibel. Untuk membandingkan fitur dan memahami cara bermigrasi, lihat panduan perbandingan App Engine dan Cloud Run.

Google Cloud menyediakan produk mandiri yang menawarkan fungsi serupa dengan beberapa paket layanan di runtime Python 2. Untuk paket layanan yang tidak tersedia sebagai produk terpisah di Google Cloud, seperti pemrosesan gambar, penelusuran, dan pesan, panduan ini merekomendasikan penyedia pihak ketiga atau solusi lainnya.

Halaman ini memperkenalkan jalur migrasi untuk setiap paket layanan.

Memahami izin Google Cloud

Karena aplikasi yang dimigrasikan dan layanan Google Cloud yang digunakannya tidak lagi berjalan di lingkungan "sandbox" yang sama, aplikasi Anda memerlukan otorisasi untuk mengakses setiap layanan. Misalnya, untuk berinteraksi dengan Firestore dalam mode Datastore (Datastore) atau Cloud Tasks, aplikasi Anda harus menyediakan kredensial akun yang diotorisasi untuk mengakses layanan tersebut.

Secara default, aplikasi di runtime standar App Engine menyediakan kredensial dari akun layanan default App Engine, yang diberi otorisasi untuk mengakses database dalam project yang sama dengan aplikasi tersebut.

Jika salah satu kondisi berikut terpenuhi, Anda harus menggunakan teknik autentikasi alternatif yang secara eksplisit memberikan kredensial:

  • Aplikasi Anda dan database Memorystore berada di projectGoogle Cloud yang berbeda.

  • Anda telah mengubah peran yang ditetapkan ke akun layanan App Engine default.

Untuk mengetahui informasi tentang teknik autentikasi alternatif, lihat Menyiapkan Autentikasi untuk Aplikasi Produksi Server ke Server.

Autentikasi untuk pengembangan lokal

Untuk mengembangkan atau menguji aplikasi secara lokal, sebaiknya buat dan gunakan akun layanan. Jangan gunakan akun layanan default App Engine karena akun tersebut memiliki tingkat izin yang tinggi untuk semua hal yang ada dalam project Anda. Sebagai gantinya, buat dan gunakan akun layanan dengan tingkat izin terendah yang Anda perlukan untuk tugas pengembangan dan pengujian khusus.

Untuk petunjuk tentang cara menyiapkan akun layanan dan menghubungkannya ke aplikasi Anda, lihat Mendapatkan dan memberikan kredensial akun layanan secara manual.

Menginstal library klien

Cara termudah untuk menggunakan layanan Google Cloud dari aplikasi Python adalah dengan menginstal library klien Python layanan tersebut.Layanan Google Cloud juga menyediakan REST JSON dan antarmuka lainnya. Langkah-langkah untuk menginstal library klien ke runtime App Engine berbeda untuk aplikasi Python 2 dan aplikasi Python 3.

Menginstal library untuk aplikasi Python 2

Untuk menginstal library yang akan digunakan aplikasi Anda saat dijalankan di runtime Python 2:

  1. Buat direktori untuk menyimpan library pihak ketiga, seperti lib/.

  2. Buat file requirements.txt di folder yang sama dengan file app.yaml Anda, lalu tambahkan nama library klien.

    Misalnya, file berikut dapat digunakan untuk menginstal library bagi Pub/Sub dan Cloud Tasks:

    google-cloud-pubsub
    google-cloud-tasks
    
  3. Gunakan pip install untuk menginstal library ke dalam folder yang Anda buat. Contoh:

    pip install -t lib -r requirements.txt
  4. Di file app.yaml aplikasi, tentukan library Google RPC dan setuptools yang diperlukan, serta library SSL opsional di bagian libraries:

    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 Anda menerima permintaan.

  5. Buat file appengine_config.py di folder yang sama dengan file app.yaml jika Anda belum memilikinya. Tambahkan kode berikut ke file appengine_config.py Anda:

    # 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)

    Pastikan Anda menggunakan modul pkg_resources, yang memastikan bahwa aplikasi Anda menggunakan distribusi library klien yang benar.

    File appengine_config.py dalam contoh sebelumnya mengasumsikan bahwa folder lib berada di direktori kerja saat ini. Jika Anda tidak dapat menjamin bahwa lib akan selalu berada di direktori kerja saat ini, tentukan jalur lengkap ke folder lib. Contoh:

    import os
    path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib')
  6. Men-deploy aplikasi.

App Engine mengupload semua library dalam direktori yang Anda tentukan dalam file appengine_config.py ke runtime Python 2.

Menginstal library untuk aplikasi Python 3

Untuk menginstal library yang akan digunakan aplikasi Anda saat dijalankan di runtime Python 3:

  1. Tambahkan nama library untuk file requirements.txt aplikasi Anda. Contoh:

    google-cloud-ndb
    
  2. Men-deploy aplikasi.

App Engine secara otomatis mengupload semua library yang tercantum dalam file requirements.txt ke runtime Python 3.

Jalur migrasi untuk paket layanan App Engine

Blobstore

Untuk menyimpan dan mengambil data, gunakan Cloud Storage melalui Library Klien Cloud. Untuk memulai, lihat panduan Menggunakan Cloud Storage serta Bermigrasi dari Blobstore ke Cloud Storage. Untuk menyimulasikan migrasi ini, tambahkan penggunaan Blobstore ke aplikasi contoh, lalu migrasikan ke Cloud Storage.

Datastore

Jika aplikasi Python 2 Anda menggunakan NDB untuk berinteraksi dengan Datastore, migrasikan ke library Cloud NDB. Fungsi utama Cloud NDB adalah sebagai alat transisi untuk memigrasikan aplikasi Python 2. Aplikasi Python 3 sebaiknya menggunakan library klien mode Datastore.

Untuk mengetahui detailnya, baca Bermigrasi ke Cloud NDB. Untuk menyimulasikan migrasi ini dengan aplikasi contoh, lihat Bermigrasi dari App Engine ndb ke Cloud NDB.

Gambar

Anda dapat menayangkan gambar dari Cloud Storage, menayangkannya secara langsung, atau menggunakan jaringan penayangan konten (CDN) pihak ketiga.

Untuk mengubah ukuran, mengonversi, dan memanipulasi gambar, gunakan library pemrosesan gambar seperti Pillow atau antarmuka Python untuk ImageMagick.

Untuk menggunakan salah satu library pihak ketiga ini, tambahkan library sebagai dependensi dan update kode Anda untuk memanggil API library.

Layanan Gambar App Engine juga menyediakan fungsi untuk menghindari permintaan dinamis ke aplikasi Anda dengan menangani pengubahan ukuran gambar menggunakan URL penayangan. Jika menginginkan fungsi serupa, Anda dapat membuat gambar yang diubah ukurannya lebih awal dan menguploadnya ke Cloud Storage untuk ditayangkan. Anda juga dapat menggunakan layanan jaringan penayangan konten (CDN) pihak ketiga yang menawarkan pengubahan ukuran gambar.

Logging

Sebaiknya update aplikasi Anda untuk menggunakan Cloud Logging, yang mendukung fitur seperti melihat log di Logs Explorer, mendownload log, memfilter pesan menurut tingkat keparahan, dan menghubungkan pesan aplikasi dengan permintaan tertentu. Namun, jika lebih menyukai kemudahan daripada akurasi data, Anda dapat menulis log terstruktur ke stdout atau stderr. Untuk mengetahui informasi selengkapnya, baca artikel Menulis dan melihat log dan Bermigrasi ke Cloud Logging.

Email

Untuk mengirim email, gunakan penyedia email pihak ketiga seperti SendGrid, Mailgun, atau Mailjet. Semua layanan ini menawarkan API untuk mengirim email dari aplikasi. Saat ini, rekomendasi alternatif pihak ketiga untuk pesan masuk tidak tersedia.

Memcache

Untuk meng-cache data aplikasi, gunakan Memorystore for Redis.

Untuk mengetahui detailnya, baca Memigrasikan Memcache ke Memorystore. Untuk menyimulasikan migrasi ini, tambahkan penggunaan Memcache ke aplikasi contoh dan migrasikan ke Memorystore for Redis.

Untuk aplikasi yang menggunakan Memcache hanya untuk mengurangi latensi permintaan NDB (atau Cloud NDB), gunakan dukungan bawaan Cloud NDB untuk Redis, bukan Memcache atau Memorystore for Redis.

Modul

Untuk memperoleh informasi dan mengubah layanan aplikasi yang sedang berjalan, gunakan kombinasi variabel lingkungan dan App Engine Admin API:

Informasi layanan Cara mengakses
ID aplikasi saat ini Variabel lingkungan GAE_APPLICATION
ID project saat ini Variabel lingkungan GOOGLE_CLOUD_PROJECT
Nama layanan saat ini Variabel lingkungan GAE_SERVICE
Versi layanan saat ini Variabel lingkungan GAE_VERSION
ID instance saat ini Variabel lingkungan GAE_INSTANCE
Nama host default Metode apps.get Admin API
Daftar layanan Metode apps.services.list Admin API
Daftar versi layanan Metode apps.services.versions.list Admin API
Versi default untuk layanan, termasuk pemisahan traffic Metode apps.services.get Admin API
Daftar instance yang berjalan untuk versi Metode apps.services.versions.instances.list Admin API

Untuk informasi selengkapnya tentang data yang tersedia mengenai layanan yang berjalan milik aplikasi Anda, lihat lingkungan runtime Python 3 .

Namespace

API Namespace memungkinkan aplikasi multitenant untuk mempartisi data di seluruh tenant hanya dengan menentukan string namespace unik untuk setiap tenant.

Meskipun Datastore mendukung multitenancy secara langsung, layanan Google Cloud lainnya tidak. Jika aplikasi multitenant menggunakan layanan Google Cloud lainnya, Anda harus menangani multitenancy secara manual. Untuk memiliki instance layanan yang sepenuhnya terisolasi, Anda dapat membuat project baru secara terprogram menggunakan Cloud Resource Manager API dan mengakses resource di seluruh project.

OAuth

Daripada menggunakan layanan OAuth App Engine untuk memverifikasi token OAuth 2.0, gunakan metode oauth2.tokeninfo dari OAuth 2.0 API.

Hosting database penelusuran teks lengkap seperti Elasticsearch di Compute Engine, lalu akses dari layanan Anda.

Task queue

Layanan Task Queue App Engine tersedia dalam dua mode berbeda. Bermigrasi dari salah satu titik ke dua produk Cloud mandiri yang berbeda.

Tugas push

Daripada menggunakan layanan tugas push Task Queue App Engine untuk eksekusi kode asinkron, gunakan library klien Cloud Tasks dengan endpoint lingkungan standar Python 3 sebagai target. Untuk informasi selengkapnya, baca Memigrasikan push queue ke Cloud Tasks.

Untuk menyimulasikan migrasi ini dengan aplikasi contoh, baca Cara menggunakan push queue App Engine di aplikasi Flask dan bermigrasi ke Cloud Tasks.

Tugas pull

Jika Anda menggunakan layanan tugas pull Task Queue, misalnya, mengantrekan tugas atau pesan untuk diproses oleh worker terpisah, Cloud Pub/Sub dapat menjadi alternatif yang baik. Layanan ini menawarkan fungsi dan jaminan pengiriman yang serupa. Seperti layanan Cloud lainnya, Pub/Sub menyediakan library klien yang praktis untuk mengakses layanan. Untuk informasi selengkapnya, baca Menulis dan merespons pesan Pub/Sub dan panduan migrasi Tugas pull Task Queue ke Pub/Sub.

Untuk menyimulasikan migrasi ini dengan aplikasi contoh, baca penggunaan Cara menggunakan tugas pull App Engine ke aplikasi contoh dan bermigrasi ke Pub/Sub.

URL-fetch

Secara default, runtime Python 2.7 menggunakan layanan URL-fetch untuk menangani permintaan HTTP(S) keluar, meskipun Anda menggunakan library Python standar untuk mengeluarkan permintaan tersebut.

Jika aplikasi Anda menggunakan API URL-fetch secara langsung, misalnya untuk membuat permintaan asinkron, sebaiknya lakukan migrasi ke library Python standar seperti Library permintaan.

Untuk informasi selengkapnya, baca Memigrasikan Permintaan Keluar.

Autentikasi pengguna

Sebagai alternatif untuk API Pengguna, gunakan salah satu mekanisme autentikasi berbasis HTTP yang dijelaskan di halaman Autentikasi pengguna.