Gunakan "Google Terjemahan" dasar Aplikasi Express.js di App Engine, Cloud Functions, dan Cloud Run

1. Ringkasan

Rangkaian codelab ini (tutorial praktik mandiri) bertujuan untuk membantu developer memahami berbagai opsi yang mereka miliki saat men-deploy aplikasi. Anda akan mempelajari cara menggunakan Google Cloud Translation API dalam aplikasi web sederhana. Aplikasi ini dapat dijalankan secara lokal atau di-deploy ke platform komputasi serverless Cloud (App Engine, Cloud Functions, atau Cloud Run).

Anda akan melakukan tutorial JavaScript ini dengan Node.js menggunakan framework web Express.js. Anda juga akan mempelajari cara mengakses Google Cloud API dari platform serverless kami. Semua versi aplikasi ini berasal dari repo open source "nebulous serverless", yang mencakup versi Python dari aplikasi ini dan codelab independen. Repo ini juga menghosting aplikasi serupa yang menunjukkan kepada developer cara mengakses Google API non-Cloud dari platform serverless kami.

Codelab ini berfokus pada men-deploy aplikasi ini ke platform bercetak tebal di atas.

Anda akan mempelajari cara

Yang Anda butuhkan

  • Project Google Cloud dengan akun Penagihan Cloud yang aktif
  • Framework web yang diinstal untuk dijalankan secara lokal ( Flask untuk yang mengikuti tutorial Python atau Express untuk yang mengikuti tutorial JavaScript/Node.js)
  • Setidaknya satu platform komputasi serverless diaktifkan untuk deployment Google Cloud
  • Keterampilan pemrograman dasar (Python atau JavaScript/Node.js)
  • Pengetahuan perintah sistem operasi dasar yang berfungsi

Survei

Bagaimana Anda akan menggunakan tutorial ini?

Membacanya dan menyelesaikan latihan Hanya membacanya

Bagaimana penilaian Anda terhadap pengalaman mengembangkan di Python atau Node.js?

Pemula Menengah Mahir

Bagaimana penilaian Anda terhadap pengalaman menggunakan 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

Di bagian ini, Anda akan mempelajari cara mengaktifkan Google API secara umum. Untuk aplikasi contoh, Anda akan mengaktifkan Cloud Translation API. Anda juga akan mengaktifkan App Engine, Cloud Functions, dan/atau Cloud Run (serta Cloud Artifact Registry), bergantung pada platform tempat Anda ingin men-deploy aplikasi contoh.

Mengaktifkan Google API

Pengantar

Terlepas dari Google API mana yang ingin Anda gunakan di aplikasi, API tersebut harus diaktifkan. API dapat diaktifkan dari command line atau dari konsol Cloud. Proses pengaktifan API sama, jadi setelah mengaktifkan satu API, Anda dapat melakukan hal yang sama untuk API lainnya.

Opsi 1: gcloud command-line interface (Cloud Shell atau lingkungan lokal)

Meskipun mengaktifkan API dari Cloud Console lebih umum dilakukan, beberapa developer lebih suka melakukan semuanya dari command line. Untuk melakukannya, Anda perlu mencari "nama layanan" API. Sepertinya URL: SERVICE_NAME.googleapis.com. Anda dapat menemukannya di diagram Produk yang didukung, atau Anda dapat mengkuerinya secara terprogram dengan Google Discovery API.

Dengan informasi ini, menggunakan Cloud Shell (atau lingkungan pengembangan lokal dengan alat command line gcloud yang terinstal), Anda dapat mengaktifkan API sebagai berikut:

gcloud services enable SERVICE_NAME.googleapis.com

Contoh 1: Mengaktifkan Cloud Vision API

gcloud services enable vision.googleapis.com

Contoh 2: Mengaktifkan Google App Engine

gcloud services enable appengine.googleapis.com

Contoh 3: Aktifkan beberapa API dengan satu permintaan. Misalnya, jika codelab ini memiliki penonton yang men-deploy aplikasi menggunakan Cloud Translation API ke App Engine, Cloud Functions, dan Cloud Run, command line-nya adalah:

