Lingkungan fleksibel App Engine tidak menyediakan library API yang ada di App Engine SDK. Jika memutuskan untuk memigrasikan aplikasi Anda dari lingkungan standar App Engine ke lingkungan fleksibel, Anda harus memperbarui kode agar dapat menggunakan layanan dan API yang tersedia di seluruh lingkungan Google Cloud.
Lihat bagian berikut untuk mengetahui petunjuk tentang cara memigrasikan layanan dan API tertentu dalam paket lama dari lingkungan standar ke lingkungan fleksibel.
Perbedaan antara lingkungan standar dan lingkungan fleksibel
Selain perbedaan utama yang diuraikan di sini,
jalur dengan /_ah/
tidak diblokir di lingkungan fleksibel. Jika aplikasi Anda di lingkungan standar menggunakan jalur dengan /_ah/
untuk mengakses layanan tertentu, lihat bagian untuk layanan yang sesuai di bawah ini.
Identitas aplikasi
Saat berjalan di lingkungan fleksibel, Anda dapat menggunakan kombinasi variabel lingkungan dan layanan Metadata Compute Engine untuk mendapatkan informasi tentang aplikasi Anda:
Info aplikasi | Cara mengakses |
---|---|
ID aplikasi/project | Variabel lingkungan GOOGLE_CLOUD_PROJECT atau resource /project/project-id di server metadata |
Nama host default | Metode App Engine Admin API apps.get |
Nama akun layanan | Resource /instance/service-accounts di server metadata |
Token akses OAuth 2.0 | Resource /instances/service-accounts di server metadata. Lihat dokumentasi Mengautentikasi dengan kredensial akun layanan Compute Engine |
Fungsi berikut tidak tersedia secara langsung:
- Tidak ada bucket Cloud Storage default untuk project Anda. Untuk menggunakan bucket di aplikasi, Anda dapat membuat bucket Cloud Storage dan menggunakan project ID sebagai nama bucket. Anda kemudian dapat menggunakan variabel lingkungan
GOOGLE_CLOUD_PROJECT
dalam aplikasi sebagai nama bucket. - Anda tidak dapat menandatangani blob dengan akun layanan default. Anda dapat mengatasi masalah ini menggunakan Identity and Access Management (IAM) API atau dengan memberikan kunci pribadi akun layanan ke aplikasi Anda saat melakukan deployment.
- Demikian pula, tidak ada API bawaan untuk mendapatkan sertifikat publik guna
memverifikasi tanda tangan. Namun, setiap sertifikat publik akun layanan
tersedia di
https://www.googleapis.com/robot/v1/metadata/x509/{service account email}
. - Perhatikan bahwa jika Anda menggunakan runtime Java, SystemProperty API App Engine tidak tersedia untuk lingkungan fleksibel App Engine. Namun, Anda dapat
menetapkan variabel lingkungan di
app.yaml
dan menggunakanSystem.env
untuk mendapatkan nilai, seperti yang dijelaskan dalam Menentukan variabel lingkungan.
Untuk mengetahui detail selengkapnya tentang variabel lingkungan, lihat halaman ringkasan runtime atau halaman referensi app.yaml
.
Thread latar belakang
Karena lingkungan fleksibel tidak memiliki batasan sandbox, Anda bebas untuk membuat thread atau proses yang berada di luar lingkungan permintaan. Anda biasanya tidak perlu menggunakan apa pun selain alat multipemrosesan atau threading bawaan bahasa Anda.
Blobstore
Penggunaan layanan Blobstore sebagian besar telah digantikan oleh lingkungan standar dan lingkungan fleksibel dengan Cloud Storage. Gunakan library klien Google Cloud untuk menyimpan dan mengambil data di Cloud Storage.
Untuk informasi selengkapnya, lihat Menggunakan Cloud Storage
Kemampuan
Tidak ada fungsi yang mirip dengan layanan Kemampuan yang tersedia di luar lingkungan standar.
WebSockets
Lingkungan fleksibel App Engine mendukung WebSockets. Untuk informasi selengkapnya, lihat Membuat koneksi persisten dengan WebSockets.
Firestore dalam mode Datastore (Datastore)
Anda dapat mengakses Datastore dari mana saja menggunakan Datastore API. Gunakan library klien Google Cloud untuk menyimpan dan mengambil data dari Datastore.
Data Datastore yang sama tersedia terlepas dari apakah Anda menggunakan library App Engine, library klien Google Cloud, atau memanggil API secara langsung.
Jika Anda menggunakan library Python ndb
dan lebih memilih akses Datastore bergaya NDB, sebaiknya Anda bermigrasi ke Cloud NDB. Lihat repositori Cloud NDB untuk mengetahui informasi selengkapnya.
Meskipun library klien Cloud NDB dan Datastore didukung pada Python 2 dan 3, dan berfungsi untuk lingkungan standar App Engine atau lingkungan fleksibel serta aplikasi non-App Engine, tujuan utamanya adalah untuk membantu developer Python 2
pindah dari paket layanan lama seperti App Engine ndb
.
Cloud NDB memiliki tujuan tambahan untuk mempertahankan pengalaman pengguna NDB.
Untuk mengetahui informasi selengkapnya, lihat Menggunakan Datastore.
Image
Layanan Image tidak tersedia di luar lingkungan standar. Namun, Anda dapat menyajikan gambar dengan mudah secara langsung dari aplikasi atau langsung dari Cloud Storage.
Jika perlu melakukan pemrosesan gambar, Anda dapat menginstal dan menggunakan library pemrosesan gambar apa pun, seperti:
- Pillow untuk Python
- ImageJ2, Notecalr, atau thumbnailator untuk Java
- imaging untuk Go
- GD atau ImageMagick untuk PHP
Layanan Gambar 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 image yang diubah ukurannya terlebih dahulu dan menguploadnya ke Cloud Storage untuk ditayangkan. Atau, Anda dapat menggunakan layanan jaringan penayangan konten (CDN) pihak ketiga yang menawarkan perubahan ukuran image.
Untuk referensi lainnya, lihat panduan berikut:
Logging
Seperti lingkungan standar, logging berfungsi secara otomatis di lingkungan fleksibel. Namun, log dikumpulkan dalam format yang berbeda.
Log tidak akan dikelompokkan berdasarkan permintaan, dan log dari stdout
serta stderr
dikumpulkan secara terpisah.
Jika Anda menginginkan lebih banyak kontrol atas logging aplikasi, kemampuan untuk mengelompokkan log, dan kemampuan untuk mencatat metadata tambahan, Anda dapat menggunakan Cloud Logging API secara langsung dengan Library klien Google Cloud.
Untuk mengetahui detail selengkapnya, lihat Menulis log aplikasi.
Layanan Email App Engine tidak tersedia di luar lingkungan standar. Anda harus menggunakan penyedia email pihak ketiga seperti SendGrid, Mailgun, atau Mailjet untuk kirim email. Semua layanan ini menawarkan API untuk mengirim email dari aplikasi yang berjalan di mana saja.
Untuk mengetahui detail selengkapnya, lihat Mengirim pesan dengan layanan pihak ketiga.
Memcache
Layanan Memcache tidak tersedia di lingkungan fleksibel App Engine. Untuk meng-cache data aplikasi, gunakan Memorystore untuk Redis.
Modul
Modules API tidak tersedia di luar lingkungan standar. Namun, Anda dapat menggunakan kombinasi variabel lingkungan dan App Engine Admin API untuk mendapatkan informasi tentang dan mengubah layanan aplikasi yang berjalan:
Informasi layanan | Cara mengakses |
---|---|
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 App Engine Admin API apps.get |
Daftar layanan | Metode App Engine Admin API apps.services.list |
Daftar versi layanan | Metode App Engine Admin API apps.services.versions.list |
Versi default untuk layanan, termasuk pemisahan traffic | Metode App Engine Admin API apps.services.get |
Daftar instance yang berjalan untuk versi | Metode App Engine Admin API apps.services.versions.instances.list |
Anda juga dapat menggunakan App Engine Admin API untuk deploy dan mengelola layanan serta versi di aplikasi Anda.
Untuk mengetahui detail selengkapnya tentang variabel lingkungan, lihat halaman ringkasan runtime atau halaman referensi app.yaml
.
Namespace
Di luar lingkungan standar, hanya Datastore yang mendukung multitenancy secara langsung. Untuk layanan lain, Anda perlu 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 berbagai project.
OAuth
Layanan OAuth tidak tersedia di lingkungan fleksibel. Jika perlu memverifikasi token OAuth 2.0, Anda dapat melakukannya dengan metode oauth2.tokeninfo
dari OAuth 2.0 API singkat ini.
Remote
Layanan Remote API tidak berlaku untuk lingkungan fleksibel. Sebagian besar layanan pendukung, seperti Datastore, yang dapat diakses dari lingkungan fleksibel juga dapat diakses dari mana saja.
Penelusuran
Layanan Penelusuran saat ini tidak tersedia di luar lingkungan fleksibel. Anda dapat menghosting database penelusuran teks lengkap seperti ElasticSearch di Compute Engine dan mengaksesnya dari lingkungan standar dan lingkungan fleksibel.
Soket
Lingkungan fleksibel tidak memiliki pembatasan sandbox, sehingga Anda dapat membuka dan menggunakan soket keluar secara normal.
Antrean Tugas
Untuk menggunakan layanan Antrean Tugas push di luar lingkungan standar generasi pertama, Anda dapat menggunakan Google Tasks.
Dalam banyak kasus saat Anda mungkin menggunakan pull queue, seperti tugas mengantre atau pesan yang akan ditarik dan diproses oleh pekerja terpisah, Pub/Sub dapat menjadi alternatif yang baik karena menawarkan fungsionalitas dan jaminan pengiriman yang serupa.
URL Fetch
Layanan URL Fetch tidak tersedia di lingkungan fleksibel. Namun, tidak ada pembatasan sandbox, sehingga aplikasi Anda dapat menggunakan library HTTP apa pun untuk mendapatkan fungsi URL Fetch.
Jika Anda menggunakan Python, sebaiknya gunakan Requests. Jika Anda menggunakan Java, sebaiknya gunakan Library Klien HTTP Google untuk Java atau OkHttp.
Pengguna
Layanan Pengguna tidak tersedia di luar lingkungan standar. Anda dapat menggunakan mekanisme autentikasi berbasis HTTP apa pun di lingkungan fleksibel, seperti:
- Google Identity Platform, yang menyediakan banyak opsi untuk autentikasi dan otorisasi akun pengguna Google.
- Firebase Authentication, yang menyediakan autentikasi menggunakan nama pengguna/sandi dan identitas gabungan menggunakan Google, Facebook, Twitter, dan lain-lain.
- Auth0, yang menyediakan autentikasi dengan berbagai penyedia identitas dan fitur single sign-on.
- OAuth 2.0 dan OpenID Connect yang memberikan identitas gabungan dari penyedia pilihan Anda. Google adalah penyedia identitas OpenID Connect. Ada juga beberapa penyedia lain yang tersedia.
Perhatikan bahwa karena layanan Pengguna tidak tersedia, Anda tidak dapat menggunakan
appengine-web.xml
untuk Java atau
app.yaml
untuk runtime lainnya guna membuat URL yang
hanya dapat diakses oleh administrator. Anda harus menangani logika ini dalam aplikasi.
Langkah selanjutnya
Untuk ringkasan perbedaan utama antara lingkungan fleksibel dan lingkungan standar dengan panduan untuk aplikasi yang menggunakan kedua lingkungan tersebut, lihat lingkungan fleksibel App Engine untuk pengguna lingkungan standar.