Memulai App Engine (Python 3)

1. Ringkasan

befa7a877ccdd35d.png

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?

Hanya membacanya Membacanya dan menyelesaikan latihan

Bagaimana penilaian Anda terhadap pengalaman dengan Python?

Pemula Menengah Mahir

Bagaimana Anda menilai pengalaman Anda dengan layanan Google Cloud?

Pemula Menengah Mahir

2. Penyiapan dan persyaratan

Penyiapan lingkungan mandiri

  1. 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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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

  1. Dari Cloud Console, klik Aktifkan Cloud Shell 853e55310c205094.pngS.

3c1dabeca90e44e5.pngS

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.

9c92662c6a846a5c.pngS

Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.

9f0e51b578fecce5.pngS

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.

  1. 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`
  1. 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:

10af7b1a6240e9f4.gif

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

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.