gcloud services enable appengine.googleapis.com cloudfunctions.googleapis.com artifactregistry.googleapis.com run.googleapis.com translate.googleapis.com

Perintah ini mengaktifkan App Engine, Cloud Functions, Cloud Run, dan Cloud Translation API. Selain itu, hal ini mengaktifkan Cloud Artifact Registry karena di sinilah image container harus didaftarkan oleh sistem Cloud Build agar dapat di-deploy ke Cloud Run.

Opsi 2: Cloud Console

Anda juga dapat mengaktifkan Google API di Pengelola API. Dari Konsol Cloud, buka Pengelola API, lalu pilih Library.

fb0f1d315f122d4a.png

Mulai masukkan nama API ke dalam kotak penelusuran untuk melihat hasil yang cocok:

2275786a24f8f204.png

Pilih API yang ingin Anda aktifkan, lalu klik tombol Aktifkan:

7960a6752a1da767.png

Proses pengaktifan semua API serupa, terlepas dari Google API yang ingin Anda gunakan.

Biaya

Banyak Google API yang dapat digunakan tanpa biaya, tetapi ada biaya saat menggunakan sebagian besar produk dan API Google Cloud. Saat mengaktifkan Cloud API, Anda mungkin diminta untuk memberikan akun penagihan yang aktif. Namun, beberapa produk Google Cloud memiliki paket"Selalu Gratis", yang harus Anda lampaui agar dikenai biaya penagihan.

Pengguna baru GCP memenuhi syarat untuk mengikuti Uji Coba Gratis, yang saat ini bernilai $300 USD dan berlaku selama 90 hari pertama. Codelab umumnya tidak menimbulkan banyak atau tidak ada penagihan, jadi sebaiknya Anda menunda Uji Coba Gratis hingga Anda benar-benar siap untuk mencobanya, terutama karena ini adalah penawaran satu kali. Kuota Paket Gratis tidak akan berakhir dan berlaku terlepas dari apakah Anda menggunakan Uji Coba Gratis atau tidak.

Pengguna harus merujuk pada informasi harga untuk setiap API sebelum mengaktifkannya (contoh: halaman harga Cloud Vision API ), terutama mencatat apakah API tersebut memiliki paket gratis, dan jika ya, apa saja yang termasuk dalam paket tersebut. Selama Anda tidak melebihi batas harian atau bulanan yang ditentukan secara keseluruhan, Anda tidak akan dikenai biaya apa pun. Harga dan paket gratis bervariasi di antara API grup produk Google. Contoh:

Produk Google yang berbeda ditagih secara berbeda, jadi pastikan untuk merujuk dokumentasi yang sesuai untuk informasi tersebut.

Memastikan layanan yang diinginkan telah diaktifkan

Pastikan Cloud Translation API di API Manager seperti yang diarahkan di atas. Jika Anda tidak mengaktifkan platform serverless dari command line, Anda dapat melakukannya dari masing-masing dasbor di Konsol Cloud: App Engine, Cloud Functions, Cloud Run.

Meskipun mengaktifkan API dari Cloud Console memberikan informasi visual, penggunaan alat gcloud lebih cepat karena hanya memerlukan waktu beberapa detik untuk mengaktifkan semua layanan:

$ gcloud services enable appengine.googleapis.com \
cloudfunctions.googleapis.com artifactregistry.googleapis.com \
run.googleapis.com translate.googleapis.com
Operation "operations/acf.p2-xxxxxx035451-704918f2-5470-4436-9bdd-c3b204yyyyyy" finished successfully.

Selengkapnya tentang biaya

Bagian di atas tentang biaya bersifat umum di seluruh Google API. Mari kita bahas lebih banyak hal spesifik untuk tutorial ini. Meskipun kuota bulanan Translation API tidak tercantum di halaman ringkasan tingkat "Selalu Gratis" secara keseluruhan, halaman harga Translation API menyatakan bahwa semua pengguna mendapatkan jumlah tetap karakter yang diterjemahkan setiap bulan. Anda tidak akan dikenai biaya apa pun dari API jika Anda tetap berada di bawah batas tersebut. Untuk mengetahui informasi selengkapnya tentang biaya menggunakan platform serverless Google Cloud, lihat bagian Biaya di repositori. Bagian "Pembersihan" di akhir akan membahas cara menghentikan penagihan setelah codelab ini selesai.

