Membuat dan men-deploy fungsi Cloud Run HTTP dengan Node.js

Dokumen ini akan menjelaskan proses pembuatan fungsi HTTP fungsi Cloud Run sederhana. Ini adalah salah satu dari dua jenis fungsi Cloud Run:

  • Fungsi HTTP, yang Anda panggil dari permintaan HTTP standar.
  • Fungsi berbasis peristiwa, yang dipicu oleh peristiwa di infrastruktur Cloud Anda, seperti pesan pada topik Pub/Sub atau perubahan dalam bucket Cloud Storage.

Untuk mengetahui detail selengkapnya, baca artikel tentang menulis fungsi HTTP dan menulis fungsi berbasis peristiwa.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Aktifkan API Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging.

    Mengaktifkan API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Aktifkan API Cloud Functions, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging.

    Mengaktifkan API

  8. Instal dan lakukan inisialisasi gcloud CLI.
  9. Update dan instal komponen gcloud.
    gcloud components update
  10. Siapkan lingkungan pengembangan Anda.

    Buka panduan penyiapan Node.js

Membuat fungsi

  1. Buat direktori di sistem lokal Anda untuk kode fungsi:

    Linux atau Mac OS X

    mkdir ~/helloworld
    cd ~/helloworld
    

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    
  2. Buat file index.js di direktori helloworld dengan konten berikut:

    const functions = require('@google-cloud/functions-framework');
    
    // Register an HTTP function with the Functions Framework that will be executed
    // when you make an HTTP request to the deployed function's endpoint.
    functions.http('helloGET', (req, res) => {
      res.send('Hello World!');
    });

    Fungsi contoh ini menampilkan pesan "Halo Dunia!" yang ceria ke semua permintaan.

Menentukan dependensi

Dependensi pada Node.js dikelola dengan npm dan dinyatakan dalam file metadata bernama package.json. Anda dapat membuat file ini secara manual atau dengan perintah npm.

  • Untuk membuat file package.json dengan perintah npm:

    1. Jalankan perintah npm init dari direktori helloworld. Tekan Enter untuk menerima jawaban default atas pertanyaannya.

      npm init
      
    2. Edit file package.json untuk menambahkan dependensi functions-framework:

      "dependencies": {
        "@google-cloud/functions-framework": "^3.1.0"
      }
      
  • Jika Anda lebih suka membuat file package.json secara manual, salin konten berikut ke dalamnya:

{
  "name": "nodejs-docs-samples-functions-hello-world-get",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "repository": {
    "type": "git",
    "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
  },
  "engines": {
    "node": ">=16.0.0"
  },
  "scripts": {
    "test": "c8 mocha -p -j 2 test/*.test.js --timeout=6000 --exit"
  },
  "dependencies": {
    "@google-cloud/functions-framework": "^3.1.0"
  },
  "devDependencies": {
    "c8": "^10.0.0",
    "gaxios": "^6.0.0",
    "mocha": "^10.0.0",
    "wait-port": "^1.0.4"
  }
}

Banyak library klien Node.js tersedia untuk digunakan dengan produk Google Cloud dan dapat diinstal sebagai dependensi.

Membuat dan menguji fungsi secara lokal

Untuk menguji fungsi secara lokal sebelum men-deploynya, Anda harus menginstal Functions Framework secara lokal, lalu menjalankan fungsi tersebut.

  1. Jalankan perintah berikut dari direktori helloworld untuk menginstal Functions Framework di komputer lokal Anda:

    npm install @google-cloud/functions-framework
    
  2. Jalankan perintah ini dari direktori helloworld untuk menjalankan fungsi Anda secara lokal:

    npx @google-cloud/functions-framework --target=helloGET
    
  3. Uji fungsi Anda dengan membuka http://localhost:8080 di browser atau dengan menjalankan curl localhost:8080 dari jendela lain.

    Lihat Mengirim permintaan ke fungsi lokal untuk mengetahui detail selengkapnya.

Fungsi ini menampilkan pesan "Halo Dunia!"

Men-deploy fungsi

Untuk men-deploy fungsi, jalankan perintah gcloud functions deploy di direktori helloworld:

gcloud functions deploy hello-node-function \
  --gen2 \
  --runtime=nodejs22 \
  --region=REGION \
  --source=. \
  --entry-point=helloGET \
  --trigger-http \
  --allow-unauthenticated

Ganti REGION dengan nama region Google Cloud tempat Anda ingin men-deploy fungsi (misalnya, us-west1).

Tindakan ini akan men-deploy fungsi sampel Anda dengan runtime nodejs22 di region yang dipilih.

Flag --allow-unauthenticated opsional memungkinkan Anda menjangkau fungsi tanpa autentikasi.

Menguji fungsi yang di-deploy

  1. Setelah fungsi di-deploy, catat properti uri dari output perintah gcloud functions deploy, atau ambil dengan perintah berikut:

      gcloud functions describe hello-node-function \
        --region=REGION
    

    Ganti REGION dengan nama region Google Cloud tempat Anda men-deploy fungsi (misalnya, us-west1).

  2. Buka URL ini di browser Anda atau dengan perintah curl berikut:

    curl FUNCTION_URL
    

    Ganti FUNCTION_URL dengan properti uri yang baru saja Anda ambil.

    Fungsi ini menampilkan pesan "Halo Dunia!" .

Melihat log fungsi Anda

Melihat log dengan alat command line

Anda dapat meninjau log fungsi dengan UI Cloud Logging atau menggunakan Google Cloud CLI.

Untuk melihat log fungsi Anda dengan gcloud CLI, gunakan perintah gcloud functions logs read:

    gcloud functions logs read \
      --gen2 \
      --region=REGION \
      --limit=10 \
      hello-node-function

Ganti REGION dengan nama region Google Cloud tempat Anda men-deploy fungsi (misalnya, us-west1).

Outputnya akan terlihat seperti berikut:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:24.956
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:42:01.692
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:47.711
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:46.542
LOG:

LEVEL: I
NAME: hello-node-function
TIME_UTC: 2023-06-16 18:31:27.390
LOG: Default STARTUP TCP probe succeeded after 1 attempt for container "hello--node--function-1" on port 8080.

Melihat log dengan dasbor logging

Untuk melihat log fungsi Anda dengan dasbor logging, buka halaman Ringkasan fungsi Cloud Run, lalu klik nama fungsi Anda dari daftar, lalu klik tab Log.