1. Ringkasan
Rangkaian codelab ini (tutorial interaktif dan mandiri) bertujuan untuk membantu developer memahami berbagai opsi yang mereka miliki saat men-deploy aplikasi mereka. Dalam codelab ini, Anda akan mempelajari cara menggunakan Google Cloud Translation API dengan Python dan berjalan secara lokal atau men-deploy-nya ke platform komputasi serverless Cloud (App Engine, Cloud Functions, atau Cloud Run). Aplikasi contoh yang ada dalam repo tutorial ini dapat di-deploy (setidaknya) delapan cara berbeda dengan hanya perubahan kecil pada konfigurasi:
- 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 untuk men-deploy aplikasi ini ke platform yang dicetak tebal di atas.
Anda akan mempelajari cara
- Gunakan Google Cloud API, khususnya Cloud Translation API (lanjutan/v3)
- Jalankan aplikasi web dasar secara lokal atau deploy ke platform komputasi Cloud tanpa server
Yang Anda butuhkan
- Project Google Cloud dengan akun Penagihan Cloud yang aktif
- Flask diinstal untuk berjalan secara lokal, atau platform komputasi Cloud tanpa server yang diaktifkan untuk deployment berbasis cloud
- Keterampilan Python dasar
- Pengetahuan praktis tentang perintah sistem operasi dasar
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. Aktifkan Translation API
Untuk aplikasi contoh kami, Anda akan mengaktifkan layanan Cloud Translation API dan App Engine sebagai gantinya menggunakan petunjuk serupa yang diberikan di bawah ini.
Mengaktifkan Cloud API
Pengantar
Terlepas dari Google API yang ingin digunakan di aplikasi Anda, keduanya harus diaktifkan. Contoh berikut menunjukkan dua cara untuk mengaktifkan Cloud Vision API. Setelah mempelajari cara mengaktifkan satu Cloud API, Anda akan dapat mengaktifkan API lain karena prosesnya serupa.
Opsi 1: Dari Cloud Shell atau antarmuka command line
Meskipun mengaktifkan API dari Konsol Cloud lebih umum dilakukan, beberapa developer lebih suka melakukan semuanya dari command line. Untuk melakukannya, Anda perlu mencari "service name" API. Sepertinya ini adalah URL: SERVICE_NAME
.googleapis.com
. Anda dapat menemukannya di Diagram produk yang didukung, atau Anda dapat membuat kueri secara terprogram dengan Google Discovery API.
Berbekal informasi ini, menggunakan Cloud Shell (atau lingkungan pengembangan lokal Anda yang telah menginstal alat command line gcloud
), 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 Konsol Cloud, buka API Manager lalu pilih Library.
Jika Anda ingin mengaktifkan Cloud Vision API, mulai masukkan "vision" di kotak penelusuran, dan apa pun 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 dapat digunakan tanpa biaya, penggunaan produk &layanan Google Cloud API tidak gratis. Saat mengaktifkan Cloud API, Anda mungkin diminta untuk memasukkan akun penagihan aktif. Namun, penting untuk diperhatikan bahwa beberapa produk Google Cloud memiliki atribut "Selalu Gratis" tingkat (harian/bulanan), yang harus Anda lampaui untuk dikenai biaya penagihan; jika tidak, kartu kredit Anda (atau instrumen penagihan yang ditentukan) tidak akan ditagih.
Pengguna harus merujuk informasi harga untuk API apa pun sebelum mengaktifkan, terutama mencatat apakah API tersebut memiliki paket gratis atau tidak, dan jika ya, apa itu paket gratis. Jika mengaktifkan Cloud Vision API, Anda akan memeriksa halaman informasi harganya. Cloud Vision memiliki kuota gratis, dan selama Anda tetap berada dalam batas agregat (dalam setiap bulan), Anda tidak akan dikenai biaya apa pun.
Harga dan paket gratis bervariasi antara Google API. Contoh:
- Google Cloud/GCP — setiap produk ditagih secara berbeda dan umumnya membayar per siklus vCPU, konsumen penyimpanan, penggunaan memori, atau bayar per penggunaan; lihat informasi paket gratis di atas.
- Google Maps — memiliki serangkaian API dan menawarkan kredit bulanan gratis senilai$200 USD kepada pengguna secara keseluruhan.
- Google Workspace (sebelumnya G Suite) API — memberikan 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 Pengelola API dan mengaktifkan layanan Cloud Translation API dan App Engine (jika Anda belum melakukannya), metode kedua karena aplikasi kita akan menggunakannya, dan opsi kedua karena Anda men-deploy aplikasi App Engine. Jika Anda lebih suka melakukannya dari command line, berikan perintah ini:
gcloud services enable appengine.googleapis.com translate.googleapis.com
Meskipun kuota bulanannya tidak tercantum dalam setelan "Selalu Gratis" secara keseluruhan halaman ringkasan tingkat, halaman harga Translation API menyatakan bahwa semua pengguna mendapatkan karakter yang diterjemahkan dalam jumlah tetap setiap bulan. Anda tidak akan dikenai biaya apa pun dari API jika tetap berada di bawah nilai minimum tersebut. Jika ada biaya terkait Google Cloud lainnya, biaya tersebut akan dibahas di bagian akhir dalam bagian "Pembersihan" bagian.
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 berwarna hijau seperti yang ditunjukkan pada screenshot berikut:
Sekarang setelah Anda memiliki semuanya, buatlah salinan lengkap dari folder tersebut untuk melakukan tutorial khusus ini, karena 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
sehingga kita dapat melihat cara kerjanya. Menghapus baris komentar tentang pemberian lisensi, 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 menghadirkan fungsi Flask, modul
google.auth
, dan library klien Cloud Translation API. - Variabel global mewakili aplikasi Flask, ID project Cloud, klien Translation API, "jalur lokasi" induk untuk panggilan Translation API, serta bahasa sumber dan target. Dalam kasus ini, bahasa yang digunakan adalah bahasa Inggris (
en
) dan Spanyol (es
), tetapi jangan ragu untuk 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 menyalurkan aplikasi. Bagian ini juga tersedia untuk tutorial deployment Cloud Run jika server web tidak dipaketkan ke dalam container. Anda akan diminta untuk mengaktifkan pemaketan 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 merupakan platform berbasis sumber. Artinya, Google Cloud menyediakan dan menjalankan server web default.)
Terakhir, di bagian 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 tugas menerima input pengguna, dan memanggil Translation API untuk melakukan tugas berat. Mari kita uraikan:
- Periksa apakah permintaan berasal dari Cloud Functions menggunakan variabel
local_request
. Cloud Functions mengirimkan objek Permintaan Flask-nya sendiri, sedangkan yang lainnya (berjalan secara lokal atau men-deploy ke App Engine atau Cloud Run) akan mendapatkan objek permintaan langsung dari Flask. - Reset variabel dasar untuk formulir. Fungsi ini terutama untuk permintaan GET karena permintaan POST akan memiliki data yang menggantikannya.
- Jika berupa POST, ambil teks untuk diterjemahkan, dan buat struktur JSON yang mewakili persyaratan metadata API. Selanjutnya, panggil API, dengan kembali ke versi API sebelumnya jika pengguna menggunakan library lama.
- Terlepas dari itu, format hasil aktual (POST) atau tanpa data (GET) ke dalam konteks template dan render.
Bagian visual aplikasi ini berada di file index.html
template. Hasil tersebut menampilkan hasil terjemahan sebelumnya (kosong jika tidak) 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 telah disebutkan, aplikasi contoh menggunakan framework web mikro Flask dan library klien Google Cloud Translation API untuk Python. Instal dan update pip
beserta pasangan 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 Python 2 App Engine, jalankan perintah ini:
gcloud app deploy
Output-nya akan terlihat seperti berikut, dan memberikan beberapa perintah untuk langkah selanjutnya:
$ 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 Anda tersedia secara global di seluruh dunia, Anda seharusnya dapat menjangkaunya di URL (berisi project ID) yang diberikan di output deployment:
Terjemahkan sesuatu agar berfungsi!
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 deployment ini lebih lanjut dari tabel ini di repo.
Pembersihan
Cloud Translation API memungkinkan Anda melakukan jumlah tetap karakter yang diterjemahkan per bulan secara gratis. App Engine juga memiliki kuota gratis, begitu juga dengan Cloud Functions dan Cloud Run. Anda akan dikenai biaya jika salah satunya terlampaui. Jika berencana untuk melanjutkan ke codelab berikutnya, Anda tidak perlu mematikan aplikasi.
Namun, jika Anda belum siap melanjutkan ke tutorial berikutnya atau khawatir internet menemukan aplikasi yang baru saja di-deploy, nonaktifkan aplikasi App Engine, hapus Cloud Function Anda, atau nonaktifkan layanan Cloud Run untuk menghindari biaya yang timbul. 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 sepenuhnya, Anda dapat menonaktifkan project Anda.
Selain itu, deployment ke platform komputasi serverless Google Cloud akan menimbulkan biaya build dan penyimpanan yang kecil. Cloud Build memiliki kuota gratisnya sendiri seperti halnya Cloud Storage. Agar lebih transparan, Cloud Build membangun image aplikasi Anda, yang kemudian disimpan di Cloud Container Registry atau Artifact Registry, penggantinya. Penyimpanan image tersebut menghabiskan sebagian kuota tersebut, begitu juga traffic keluar jaringan saat mentransfer image tersebut ke layanan. Namun, Anda mungkin tinggal di region 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 Anda peroleh setelah menyelesaikan tutorial ini.
Studi tambahan
Setelah memiliki pengalaman dalam menggunakan Translation API, mari lakukan beberapa latihan tambahan untuk mengembangkan keterampilan Anda. Untuk melanjutkan jalur pembelajaran Anda, ubah aplikasi contoh kami untuk melakukan hal berikut:
- Selesaikan semua edisi lain dari codelab ini untuk berjalan secara lokal atau men-deploy ke platform komputasi serverless Google Cloud (lihat repo README).
- Selesaikan tutorial ini menggunakan bahasa pemrograman lain.
- Ubah aplikasi ini agar mendukung berbagai bahasa sumber atau target.
- Meningkatkan versi aplikasi ini agar dapat menerjemahkan teks ke lebih dari satu bahasa; ubah file template agar memiliki menu 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 Python 2 & 3 runtime App Engine (Standar)
- 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 "building block" Cloud AI/ML API
- Google ML Kit (subset Cloud AI/ML API untuk seluler)
- Google ML Kit Translation API
Produk/halaman Google Cloud lainnya
- Dukungan Google Cloud Python
- Library klien Google Cloud
- Google Cloud "Selalu Gratis" tingkat lanjut
- Semua dokumentasi Google Cloud
Python dan Flask
Lisensi
Tutorial ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0 sementara kode sumber dalam repo dilisensikan berdasarkan Apache 2.