4. Mendapatkan kode aplikasi contoh

Download ZIP atau clone repo

  • Download file ZIP atau clone repo dengan git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git
  • Jika tidak memiliki lingkungan pengembangan lokal dan ingin melakukan tutorial ini di Cloud Shell, Anda dapat meng-clone repo dengan perintah git clone yang sama di sana.
  • Anda juga dapat mengakses file ZIP dari tombol Code berwarna hijau seperti yang ditunjukkan pada screenshot berikut:

5cd6110c4414cf65.png

Setelah Anda memiliki semuanya, buat salinan lengkap folder untuk melakukan tutorial khusus ini, karena kemungkinan akan melibatkan penghapusan atau perubahan file. Jika ingin melakukan deployment yang berbeda, Anda dapat memulai dari awal dengan menyalin yang asli sehingga Anda tidak perlu meng-clone atau mendownloadnya lagi.

5. Mengonfirmasi lingkungan Node.js

Untuk menyiapkan lingkungan Node.js, lakukan hal berikut:

  1. Pastikan Anda telah menginstal Node (>=10) dan NPM (>=6) versi terbaru
  2. Buka tempat Anda meng-clone repo (atau mengekstrak file ZIP), lalu buka folder cloud/nodejs
  3. Pastikan package.json ada, lalu jalankan npm install

Untuk #1 di atas, Anda dapat memverifikasi versi yang Anda miliki di command line:

$ node -v
v17.0.1
$ npm -v
8.1.0

6. Tur aplikasi contoh

Aplikasi contoh adalah turunan Google Terjemahan sederhana yang meminta pengguna memasukkan teks dalam bahasa Inggris dan menerima terjemahan teks tersebut dalam bahasa Spanyol.

File konfigurasi package.json menunjukkan paket pihak ketiga mana yang diperlukan untuk aplikasi (perhatikan bahwa versi paket dapat diperbarui di luar yang tercantum di sini):

{
  "name": "cloud-nebulous-serverless-nodejs",
  "version": "0.0.1",
  "description": "Nebulous Serverless sample app",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "mocha test/test_neb.js"
  },
  "author": "Google LLC",
  "license": "Apache-2.0",
  "dependencies": {
    "@google-cloud/translate": "^6.3.1",
    "express": "^4.17.1",
    "nunjucks": "^3.2.3"
  },
  "devDependencies": {
    "mocha": "^9.1.3",
    "supertest": "^6.1.6"
  }
}

Sekarang buka file index.js agar kita dapat melihat cara kerjanya. Jika baris yang diberi komentar tentang pemberian lisensi dihilangkan, maka akan terlihat seperti ini di bagian atas dan bawah:

const express = require('express');
const nunjucks = require('nunjucks');
const {TranslationServiceClient} = require('@google-cloud/translate');

const app = express();
app.use(express.urlencoded({extended: true}));
nunjucks.configure('templates', {autoescape: true, express: app});
const TRANSLATE = new TranslationServiceClient();

const PORT = process.env.PORT || 8080;
const SOURCE = ['en', 'English'];
const TARGET = ['es', 'Spanish'];
let parent;
TRANSLATE.getProjectId().then(result => {
    parent = `projects/${result}`;
});


if (!process.env.FUNCTION_TARGET) {
    app.listen(PORT, () =>
        console.log(`Listening on port ${PORT}`)
    );
}

# . . . [translate() function definition] . . .

app.all('/', translate);
module.exports = {
    app
};
  1. requires menghadirkan fungsi framework dan pembuatan template, serta library klien Cloud Translation API.
  2. Variabel global mewakili aplikasi web, ID project Cloud, klien Translation API, "jalur lokasi" induk untuk panggilan Translation API, serta bahasa SOURCE dan TARGET. Dalam hal ini, bahasa Inggris (en) dan Spanyol (es), tetapi Anda dapat mengubah nilai ini ke kode bahasa lain yang didukung oleh Cloud Translation API.
  3. Elemen pertama dari setiap pasangan (SOURCE dan TARGET) adalah kode bahasa, sedangkan elemen kedua adalah nama bahasa (dan hanya digunakan untuk tujuan tampilan karena tidak relevan untuk API).
  4. Beberapa baris di bagian bawah adalah untuk mengirim semua permintaan HTTP ke translate(), lalu mengekspor objek aplikasi app.

