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

1. Ringkasan

Rangkaian codelab ini (tutorial interaktif dan mandiri) bertujuan untuk membantu developer memahami berbagai opsi yang mereka miliki saat men-deploy aplikasi mereka. Anda akan belajar 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 API Google Cloud dari platform serverless kami. Semua versi aplikasi ini berasal dari "tanpa server yang tersembunyi" repo open source, yang mencakup versi Python 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 untuk men-deploy aplikasi ini ke platform yang dicetak tebal di atas.

Anda akan mempelajari cara

Yang Anda butuhkan

  • Project Google Cloud dengan akun Penagihan Cloud yang aktif
  • Framework web yang diinstal agar berjalan secara lokal ( Flask bagi pengguna yang melakukan tutorial Python atau Express bagi pengguna yang melakukan tutorial JavaScript/Node.js)
  • Setidaknya satu platform komputasi tanpa server yang diaktifkan untuk deployment Google Cloud
  • Keterampilan pemrograman dasar (Python atau JavaScript/Node.js)
  • Pengetahuan praktis tentang perintah sistem operasi dasar

Survei

Bagaimana Anda akan menggunakan tutorial ini?

Membacanya dan menyelesaikan latihan Hanya baca

Bagaimana Anda menilai pengalaman pengembangan 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 kami, Anda akan mengaktifkan Cloud Translation API. Anda juga akan mengaktifkan App Engine, Cloud Functions, dan/atau Cloud Run (plus Cloud Artifact Registry), bergantung pada platform tempat Anda ingin men-deploy aplikasi contoh.

Mengaktifkan Google API

Pengantar

Terlepas dari Google API yang ingin digunakan di aplikasi Anda, keduanya harus diaktifkan. API dapat diaktifkan dari command line atau dari konsol Cloud. Proses pengaktifan API bersifat identik, jadi setelah mengaktifkan satu API, Anda dapat melakukan API yang lain dengan cara yang sama.

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

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

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: Mengaktifkan beberapa API dengan satu permintaan. Misalnya, jika codelab ini memiliki pelihat 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, tindakan ini mengaktifkan Cloud Artifact Registry karena di situlah image container harus didaftarkan oleh sistem Cloud Build untuk men-deploy ke Cloud Run.

Opsi 2: Konsol Cloud

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

fb0f1d315f122d4a.png

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

2275786a24f8f204.pngS

Pilih API yang ingin Anda aktifkan dan klik tombol Enable:

7960a6752a1da767.pngS

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

Biaya

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

Pengguna GCP baru memenuhi syarat untuk Uji Coba Gratis, saat ini senilai $300 USD untuk 90 hari pertama. Codelab umumnya tidak menimbulkan banyak biaya atau tagihan apa pun, jadi sebaiknya tunda Uji Coba Gratis sampai Anda benar-benar siap untuk mencobanya, terutama karena ini adalah penawaran satu kali. Kuota Paket Gratis tidak akan habis masa berlakunya dan tetap berlaku terlepas dari apakah Anda menggunakan Uji Coba Gratis atau tidak.

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

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

Memastikan layanan yang diinginkan diaktifkan

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

Meskipun mengaktifkan API dari Konsol Cloud secara visual informatif, akan lebih cepat jika menggunakan alat gcloud, yang 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 tutorial ini secara lebih spesifik. 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. Untuk mengetahui informasi selengkapnya tentang biaya penggunaan platform serverless Google Cloud, lihat bagian Biaya repositori. Opsi "Pembersihan" di bagian akhir akan membahas cara menghentikan penagihan setelah penyelesaian codelab ini.

4. Mendapatkan kode aplikasi contoh

Download repositori ZIP atau clone

  • Download file ZIP atau clone repo dengan git clone https://github.com/googlecodelabs/cloud-nebulous-serverless.git
  • Jika Anda tidak memiliki lingkungan dev 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 di screenshot berikut:

5cd6110c4414cf65.pngS

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. Mengonfirmasi lingkungan Node.js

Untuk menyiapkan lingkungan Node.js, lakukan hal berikut:

  1. Pastikan Anda sudah menginstal Node versi kontemporer (>=10) dan NPM (>=6)
  2. Buka tempat Anda meng-clone repo (atau mengekstrak file ZIP), lalu buka folder cloud/nodejs
  3. Konfirmasi bahwa 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 yang setara dari teks tersebut dalam bahasa Spanyol.

