1. Ringkasan
Aplikasi Google App Engine mudah dibuat, mudah dikelola, dan mudah diskalakan sesuai kebutuhan traffic dan penyimpanan data Anda. Dengan App Engine, tidak ada server yang harus dipelihara. Anda cukup mengupload aplikasi dan siap digunakan.
Dalam codelab ini, Anda akan mempelajari cara men-deploy aplikasi web Python sederhana yang ditulis dengan framework web Flask. Meskipun contoh ini menggunakan Flask, Anda dapat menggunakan framework web yang lain, termasuk Django, Pyramid, Bottle, dan web.py.
Tutorial ini diadaptasi dari https://cloud.google.com/appengine/docs/standard/python3/quickstart
Yang akan Anda pelajari
- Cara membuat server Python sederhana di Google App Engine.
- Cara mengupdate kode tanpa menonaktifkan server.
Yang Anda butuhkan
- Pemahaman dalam menggunakan Python
- Pemahaman tentang editor teks Linux standar, seperti vim, emacs, atau nano
Survei
Bagaimana Anda akan menggunakan tutorial ini?
Bagaimana penilaian Anda terhadap pengalaman dengan Python?
Bagaimana Anda menilai pengalaman Anda dengan layanan Google Cloud?
2. Penyiapan dan persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai
PROJECT_ID
). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan secara jarak jauh dari laptop Anda, dalam codelab ini Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Cloud.
Mengaktifkan Cloud Shell
- Dari Cloud Console, klik Aktifkan Cloud Shell .
Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.
Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.
Mesin virtual ini dimuat dengan semua alat pengembangan yang diperlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.
Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list
Output perintah
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project
Output perintah
[core] project = <PROJECT_ID>
Jika tidak, Anda dapat menyetelnya dengan perintah ini:
gcloud config set project <PROJECT_ID>
Output perintah
Updated property [core/project].
3. Menulis aplikasi web
Setelah Cloud Shell diluncurkan, Anda dapat menggunakan command line untuk memanggil perintah gcloud
Cloud SDK atau alat lain yang tersedia di instance virtual machine. Anda dapat menggunakan direktori $HOME
dalam penyimpanan persistent disk untuk menyimpan file di seluruh project dan di antara sesi Cloud Shell. Direktori $HOME
Anda bersifat pribadi dan tidak dapat diakses oleh pengguna lain.
Mari kita mulai dengan membuat folder baru di direktori $HOME
Anda untuk aplikasi:
mkdir ~/helloworld cd ~/helloworld
Buat file bernama main.py
:
touch main.py
Edit file dengan editor command line pilihan Anda (nano, vim, atau emacs) atau dengan mengklik tombol Cloud Shell Editor:
Untuk mengedit file secara langsung dengan Cloud Shell Editor, gunakan perintah ini:
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
return "Hello World!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
4. Menentukan dependensi
Untuk menentukan dependensi aplikasi web Anda, kembali ke terminal dan buat file requirements.txt
di direktori utama project, dengan versi Flask yang tepat untuk digunakan:
touch requirements.txt
Untuk mengedit file dengan Cloud Shell Editor, gunakan perintah ini:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/Flask
Flask==3.0.2
5. Mengonfigurasi deployment
Untuk men-deploy aplikasi web ke App Engine, Anda memerlukan file app.yaml
. File konfigurasi ini menentukan setelan aplikasi web Anda untuk App Engine.
Dari terminal, buat dan edit file app.yaml
di direktori utama project:
touch app.yaml
Untuk mengedit file dengan Cloud Shell Editor, gunakan perintah ini:
cloudshell edit app.yaml
app.yaml
runtime: python312
6. Men-deploy aplikasi web
Dari terminal, periksa konten direktori Anda:
ls
Anda harus memiliki 3 file berikut:
app.yaml main.py requirements.txt
Deploy aplikasi web Anda dengan perintah berikut:
gcloud app deploy
Pertama kali, Anda harus memilih region deployment:
Please choose the region where you want your App Engine application located: [1] asia-east2 ... [7] australia-southeast1 [8] europe-west [9] europe-west2 ... [12] northamerica-northeast1 [13] southamerica-east1 ... [19] us-west4 ... Please enter your numeric choice:
Konfirmasi untuk meluncurkan deployment:
Creating App Engine application in project [PROJECT_ID] and region [REGION]....done. Services to deploy: descriptor: [~/helloworld/app.yaml] source: [~/helloworld] target project: [PROJECT_ID] target service: [default] target version: [YYYYMMDDtHHMMSS] target url: [https://PROJECT_ID.REGION_ID.r.appspot.com] Do you want to continue (Y/n)?
Aplikasi Anda di-deploy:
Beginning deployment of service [default]... Created .gcloudignore file. See `gcloud topic gcloudignore` for details. Uploading 3 files to Google Cloud Storage 100% File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Aplikasi web Anda kini siap merespons permintaan HTTP di https://PROJECT_ID.REGION_ID.r.appspot.com
.
7. Menguji aplikasi web
Aplikasi web Anda siap merespons permintaan HTTP di https://PROJECT_ID.REGION_ID.r.appspot.com
.
Pertama, ambil nama host aplikasi web dengan perintah gcloud app describe
:
APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")
Uji aplikasi web Anda dengan permintaan HTTP GET sederhana ini:
curl https://$APPENGINE_HOSTNAME
Anda akan mendapatkan jawaban berikut:
Hello World!
Ringkasan
Pada langkah sebelumnya, Anda menyiapkan aplikasi web Python sederhana, menjalankan, dan men-deploy aplikasi di App Engine.
8. Update aplikasi web
Ubah aplikasi web Anda dengan mengubah isi fungsi hello()
di file main.py
.
Untuk mengedit file dengan Cloud Shell Editor, gunakan perintah ini:
cloudshell edit main.py
main.py
import flask
# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)
@app.get("/")
def hello():
"""Return a friendly HTTP greeting."""
# return "Hello World!\n" # ← Replace this line
who = flask.request.args.get("who", "World")
return f"Hello {who}!\n"
if __name__ == "__main__":
# Used when running locally only. When deploying to Google App
# Engine, a webserver process such as Gunicorn will serve the app. This
# can be configured by adding an `entrypoint` to app.yaml.
app.run(host="localhost", port=8080, debug=True)
Dari terminal, deploy ulang untuk mengupdate aplikasi web Anda:
gcloud app deploy --quiet
Versi baru aplikasi Anda sudah di-deploy:
Beginning deployment of service [default]... Uploading 1 file to Google Cloud Storage ... Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Uji versi baru aplikasi web Anda, persis seperti yang Anda lakukan sebelumnya:
curl https://$APPENGINE_HOSTNAME
Anda akan mendapatkan jawaban yang sama:
Hello World!
Uji dengan parameter opsional:
curl https://$APPENGINE_HOSTNAME?who=Universe
Anda akan mendapatkan jawaban berikut:
Hello Universe!
Ringkasan
Pada langkah ini, Anda telah mengupdate dan men-deploy ulang aplikasi web tanpa gangguan layanan.
9. Selamat!
Anda telah belajar menulis aplikasi web App Engine pertama Anda di Python!
Pelajari lebih lanjut
- Dokumentasi App Engine: https://cloud.google.com/appengine
- Pelajari tutorial ini untuk menulis aplikasi Python yang sudah lengkap di App Engine: https://cloud.google.com/appengine/docs/standard/python3/building-app
Lisensi
Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.