Terakhir, di tengah index.js adalah inti aplikasi, yaitu fungsi translate():

async function translate(req, rsp) {
    let text = null;
    let translated = null;
    if (req.method === 'POST') {
        text = req.body.text.trim();
        if (text) {
            const data = {
                contents: [text],
                parent: parent,
                targetLanguageCode: TARGET[0]
            };
            const [response] = await TRANSLATE.translateText(data);
            translated = response.translations[0].translatedText;
        }
    }
    const context = {
        orig:  {text: text, lc: SOURCE},
        trans: {text: translated, lc: TARGET}
    };
    rsp.render('index.html', context);
}

Fungsi utama melakukan tugas mengambil input pengguna, dan memanggil Translation API untuk melakukan tugas berat. Mari kita bahas secara mendetail:

  1. Mereset variabel dasar untuk formulir. Hal ini terutama untuk permintaan GET karena permintaan POST akan memiliki data yang menggantikan data ini.
  2. Jika berupa POST, ambil teks yang akan diterjemahkan, dan jika tidak kosong, buat struktur JSON yang merepresentasikan persyaratan metadata API. Kemudian, panggil API untuk layanan.
  3. Kami tidak meneruskan SOURCE[0] ke API untuk sumber spesifik dalam bahasa Inggris. Jika Anda tidak menyertakan bahasa sumber, Anda meminta API untuk mendeteksi bahasa sumber secara otomatis (lihat sourceLanguageCode dalam dokumen).
  4. Terlepas dari itu, format hasil sebenarnya (POST) atau tidak ada data (GET) ke dalam konteks template dan render.

Bagian visual aplikasi ada di file template index.html. Bagian ini menampilkan hasil terjemahan sebelumnya (kosong jika tidak ada) yang diikuti dengan formulir yang meminta sesuatu untuk diterjemahkan:

<!doctype html>
<html><head><title>My Google Translate 1990s</title><body>
<style>
body {
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #DDDDDD;
}
</style>
<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>

Untuk bagian tutorial selanjutnya, Anda dapat memilih salah satu atau semua dari empat opsi untuk men-deploy dan menjalankan aplikasi ini. Semua deployment bersifat opsional, yang berarti Anda dapat melakukannya atau tidak.

  1. Menjalankan layanan secara lokal
  2. Men-deploy ke App Engine (lingkungan standar)
  3. Men-deploy ke Cloud Functions
  4. Men-deploy ke Cloud Run

7. OPSI 1: Jalankan layanan secara lokal

Bagian codelab ini hanya untuk menjalankan secara lokal. Jika Anda hanya men-deploy ke cloud, lanjutkan ke bagian berikutnya.

Untuk menjalankan aplikasi contoh secara lokal, ada tiga langkah berbeda yang harus dilakukan:

  1. Membuat akun layanan
  2. Buat pasangan kunci publik/pribadi akun layanan
  3. Mendownload file kredensial dan mengikatnya dengan kode aplikasi
  4. Mulai layanan

Mempelajari akun layanan

Akun layanan adalah mekanisme keamanan untuk mengakses Google API bagi aplikasi berbasis cloud saat mengakses data yang bukan milik pengguna manusia. Saat men-deploy ke Cloud, untuk mengurangi waktu persiapan dalam mengaktifkan pengguna ke Cloud, semua platform komputasi Google Cloud (serverless dan lainnya) menyediakan akun layanan default.

Akun layanan default dilengkapi dengan serangkaian izin yang luas untuk "memangkas birokrasi", tetapi saat bersiap meluncurkan layanan produksi, sebaiknya pengguna mengikuti praktik terbaik "hak istimewa paling sedikit", tetapi membuat akun layanan yang dikelola pengguna dengan izin yang cukup agar aplikasi Anda berfungsi dengan benar. Terlepas dari itu, tidak ada akun layanan default untuk deployment lokal, jadi Anda harus membuat akun layanan beserta kunci akun layanan (sebenarnya pasangan kunci publik/pribadi) dan membuat kredensial tersebut tersedia untuk kode aplikasi.

