1. Ringkasan
Rangkaian codelab ini (tutorial praktik mandiri) bertujuan untuk membantu developer memahami berbagai opsi yang mereka miliki saat men-deploy aplikasi. Dalam codelab ini, Anda akan mempelajari cara menggunakan Google Cloud Translation API dengan Python dan menjalankannya secara lokal atau men-deploy ke platform komputasi serverless Cloud (App Engine, Cloud Functions, atau Cloud Run). Aplikasi contoh yang ditemukan di repo tutorial ini dapat di-deploy (setidaknya) dengan delapan cara berbeda hanya dengan perubahan konfigurasi kecil:
- Server Flask lokal (Python 2)
- Server Flask lokal (Python 3)
- App Engine (Python 2)
- App Engine (Python 3)
- Cloud Functions (Python 3)
- Cloud Run (Python 2 melalui Docker)
- Cloud Run (Python 3 melalui Docker)
- Cloud Run (Python 3 melalui Cloud Buildpacks)
Codelab ini berfokus pada deployment aplikasi ini ke platform yang dicetak tebal di atas.
Anda akan mempelajari cara
- Menggunakan Google Cloud API, khususnya Cloud Translation API (advanced/v3)
- Menjalankan aplikasi web dasar secara lokal atau men-deploy ke platform komputasi serverless Cloud
Yang Anda butuhkan
- Project Google Cloud dengan akun Penagihan Cloud yang aktif
- Flask yang diinstal untuk dijalankan secara lokal, atau platform komputasi serverless Cloud yang diaktifkan untuk deployment berbasis cloud
- Keterampilan Python dasar
- Pengetahuan perintah sistem operasi dasar yang berfungsi
Survei
Bagaimana Anda akan menggunakan tutorial ini?
Bagaimana penilaian Anda terhadap pengalaman dengan Python?
Bagaimana penilaian Anda terhadap pengalaman menggunakan 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, dan Anda dapat memperbaruinya kapan saja.
- Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID
). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat. - Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
3. Mengaktifkan Translation API
Untuk aplikasi contoh kami, Anda akan mengaktifkan Cloud Translation API dan layanan App Engine menggunakan petunjuk serupa yang diberikan di bawah.
Mengaktifkan Cloud API
Pengantar
Apa pun Google API yang ingin Anda gunakan di aplikasi, API tersebut harus diaktifkan. Contoh berikut menunjukkan dua cara untuk mengaktifkan Cloud Vision API. Setelah mempelajari cara mengaktifkan satu Cloud API, Anda dapat mengaktifkan API lainnya karena prosesnya serupa.
Opsi 1: Dari Cloud Shell atau antarmuka command line Anda
Meskipun mengaktifkan API dari Cloud Console lebih umum, beberapa developer lebih suka melakukan semuanya dari command line. Untuk melakukannya, Anda perlu mencari "nama layanan" API. URL ini terlihat seperti URL: SERVICE_NAME
.googleapis.com
. Anda dapat menemukannya di Diagram produk yang didukung, atau Anda dapat membuat kueri secara terprogram dengan Google Discovery API.
Dengan informasi ini, menggunakan Cloud Shell (atau lingkungan pengembangan lokal dengan alat command line gcloud
yang diinstal), Anda dapat mengaktifkan API, sebagai berikut:
gcloud services enable SERVICE_NAME.googleapis.com
Misalnya, perintah ini mengaktifkan Cloud Vision API:
gcloud services enable vision.googleapis.com
Perintah ini mengaktifkan App Engine:
gcloud services enable appengine.googleapis.com
Anda juga dapat mengaktifkan beberapa API dengan satu permintaan. Misalnya, command line ini mengaktifkan Cloud Run, Cloud Artifact Registry, dan Cloud Translation API:
gcloud services enable artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com
Opsi 2: Dari Cloud Console
Anda juga dapat mengaktifkan Vision API di Pengelola API. Dari Cloud Console, buka Pengelola API, lalu pilih Library.
Jika Anda ingin mengaktifkan Cloud Vision API, mulai masukkan "vision" di kotak penelusuran, dan semua yang cocok dengan yang telah Anda masukkan sejauh ini akan muncul:
Pilih API yang ingin Anda aktifkan, lalu klik Aktifkan:
Biaya
Meskipun banyak Google API yang dapat digunakan tanpa biaya, penggunaan produk & API Google Cloud tidak gratis. Saat mengaktifkan Cloud API, Anda mungkin diminta untuk memberikan akun penagihan yang aktif. Namun, penting untuk diperhatikan bahwa beberapa produk Google Cloud memiliki paket "Selalu Gratis" (harian/bulanan), yang harus Anda lampaui agar muncul tagihan. Jika tidak, kartu kredit Anda (atau instrumen penagihan yang ditentukan) tidak akan ditagih.
Pengguna harus merujuk pada informasi harga untuk API apa pun sebelum mengaktifkannya, terutama dengan memperhatikan apakah API tersebut memiliki paket gratis, dan jika ya, apa paketnya. Jika Anda mengaktifkan Cloud Vision API, Anda akan memeriksa halaman informasi harganya. Cloud Vision memiliki kuota gratis, dan selama Anda tidak melebihi batas agregat (dalam setiap bulan), Anda tidak akan dikenai biaya apa pun.
Harga dan paket gratis bervariasi di antara Google API. Contoh:
- Google Cloud/GCP — setiap produk ditagih secara berbeda dan umumnya menggunakan pembayaran per siklus vCPU, konsumen penyimpanan, penggunaan memori, atau pembayaran per penggunaan; lihat informasi paket gratis di atas.
- Google Maps — memiliki serangkaian API dan menawarkan kredit bulanan gratis sebesar$200 USD secara keseluruhan kepada pengguna.
- API Google Workspace (sebelumnya G Suite) — menyediakan penggunaan gratis (hingga batas tertentu) yang tercakup dalam biaya langganan bulanan Workspace, sehingga tidak ada penagihan langsung untuk penggunaan API Gmail, Google Drive, Kalender, Dokumen, Spreadsheet, dan Slide.
Produk Google yang berbeda ditagih secara berbeda, jadi pastikan untuk merujuk dokumentasi API Anda untuk informasi tersebut.
Ringkasan
Setelah Anda mengetahui cara mengaktifkan Google API secara umum, buka API Manager dan aktifkan Cloud Translation API dan layanan App Engine (jika Anda belum melakukannya), yang pertama karena aplikasi kita akan menggunakannya, dan yang kedua karena Anda men-deploy aplikasi App Engine. Jika Anda lebih suka melakukannya dari command line, jalankan perintah ini:
gcloud services enable appengine.googleapis.com translate.googleapis.com
Meskipun kuota bulanannya tidak tercantum di halaman ringkasan tingkat "Selalu Gratis" secara keseluruhan, halaman harga Translation API menyatakan bahwa semua pengguna mendapatkan jumlah karakter terjemahan tetap setiap bulan. Anda tidak akan dikenai biaya apa pun dari API jika tetap berada di bawah nilai minimum tersebut. Jika ada tagihan lain terkait Google Cloud, tagihan tersebut akan dibahas di bagian "Pembersihan" di akhir.
4. Mendapatkan kode aplikasi contoh
Clone kode di repo secara lokal atau di Cloud Shell (menggunakan perintah git clone
), atau download file ZIP dari tombol Code hijau seperti yang ditunjukkan pada screenshot berikut:
Setelah Anda memiliki semuanya, buat salinan lengkap folder untuk melakukan tutorial khusus ini, karena tutorial ini mungkin akan melibatkan penghapusan atau perubahan file. Jika ingin melakukan deployment yang berbeda, Anda dapat memulai dari awal dengan menyalin yang asli sehingga tidak perlu meng-clone atau mendownloadnya lagi.
5. Tur aplikasi contoh
Aplikasi contoh adalah turunan Google Terjemahan sederhana yang meminta pengguna memasukkan teks dalam bahasa Inggris dan menerima terjemahan yang setara dari teks tersebut dalam bahasa Spanyol. Sekarang buka file main.py
agar kita dapat melihat cara kerjanya. Jika baris yang dikomentari tentang pemberian lisensi dihilangkan, tampilannya akan terlihat seperti ini di bagian atas dan bawah:
from flask import Flask, render_template, request
import google.auth
from google.cloud import translate
app = Flask(__name__)
_, PROJECT_ID = google.auth.default()
TRANSLATE = translate.TranslationServiceClient()
PARENT = 'projects/{}'.format(PROJECT_ID)
SOURCE, TARGET = ('en', 'English'), ('es', 'Spanish')
# . . . [translate() function definition] . . .
if __name__ == '__main__':
import os
app.run(debug=True, threaded=True, host='0.0.0.0',
port=int(os.environ.get('PORT', 8080)))
- Impor ini akan menghadirkan fungsi Flask, modul
google.auth
, dan library klien Cloud Translation API. - Variabel global mewakili aplikasi Flask, project ID Cloud, klien Translation API, "jalur lokasi" induk untuk panggilan Translation API, serta bahasa sumber dan target. Dalam hal ini, bahasanya adalah Inggris (
en
) dan Spanyol (es
), tetapi Anda dapat mengubah nilai ini ke kode bahasa lain yang didukung oleh Cloud Translation API. - Blok
if
besar di bagian bawah digunakan dalam tutorial untuk menjalankan aplikasi ini secara lokal—blok ini menggunakan server pengembangan Flask untuk menayangkan aplikasi kita. Bagian ini juga ada di sini untuk tutorial deployment Cloud Run jika server web tidak dipaketkan ke dalam penampung. Anda diminta untuk mengaktifkan penggabungan server dalam penampung, tetapi jika Anda mengabaikannya, kode aplikasi akan kembali menggunakan server pengembangan Flask. (Ini bukan masalah dengan App Engine atau Cloud Functions karena keduanya adalah platform berbasis sumber, yang berarti Google Cloud menyediakan dan menjalankan server web default.)
Terakhir, di tengah main.py
adalah inti aplikasi, fungsi translate()
:
@app.route('/', methods=['GET', 'POST'])
def translate(gcf_request=None):
"""
main handler - show form and possibly previous translation
"""
# Flask Request object passed in for Cloud Functions
# (use gcf_request for GCF but flask.request otherwise)
local_request = gcf_request if gcf_request else request
# reset all variables (GET)
text = translated = None
# if there is data to process (POST)
if local_request.method == 'POST':
text = local_request.form['text']
data = {
'contents': [text],
'parent': PARENT,
'target_language_code': TARGET[0],
}
# handle older call for backwards-compatibility
try:
rsp = TRANSLATE.translate_text(request=data)
except TypeError:
rsp = TRANSLATE.translate_text(**data)
translated = rsp.translations[0].translated_text
# create context & render template
context = {
'orig': {'text': text, 'lc': SOURCE},
'trans': {'text': translated, 'lc': TARGET},
}
return render_template('index.html', **context)
Fungsi utama melakukan pekerjaan mengambil input pengguna, dan memanggil Translation API untuk melakukan pekerjaan berat. Mari kita bahas satu per satu:
- Periksa apakah permintaan berasal dari Cloud Functions menggunakan variabel
local_request
. Cloud Functions mengirimkan objek Permintaan Flask-nya sendiri, sedangkan semua yang lain (berjalan secara lokal atau di-deploy ke App Engine atau Cloud Run) akan mendapatkan objek permintaan langsung dari Flask. - Reset variabel dasar untuk formulir. Hal ini terutama untuk permintaan GET karena permintaan POST akan memiliki data yang menggantikannya.
- Jika permintaannya adalah POST, ambil teks yang akan diterjemahkan, dan buat struktur JSON yang mewakili persyaratan metadata API. Kemudian, panggil API, yang akan kembali ke versi API sebelumnya jika pengguna menggunakan library yang lebih lama.
- Apa pun hasilnya, format hasil sebenarnya (POST) atau tidak ada data (GET) ke dalam konteks template dan render.
Bagian visual aplikasi ada dalam file index.html
template. Halaman ini menampilkan hasil terjemahan sebelumnya (kosong jika tidak ada) diikuti dengan formulir yang meminta sesuatu untuk diterjemahkan:
<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<h2>My Google Translate (1990s edition)</h2>
{% if trans['text'] %}
<h4>Previous translation</h4>
<li><b>Original</b>: {{ orig['text'] }} (<i>{{ orig['lc'][0] }}</i>)</li>
<li><b>Translated</b>: {{ trans['text'] }} (<i>{{ trans['lc'][0] }}</i>)</li>
{% endif %}
<h4>Enter <i>{{ orig['lc'][1] }}</i> text to translate to <i>{{ trans['lc'][1] }}</i>:</h4>
<form method="POST"><input name="text"><input type="submit"></form>
</body></html>
6. Menginstal paket/dependensi lokal (ke dalam lib)
Seperti yang disebutkan sebelumnya, aplikasi contoh menggunakan framework web mikro Flask dan library klien Google Cloud Translation API untuk Python. Instal dan update pip
beserta sepasang paket ini dengan perintah pip
(atau pip3
) ini:
pip install -t lib -r requirements.txt
Setelah menjalankan komentar di atas, Anda akan melihat output penginstalan yang mungkin terlihat seperti ini:
$ pip install -t lib -r requirements.txt DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. pip 21.0 will drop support for Python 2.7 in January 2021. More details about Python 2 support in pip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality. Collecting flask>=1.1.2 Using cached Flask-1.1.4-py2.py3-none-any.whl (94 kB) Collecting google-cloud-translate>=2.0.1 Using cached google_cloud_translate-2.0.2-py2.py3-none-any.whl (91 kB) Collecting click<8.0,>=5.1 Using cached click-7.1.2-py2.py3-none-any.whl (82 kB) Collecting Jinja2<3.0,>=2.10.1 Using cached Jinja2-2.11.3-py2.py3-none-any.whl (125 kB) Collecting Werkzeug<2.0,>=0.15 Using cached Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB) Collecting itsdangerous<2.0,>=0.24 Using cached itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB) Collecting google-api-core[grpc]<2.0.0dev,>=1.15.0 Downloading google_api_core-1.29.0-py2.py3-none-any.whl (93 kB) |████████████████████████████████| 93 kB 2.1 MB/s Collecting google-cloud-core<2.0dev,>=1.1.0 Using cached google_cloud_core-1.6.0-py2.py3-none-any.whl (28 kB) Collecting MarkupSafe>=0.23 Using cached MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl (17 kB) Collecting protobuf>=3.12.0 Downloading protobuf-3.17.2-cp27-cp27m-macosx_10_9_x86_64.whl (958 kB) |████████████████████████████████| 958 kB 21.6 MB/s Collecting futures>=3.2.0; python_version < "3.2" Using cached futures-3.3.0-py2-none-any.whl (16 kB) Collecting six>=1.13.0 Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting packaging>=14.3 Using cached packaging-20.9-py2.py3-none-any.whl (40 kB) Collecting googleapis-common-protos<2.0dev,>=1.6.0 Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB) Collecting requests<3.0.0dev,>=2.18.0 Using cached requests-2.25.1-py2.py3-none-any.whl (61 kB) Collecting google-auth<2.0dev,>=1.25.0 Using cached google_auth-1.30.1-py2.py3-none-any.whl (146 kB) Collecting pytz Using cached pytz-2021.1-py2.py3-none-any.whl (510 kB) Collecting setuptools>=40.3.0 Using cached setuptools-44.1.1-py2.py3-none-any.whl (583 kB) Collecting grpcio<2.0dev,>=1.29.0; extra == "grpc" Using cached grpcio-1.38.0-cp27-cp27m-macosx_10_10_x86_64.whl (3.8 MB) Collecting pyparsing>=2.0.2 Using cached pyparsing-2.4.7-py2.py3-none-any.whl (67 kB) Collecting chardet<5,>=3.0.2 Using cached chardet-4.0.0-py2.py3-none-any.whl (178 kB) Collecting urllib3<1.27,>=1.21.1 Using cached urllib3-1.26.5-py2.py3-none-any.whl (138 kB) Collecting idna<3,>=2.5 Using cached idna-2.10-py2.py3-none-any.whl (58 kB) Collecting certifi>=2017.4.17 Downloading certifi-2021.5.30-py2.py3-none-any.whl (145 kB) |████████████████████████████████| 145 kB 61.1 MB/s Collecting pyasn1-modules>=0.2.1 Using cached pyasn1_modules-0.2.8-py2.py3-none-any.whl (155 kB) Collecting rsa<4.6; python_version < "3.6" Using cached rsa-4.5-py2.py3-none-any.whl (36 kB) Collecting cachetools<5.0,>=2.0.0 Using cached cachetools-3.1.1-py2.py3-none-any.whl (11 kB) Collecting enum34>=1.0.4; python_version < "3.4" Using cached enum34-1.1.10-py2-none-any.whl (11 kB) Collecting pyasn1<0.5.0,>=0.4.6 Using cached pyasn1-0.4.8-py2.py3-none-any.whl (77 kB) Installing collected packages: click, MarkupSafe, Jinja2, Werkzeug, itsdangerous, flask, six, protobuf, futures, pyparsing, packaging, googleapis-common-protos, chardet, urllib3, idna, certifi, requests, pyasn1, pyasn1-modules, rsa, cachetools, setuptools, google-auth, pytz, enum34, grpcio, google-api-core, google-cloud-core, google-cloud-translate ERROR: pip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts. matplotlib 1.3.1 requires nose, which is not installed. matplotlib 1.3.1 requires tornado, which is not installed. Successfully installed Jinja2-2.11.3 MarkupSafe-1.1.1 Werkzeug-1.0.1 cachetools-3.1.1 certifi-2021.5.30 chardet-4.0.0 click-7.1.2 enum34-1.1.10 flask-1.1.4 futures-3.3.0 google-api-core-1.29.0 google-auth-1.30.1 google-cloud-core-1.6.0 google-cloud-translate-2.0.2 googleapis-common-protos-1.52.0 grpcio-1.38.0 idna-2.10 itsdangerous-1.1.0 packaging-20.9 protobuf-3.17.2 pyasn1-0.4.8 pyasn1-modules-0.2.8 pyparsing-2.4.7 pytz-2021.1 requests-2.25.1 rsa-4.5 setuptools-44.1.1 six-1.16.0 urllib3-1.26.5
7. Men-deploy layanan
Untuk men-deploy layanan terjemahan ke App Engine Python 2, jalankan perintah ini:
gcloud app deploy
Output akan terlihat seperti berikut, dan memberikan beberapa perintah untuk langkah berikutnya:
$ gcloud app deploy Services to deploy: descriptor: [/private/tmp/nebulous-serverless-python/app.yaml] source: [/private/tmp/nebulous-serverless-python] target project: [PROJECT_ID] target service: [default] target version: [20210422t161025] target url: [https://PROJECT_ID.appspot.com] Do you want to continue (Y/n)? Beginning deployment of service [default]... ╔════════════════════════════════════════════════════════════╗ ╠═ Uploading 1290 files to Google Cloud Storage ═╣ ╚════════════════════════════════════════════════════════════╝ File upload done. Updating service [default]...done. Setting traffic split for service [default]...done. Deployed service [default] to [https://PROJECT_ID.appspot.com] You can stream logs from the command line by running: $ gcloud app logs tail -s default To view your application in the web browser run: $ gcloud app browse
Setelah aplikasi tersedia secara global di seluruh dunia, Anda akan dapat mengaksesnya di URL (yang berisi project ID) yang diberikan dalam output deployment:
Terjemahkan sesuatu untuk melihat cara kerjanya.
8. Kesimpulan
Selamat! Anda telah mempelajari cara mengaktifkan Cloud Translation API, mendapatkan kredensial yang diperlukan, dan men-deploy aplikasi web sederhana ke App Engine Python 2. Anda dapat mempelajari lebih lanjut deployment ini dari tabel ini di repo.
Pembersihan
Cloud Translation API memungkinkan Anda melakukan jumlah karakter terjemahan tetap per bulan secara gratis. App Engine juga memiliki kuota gratis, dan hal yang sama berlaku untuk Cloud Functions dan Cloud Run. Anda akan dikenai biaya jika salah satunya terlampaui. Jika berencana melanjutkan ke codelab berikutnya, Anda tidak perlu menonaktifkan aplikasi.
Namun, jika Anda belum siap melanjutkan ke tutorial berikutnya atau khawatir internet akan menemukan aplikasi yang baru saja Anda deploy, nonaktifkan aplikasi App Engine, hapus Cloud Function, atau nonaktifkan layanan Cloud Run untuk menghindari tagihan. Jika sudah siap untuk beralih ke codelab berikutnya, Anda dapat mengaktifkannya kembali. Di sisi lain, jika Anda tidak akan melanjutkan aplikasi ini atau codelab lainnya dan ingin menghapus semuanya, Anda dapat mematikan project.
Selain itu, men-deploy ke platform komputasi serverless Google Cloud akan menimbulkan biaya build dan penyimpanan kecil. Cloud Build memiliki kuota gratisnya sendiri seperti halnya Cloud Storage. Untuk transparansi yang lebih besar, Cloud Build mem-build image aplikasi Anda, yang kemudian disimpan di Cloud Container Registry atau Artifact Registry, penerusnya. Penyimpanan gambar tersebut akan menggunakan sebagian kuota tersebut, begitu juga dengan traffic keluar jaringan saat mentransfer gambar tersebut ke layanan. Namun, Anda mungkin tinggal di wilayah yang tidak memiliki paket gratis tersebut, jadi perhatikan penggunaan penyimpanan Anda untuk meminimalkan potensi biaya.
9. Referensi lainnya
Di bagian berikut, Anda dapat menemukan materi bacaan tambahan serta latihan yang direkomendasikan untuk menambah pengetahuan yang diperoleh dari menyelesaikan tutorial ini.
Studi tambahan
Setelah Anda memiliki beberapa pengalaman dengan Translation API, mari kita lakukan beberapa latihan tambahan untuk mengembangkan keterampilan Anda lebih lanjut. Untuk melanjutkan jalur pembelajaran Anda, ubah aplikasi contoh kami untuk melakukan hal berikut:
- Selesaikan semua edisi lain dari codelab ini untuk dijalankan secara lokal atau di-deploy ke platform komputasi serverless Google Cloud (lihat README repo).
- Selesaikan tutorial ini menggunakan bahasa pemrograman lain.
- Ubah aplikasi ini untuk mendukung bahasa sumber atau target yang berbeda.
- Mengupgrade aplikasi ini agar dapat menerjemahkan teks ke dalam lebih dari satu bahasa; mengubah file template agar memiliki pulldown bahasa target yang didukung.
Pelajari lebih lanjut
Google App Engine
- Halaman beranda App Engine
- Dokumentasi App Engine
- Panduan memulai App Engine Python 3
- Akun layanan default untuk App Engine
- Runtime Python 2 App Engine (Standar)
- Runtime Python 3 App Engine (Standar)
- Perbedaan antara runtime App Engine (Standar) Python 2 & 3
- Panduan migrasi App Engine (Standar) Python 2 ke 3
Google Cloud Functions
- Halaman beranda Cloud Functions
- Dokumentasi Cloud Functions
- Panduan memulai Cloud Functions Python
- Akun layanan default untuk Cloud Functions
Google Cloud Run
- Halaman beranda Cloud Run
- Dokumentasi Cloud Run
- Panduan memulai Python Cloud Run
- Akun layanan default untuk Cloud Run
Google Cloud Buildpacks, Container Registry, Artifact Registry
- Pengumuman Cloud Buildpacks
- repo Cloud Buildpacks
- Halaman beranda Cloud Artifact Registry
- Dokumentasi Cloud Artifact Registry
- Halaman beranda Cloud Container Registry
- Dokumentasi Cloud Container Registry
Google Cloud Translation dan Google ML Kit
- Halaman beranda Cloud Translation
- Dokumentasi Cloud Translation
- Halaman harga Translation API
- Semua API "komponen penyusun" Cloud AI/ML
- Google ML Kit (subset Cloud AI/ML API untuk perangkat seluler)
- Google ML Kit Translation API
Produk/halaman Google Cloud lainnya
- Dukungan Python Google Cloud
- Library klien Google Cloud
- Paket "Selalu Gratis" Google Cloud
- Semua dokumentasi Google Cloud
Python dan Flask
Lisensi
Tutorial ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0, sedangkan kode sumber di repo dilisensikan berdasarkan Apache 2.