File konfigurasi package.json menunjukkan paket pihak ketiga mana yang diperlukan untuk aplikasi (perhatikan bahwa versi paket mungkin diupdate lebih dari 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 sehingga kita dapat melihat cara kerjanya. Menghapus baris komentar tentang pemberian lisensi, 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. require menghadirkan fungsi framework dan 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 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.
  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 bagian tengah index.js adalah inti aplikasi, 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 menerima input pengguna, dan memanggil Translation API untuk melakukan tugas berat. Mari kita uraikan:

  1. Reset variabel dasar untuk formulir. Fungsi ini terutama untuk permintaan GET karena permintaan POST akan memiliki data yang menggantikannya.
  2. Jika berupa POST, ambil teks untuk diterjemahkan, dan jika tidak kosong, buat struktur JSON yang mewakili persyaratan metadata API. Kemudian, panggil API untuk layanan.
  3. Kami tidak meneruskan SOURCE[0] ke API ke sumber bahasa Inggris tertentu. Jika tidak menggunakan bahasa sumber, Anda akan meminta API untuk mendeteksi otomatis bahasa sumber (lihat sourceLanguageCode di dokumen).
  4. 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>
<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 sisa tutorial ini, Anda dapat memilih salah satu atau keempat opsi untuk men-deploy dan menjalankan aplikasi ini. Semua deployment bersifat opsional, artinya Anda dapat melakukan salah satu atau semuanya.

  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: Menjalankan layanan secara lokal

Bagian codelab ini hanya ditujukan untuk dijalankan 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. Membuat pasangan kunci publik/pribadi akun layanan
  3. Download file kredensial dan paketkan dengan kode aplikasi
  4. Memulai layanan

Pelajari akun layanan

Akun layanan adalah mekanisme keamanan guna mengakses Google API untuk aplikasi berbasis cloud saat mengakses data yang bukan milik pengguna manusia. Saat melakukan deployment ke Cloud, untuk mengurangi waktu pengoptimalan proses orientasi pengguna ke Cloud, semua platform komputasi Google Cloud (tanpa server dan lainnya) menyediakan akun layanan default.

Akun layanan default memiliki serangkaian izin yang luas untuk "melewati kebijakan", tetapi saat bersiap meluncurkan layanan produksi, sebaiknya pengguna mengikuti praktik terbaik "hak istimewa terendah", yaitu "hak istimewa terendah". tetapi membuat akun layanan yang dikelola pengguna dengan izin yang memadai agar aplikasi Anda dapat berfungsi dengan baik. Terlepas dari itu, tidak ada akun layanan default untuk deployment lokal, sehingga Anda harus membuat akun layanan plus kunci akun layanan (sebenarnya pasangan kunci publik/pribadi) dan menyediakan kredensial tersebut 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 agar berjalan secara lokal. Saat membuat kunci akun layanan, Anda akan diminta untuk memberikan izin yang diinginkan. Pastikan untuk memilih roles/cloudtranslate.user agar Anda berhasil mengakses API.

Setelah pasangan kunci berhasil dibuat, Anda akan diminta untuk mendownload file kunci akun layanan. Panggil credentials.json dan pindahkan ke folder tingkat atas 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.

Memulai layanan

Jika Anda sudah siap 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 menghubungkannya di localhost:8080, dan Anda akan melihat tampilan seperti berikut:

adc6665b7ae13c40.png

Terjemahkan sesuatu agar berfungsi!

fc154326080bf14f.png

Setelah Anda puas dengannya, keluar dari server dengan ^C (control-C) dan keluar. Selamat, Anda telah menjalankan deployment lokal. Kabar baiknya: men-deploy ke cloud jauh lebih mudah.

Pemecahan masalah

Apakah Anda mendapatkan pesan 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 tidak menyelesaikan pembuatan akun layanan dan mendownload file pasangan kunci publik/pribadi credentials.json. Kembali ke " OPSI 1: Menjalankan layanan secara lokal" dan selesaikan proses ini dan instal kredensial di folder utama sebelum melanjutkan.

8. OPSI 2: Men-deploy ke App Engine (lingkungan standar)

Bagian codelab ini hanya ditujukan 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 yang akan digunakan dengan satu baris:

runtime: nodejs16

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

$ gcloud app deploy

Setelah region dipilih, output gcloud app deploy akan menjadi 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 seharusnya dapat menjangkaunya di URL yang berisi project ID, dan Anda akan melihat output mirip dengan versi Express lokal, tetapi Anda tahu bahwa aplikasi berjalan di cloud dan tersedia di seluruh dunia:

da28f951c33a2c3d.png

Jika Anda mengirim 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 ditujukan 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 tanda --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: '...'

Setelah aplikasi Anda tersedia secara global di seluruh dunia, Anda akan dapat menjangkaunya di URL yang berisi project ID seperti yang ditunjukkan pada output deployment (di bagian "httpsTrigger/url"). URL-nya akan terlihat seperti: https://REGION-PROJECT_ID.cloudfunctions.net/translate yang bervariasi berdasarkan region yang dipilih serta ID project Cloud Anda.

518f1c3165f2096d.pngS

10. OPSI 4: Men-deploy ke Cloud Run

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

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

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 Build mengemas aplikasi Anda ke Cloud Run seperti yang Anda lakukan jika menjalankan aplikasi secara lokal. Untuk pengguna Node.js, perintah ini akan menjalankan npm install dan npm start. Untuk Python, Python 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 Buildpacks.) Aplikasi Anda akan siap dijalankan 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 pada output deployment (di bagian "Service URL:"

169f6edf5f7d2068.pngS

Terjemahkan sesuatu agar berfungsi!

31554e71cb80f1b4.pngS

11. Kesimpulan

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

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.

12. 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:

  1. Selesaikan semua edisi lain dari codelab ini untuk berjalan secara lokal atau men-deploy ke platform komputasi serverless Google Cloud (lihat repo README).
  2. Selesaikan tutorial ini menggunakan bahasa pemrograman lain.
  3. Ubah aplikasi ini agar mendukung berbagai bahasa sumber atau target.
  4. 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

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 sementara kode sumber dalam repo dilisensikan berdasarkan Apache 2.