Membuat pasangan kunci akun layanan dan mendownload file kredensial

Ikuti petunjuk di halaman ini untuk membuat akun layanan dan pasangan kunci publik/pribadi untuk dijalankan secara lokal. Saat membuat kunci akun layanan, Anda akan diminta untuk memberikan izin yang diinginkan. Pastikan untuk memilih roles/cloudtranslate.user agar Anda dapat berhasil mengakses API.

Setelah pasangan kunci Anda berhasil dibuat, Anda akan diminta untuk mendownload file kunci akun layanan. Panggil credentials.json dan pindahkan ke folder tingkat teratas aplikasi. Sekarang Anda harus memberi tahu Cloud SDK untuk menggunakan kredensial tersebut: tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS agar mengarah ke file tersebut. Informasi selengkapnya tentang proses ini juga dapat ditemukan di halaman ini yang membahas penggunaan akun layanan.

Mulai layanan

Jika Anda sudah siap untuk melanjutkan, luncurkan server Express secara lokal dengan perintah berikut:

$ npm start

> cloud-nebulous-serverless-nodejs@0.0.1 start
> node index.js

Listening on port 8080

Buka browser web Anda untuk terhubung ke localhost:8080, dan Anda akan melihat sesuatu seperti berikut:

adc6665b7ae13c40.png

Terjemahkan sesuatu untuk melihat cara kerjanya.

fc154326080bf14f.png

Jika Anda puas, hentikan server dengan ^C (control-C) dan keluar. Selamat telah berhasil menjalankan deployment lokal. Ada kabar baik: men-deploy ke cloud jauh lebih mudah.

Pemecahan masalah

Apakah Anda mendapatkan error seperti ini saat meminta terjemahan?

node:fs:2486
      handleErrorFromBinding(ctx);
      ^

Error: The file at credentials.json does not exist, or it is not a file. ENOENT: no such file or directory, lstat '/tmp/nodejs/credentials.json'
    . . .

SOLUSI: Error ini berarti Anda belum menyelesaikan pembuatan akun layanan dan mendownload file pasangan kunci publik/pribadi credentials.json. Kembali ke " OPSI 1: Jalankan layanan secara lokal" dan selesaikan proses ini serta instal kredensial di folder utama sebelum melanjutkan.

8. OPSI 2: Deploy ke App Engine (lingkungan standar)

Bagian codelab ini hanya untuk men-deploy ke Node App Engine. Jika Anda tidak tertarik, lanjutkan ke bagian berikutnya.

Deployment ini menggunakan file konfigurasi app.yaml yang memberi tahu App Engine runtime mana yang akan digunakan dengan satu baris:

runtime: nodejs16

File app.yaml tidak digunakan oleh Cloud Functions maupun Cloud Run. Jika Anda tidak berencana menggunakan App Engine, file ini dapat dihapus dengan aman. Saat Anda siap men-deploy ke App Engine, jalankan perintah ini:

$ gcloud app deploy

Setelah wilayah dipilih, output gcloud app deploy akan jauh lebih sederhana dan akan terlihat seperti berikut:

Services to deploy:

