Dengan runtime Ruby, Anda dapat menjalankan aplikasi di App Engine dalam lingkungan sandbox. Dokumen ini menjelaskan detail lingkungan runtime Ruby, termasuk header yang disediakan untuk kode Anda dan informasi lainnya agar berhasil men-deploy aplikasi di App Engine.
Tentukan runtime Ruby untuk App Engine di lingkungan standar dalam file app.yaml
:
runtime: rubyVERSION
Dengan VERSION adalah nomor versi Ruby MAJOR
dan MINOR
. Misalnya, untuk menggunakan versi Ruby terbaru, Ruby 3.3, tentukan 33
.
Untuk versi Ruby lainnya yang didukung, dan versi Ubuntu yang sesuai untuk versi Ruby Anda, lihat Jadwal dukungan runtime.
Versi Ruby
Runtime Ruby menggunakan rilis stabil terbaru dari versi yang ditentukan dalam file app.yaml
Anda. App Engine secara otomatis diupdate ke versi rilis patch baru, tetapi tidak akan otomatis mengupdate versi minor.
Misalnya, aplikasi Anda mungkin di-deploy di Ruby 2.6.0 dan secara otomatis diupdate ke versi 2.6.1 pada deployment berikutnya, tetapi tidak akan diupdate secara otomatis ke Ruby 2.7.
Dependensi
Untuk mengetahui informasi selengkapnya tentang mendeklarasikan dan mengelola dependensi, lihat Menentukan dependensi.
Startup aplikasi
Runtime memulai aplikasi Anda menggunakan entrypoint
yang ditentukan dalam app.yaml
. Titik entri akan memulai proses yang merespons permintaan HTTP di port yang ditentukan oleh variabel lingkungan PORT
.
Contoh:
entrypoint: bundle exec rails server -p $PORT
Sebagian besar aplikasi web menggunakan server web yang didukung Rack seperti Puma, Unicorn, atau Thin.
Anda harus menambahkan server sebagai dependensi di file konfigurasi Gemfile
aplikasi Anda. Runtime akan menginstal semua dependensi sebelum titik entri Anda dipanggil.
source "https://rubygems.org"
gem "rack"
gem "puma"
Contoh titik entri yang menggunakan puma untuk aplikasi Rails:
entrypoint: bundle exec rails server Puma -p $PORT
Contoh titik entri yang menggunakan puma untuk aplikasi Rack apa pun:
entrypoint: bundle exec rackup -s Puma -p $PORT
Untuk aplikasi yang dapat menangani permintaan tanpa server Rack, Anda cukup menjalankan skrip ruby:
entrypoint: bundle exec ruby app.rb
Variabel lingkungan
Variabel lingkungan berikut ditetapkan oleh runtime:
Variabel lingkungan | Deskripsi |
---|---|
GAE_APPLICATION
|
ID aplikasi App Engine Anda. ID ini diawali dengan 'region code~' seperti 'e~' untuk aplikasi yang di-deploy di Eropa. |
GAE_DEPLOYMENT_ID |
ID deployment saat ini. |
GAE_ENV |
Lingkungan App Engine. Tetapkan ke standard . |
GAE_INSTANCE |
ID instance di mana layanan Anda saat ini berjalan. |
GAE_MEMORY_MB |
Jumlah memori yang tersedia untuk proses aplikasi, dalam MB. |
GAE_RUNTIME |
Runtime yang ditentukan dalam file app.yaml Anda. |
GAE_SERVICE |
Nama layanan yang ditentukan dalam file app.yaml Anda. Jika tidak ada nama layanan yang ditentukan, nama akan ditetapkan ke default . |
GAE_VERSION |
Label versi layanan Anda saat ini. |
GOOGLE_CLOUD_PROJECT |
ID project Google Cloud yang terkait dengan aplikasi Anda. |
PORT |
Port yang menerima permintaan HTTP. |
NODE_ENV (Hanya tersedia di runtime Node.js) |
Tetapkan ke production saat layanan Anda di-deploy. |
Anda dapat menentukan variabel lingkungan tambahan dalam file app.yaml
, tetapi nilai di atas tidak dapat diganti, kecuali untuk NODE_ENV
.
HTTPS dan proxy penerusan
App Engine menghentikan koneksi HTTPS di load balancer dan meneruskan permintaan ke aplikasi Anda. Beberapa aplikasi perlu menentukan IP dan protokol permintaan asli. Alamat IP pengguna tersedia di header X-Forwarded-For
standar. Aplikasi yang memerlukan informasi ini harus mengonfigurasi framework webnya untuk memercayai proxy.
Filesystem
Runtime ini menyertakan direktori /tmp
yang dapat ditulis, beserta dengan semua direktori lain
yang memiliki akses hanya baca. Menulis ke /tmp
akan menggunakan memori sistem. Untuk mengetahui informasi selengkapnya, lihat dokumentasi TempDir
dan TempFile
.
Server metadata
Setiap instance aplikasi Anda dapat menggunakan server metadata App Engine untuk mengkueri informasi tentang instance dan project Anda.
Anda dapat mengakses server metadata melalui endpoint berikut:
http://metadata
http://metadata.google.internal
Permintaan yang dikirim ke server metadata harus menyertakan header permintaan Metadata-Flavor: Google
. Header ini menunjukkan bahwa permintaan dikirim dengan tujuan mengambil nilai metadata.
Tabel berikut mencantumkan daftar endpoint tempat Anda dapat membuat permintaan HTTP untuk metadata tertentu:
Endpoint metadata | Deskripsi |
---|---|
/computeMetadata/v1/project/numeric-project-id |
Nomor project yang ditetapkan ke project Anda. |
/computeMetadata/v1/project/project-id |
Project ID yang ditetapkan ke project Anda. |
/computeMetadata/v1/instance/region |
Region di mana instance berjalan. |
/computeMetadata/v1/instance/service-accounts/default/aliases |
|
/computeMetadata/v1/instance/service-accounts/default/email |
Email akun layanan default yang ditetapkan ke project Anda. |
/computeMetadata/v1/instance/service-accounts/default/ |
Mencantumkan semua akun layanan default untuk project Anda. |
/computeMetadata/v1/instance/service-accounts/default/scopes |
Mencantumkan semua cakupan yang didukung untuk akun layanan default. |
/computeMetadata/v1/instance/service-accounts/default/token |
Menampilkan token autentikasi yang dapat digunakan untuk mengautentikasi aplikasi Anda ke Google Cloud API lain. |
Misalnya, untuk mengambil project ID Anda, kirim permintaan ke http://metadata.google.internal/computeMetadata/v1/project/project-id
.