descriptor:                  [/private/tmp/nodejs/app.yaml]
source:                      [/private/tmp/nodejs]
target project:              [PROJECT_ID]
target service:              [default]
target version:              [2021...]
target url:                  [https://PROJECT_ID.REG_ABBR.appspot.com]
target service account:      [App Engine default service account]


Do you want to continue (Y/n)?

Beginning deployment of service [default]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 2 files to Google Cloud Storage                          ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...⠏WARNING: *** Improve build performance by generating and committing package-lock.json.

Updating service [default]...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [https://PROJECT_ID.REG_ABBR.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

To take a quick anonymous survey, run:
  $ gcloud survey

Setelah aplikasi Anda tersedia secara global di seluruh dunia, Anda akan dapat mengaksesnya di URL yang berisi project ID Anda, dan Anda akan melihat output yang mirip dengan versi Express lokal, tetapi ketahui bahwa aplikasi tersebut berjalan di cloud dan tersedia di seluruh dunia:

da28f951c33a2c3d.png

Jika Anda mengirimkan permintaan, Anda akan melihat bahwa permintaan tersebut berfungsi sama seperti semua deployment lainnya.

9. OPSI 3: Men-deploy ke Cloud Functions

Bagian codelab ini hanya untuk men-deploy ke Node Cloud Functions. Jika Anda tidak tertarik, lanjutkan ke bagian berikutnya.

Tidak ada file konfigurasi dengan Cloud Functions, jadi saat Anda siap men-deploy ke Cloud Functions, jalankan perintah ini:

$ gcloud functions deploy translate \
  --runtime nodejs16 \
  --entry-point app \
  --trigger-http \
  --region REGION \
  --allow-unauthenticated

Project GCP Anda mungkin memiliki REGION default, tetapi Anda dapat menggunakan flag --region untuk men-deploy fungsi ke region tertentu. Cloud Functions tidak meminta Anda seperti produk Cloud lainnya. Terlepas dari region yang Anda pilih, output gcloud functions deploy akan terlihat seperti berikut:

Deploying function (may take a while - up to 2 minutes)...⠛
For Cloud Build Logs, visit: https://console.cloud.google.com/cloud-build/builds;region=REGION/15ac7fc1-731d-4f3b-bc15-8f2614xxxxxx?project=062269xxxxxx
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
buildId: aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx
buildName: projects/062269xxxxxx/locations/REGION/builds/aaf7e0cd-fbbd-4624-abeb-3e7437xxxxxx
entryPoint: app
httpsTrigger:
  securityLevel: SECURE_OPTIONAL
  url: https://REGION-PROJECT_ID.cloudfunctions.net/translate
ingressSettings: ALLOW_ALL
labels:
  deployment-tool: cli-gcloud
name: projects/PROJECT_ID/locations/REGION/functions/translate
runtime: nodejs16
serviceAccountEmail: PROJECT_ID@appspot.gserviceaccount.com
sourceUploadUrl: https://storage.googleapis.com/gcf-upload-REGION-01de94c2-6eb4-4c49-aaff-09276cdb7ae9/a1db9f2d-3511-414b-aeeb-de6042xxxxxx.zip
status: ACTIVE
timeout: 60s
updateTime: '2021...'
versionId: '...'

Sekarang setelah aplikasi Anda tersedia secara global di seluruh dunia, Anda dapat mengaksesnya di URL yang berisi project ID Anda seperti yang ditunjukkan dalam output deployment (di bagian "httpsTrigger/url"). URL tersebut akan terlihat seperti: https://REGION-PROJECT_ID.cloudfunctions.net/translate yang bervariasi berdasarkan region yang Anda pilih serta project ID Cloud Anda.

518f1c3165f2096d.png

10. OPSI 4: Deploy ke Cloud Run

Bagian codelab ini hanya untuk men-deploy ke Cloud Run. Jika Anda tidak tertarik, lanjutkan ke bagian berikutnya.

Tidak ada file konfigurasi dengan Cloud Run, jadi saat Anda siap men-deploy ke Cloud Run, ikuti petunjuk di bawah.

Sekarang Anda siap men-deploy layanan terjemahan ke Cloud Run dengan menjalankan perintah ini:

$ gcloud run deploy translate --source . --allow-unauthenticated --platform managed

Output-nya akan terlihat seperti berikut, dan memberikan beberapa perintah untuk langkah selanjutnya:

Please specify a region:
 [1] asia-east1
 [2] asia-east2
. . . (other regions) . . .
 [28] us-west4
 [29] cancel
Please enter your numeric choice:  REGION_CHOICE

To make this the default region, run `gcloud config set run/region REGION`.

Deploying from source requires an Artifact Registry repository to
store build artifacts. A repository named [cloud-run-source-deploy] in
 region [REGION] will be created.

Do you want to continue (Y/n)?

This command is equivalent to running "gcloud builds submit --pack image=[IMAGE] ." and "gcloud run deploy translate --image [IMAGE]"

Building . . . and deploying container to Cloud Run service [translate] in project [PROJECT_ID] region [REGION]
✓ Building and deploying... Done.
  ✓ Creating Container Repository...
  ✓ Uploading sources...
  ✓ Building Container... Logs are available at [https://console.cloud.google.com/cloud-build/builds/60e1b
  9bb-b991-4b4e-8d8a-HASH?project=PROJECT_NUMBER].
  ✓ Creating Revision...
  ✓ Routing traffic...
  ✓ Setting IAM Policy...
Done.
Service [translate] revision [translate-00001-xyz] has been deployed and is serving 100 percent of traffic.
Service URL: https://SVC_NAME-HASH-REG_ABBR.a.run.app

Cloud Buildpacks aplikasi Anda ke Cloud Run seperti yang Anda lakukan jika menjalankan aplikasi secara lokal. Untuk pengguna Node.js, perintah ini menjalankan npm install dan npm start. Untuk Python, perintah ini menjalankan pip install -r requirements.txt dan memulai aplikasi dari petunjuk di Procfile Anda. (Hal yang sama berlaku untuk semua bahasa lain yang didukung oleh Cloud Buildpack.) Aplikasi Anda akan siap digunakan setelah proses build selesai.

Aplikasi Anda kemudian (di-deploy secara regional, tetapi) tersedia secara global, dan dapat diakses di URL yang berisi project ID Anda seperti yang ditunjukkan dalam output deployment (di bagian "Service URL:"

169f6edf5f7d2068.png

Terjemahkan sesuatu untuk melihat cara kerjanya.

31554e71cb80f1b4.png

11. Kesimpulan

Selamat! Anda telah mempelajari cara mengaktifkan dan menggunakan Cloud Translation API, mendapatkan kredensial yang diperlukan, dan men-deploy aplikasi web sederhana ke Express secara lokal, ke App Engine, Cloud Functions, dan/atau Cloud Run. Lihat folder repo untuk mempelajari lebih lanjut atau mengakses versi lain dari aplikasi ini serta codelab lainnya.

Pembersihan

Cloud Translation API memungkinkan Anda melakukan sejumlah 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 satu batas tersebut terlampaui. Jika Anda berencana melanjutkan ke codelab berikutnya, Anda tidak perlu menutup aplikasi.

Namun, jika Anda belum siap melanjutkan ke tutorial berikutnya atau khawatir aplikasi yang baru saja Anda deploy ditemukan di internet, 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 membangun image aplikasi Anda, yang kemudian disimpan di Cloud Container Registry atau Artifact Registry, penggantinya. Penyimpanan gambar tersebut menggunakan sebagian kuota tersebut, begitu juga dengan 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.

12. Referensi lainnya

Di bagian berikut, Anda dapat menemukan materi bacaan tambahan serta latihan yang direkomendasikan untuk meningkatkan pengetahuan yang Anda peroleh dari menyelesaikan tutorial ini.

Studi tambahan

Setelah Anda memiliki beberapa pengalaman menggunakan Translation API, mari lakukan beberapa latihan tambahan untuk mengembangkan keterampilan Anda lebih lanjut. Untuk melanjutkan jalur pembelajaran Anda, ubah aplikasi contoh kami untuk melakukan hal berikut:

  1. Selesaikan semua edisi codelab ini lainnya untuk dijalankan secara lokal atau di-deploy ke platform komputasi serverless Google Cloud (lihat README repo).
  2. Selesaikan tutorial ini menggunakan bahasa pemrograman lain.
  3. Ubah aplikasi ini untuk mendukung bahasa sumber atau target yang berbeda.
  4. Upgrade aplikasi ini agar dapat menerjemahkan teks ke dalam lebih dari satu bahasa; ubah file template agar memiliki menu pull-down bahasa target yang didukung.

Pelajari lebih lanjut

Google App Engine

Google Cloud Functions

Google Cloud Run

Google Cloud Buildpacks, Container Registry, Artifact Registry

Google Cloud Translation dan Google ML Kit

Produk/halaman Google Cloud lainnya

Lisensi

Tutorial ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0, sedangkan kode sumber di repo dilisensikan berdasarkan Apache 2.