Menjalankan Functions menggunakan Functions Emulator

Dengan Functions Emulator Google Cloud CLI, Anda dapat mengelola instance lokal Cloud Functions melalui perintah gcloud alpha functions local. Dengan begitu, Anda dapat men-deploy dan menguji fungsi di sistem lokal sebelum men-deploy-nya ke lingkungan Google Cloud.

Fitur ini berfungsi dengan fungsi generasi ke-1 dan generasi ke-2.

Functions Emulator menggunakan buildpack Google Cloud untuk mengemas kode fungsi Anda menjadi image container yang dapat dijalankan secara lokal. Kemudian, jalankan image ini secara lokal dengan Docker.

Prasyarat penginstalan

Sebelum melanjutkan, pastikan Anda telah menginstal alat berikut:

Men-deploy fungsi secara lokal

Untuk men-deploy fungsi secara lokal dengan Functions Emulator, gunakan perintah gcloud functions:

Node.js

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=nodejs20

Python

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=python312

Go

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=go121

Java

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=java17

C#

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=dotnet6

Ruby

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=ruby32

PHP

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=php82

Ganti:

  • LOCAL_DEPLOYMENT_NAME: Nama tempat Anda men-deploy fungsi secara lokal.
  • ENTRY_POINT: Titik entri fungsi Anda.

Anda dapat mengonfigurasi lebih lanjut perintah deployment dengan flag opsional berikut:

Flag Deskripsi
--port Port yang akan digunakan untuk memproses permintaan (default: 8080).
--builder Nama builder buildpack yang akan digunakan.

Nilai --builder ditetapkan secara default ke builder App Engine untuk bahasa fungsi Anda. Misalnya, kode ini ditetapkan secara default ke gcr.io/gae-runtimes/buildpacks/google-gae-22/python/builder untuk Python.

Saat Anda pertama kali menggunakan perintah gcloud alpha, perintah gcloud akan meminta Anda untuk menginstal set perintah gcloud alpha.

Memanggil fungsi lokal

Untuk memanggil fungsi lokal Anda tanpa data, gunakan perintah berikut:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME

Ganti LOCAL_DEPLOYMENT_NAME dengan nama yang ingin digunakan untuk men-deploy fungsi secara lokal.

Untuk menyertakan data dalam panggilan ke fungsi lokal, pilih tab yang cocok dengan jenis fungsi Anda:

Fungsi HTTP

Panggil fungsi HTTP lokal Anda sebagai berikut:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --data='{"message": "MESSAGE"}'

Ganti:

  • LOCAL_DEPLOYMENT_NAME: Nama untuk men-deploy fungsi Anda secara lokal.
  • ENTRY_POINT: Titik entri fungsi Anda.
  • MESSAGE: String teks yang akan diteruskan sebagai isi permintaan HTTP.

Fungsi CloudEvent

Untuk memanggil fungsi CloudEvent lokal, Anda harus menyediakan objek JSON CloudEvent yang mendeskripsikan peristiwa pemicu:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --cloud-event="CLOUD_EVENT_JSON"

Ganti:

  • LOCAL_DEPLOYMENT_NAME: Nama untuk men-deploy fungsi Anda secara lokal.
  • ENTRY_POINT: Titik entri fungsi Anda.
  • CLOUD_EVENT_JSON: String berenkode JSON dalam mode konten terstruktur yang mendeskripsikan peristiwa pemicu. Untuk detail dan contoh selengkapnya, lihat CloudEvents - format peristiwa JSON.

Berikut adalah contoh command line:

gcloud alpha functions local call my-function --cloud-event='{
 "specversion" : "1.0",
  "type" : "com.github.pull.create",
  "source" : "https://github.com/cloudevents/spec/pull",
  "subject" : "123",
  "id" : "ce",
  "time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
  }'

Lihat spesifikasi CloudEvent untuk mengetahui informasi selengkapnya tentang cara format JSON ditentukan untuk CloudEvents.

Menghapus deployment fungsi lokal Anda

Hapus deployment fungsi lokal Anda dengan perintah berikut:

gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME

Ganti LOCAL_DEPLOYMENT_NAME dengan nama untuk men-deploy fungsi Anda secara lokal.

Perintah ini membatalkan deployment fungsi Anda, tetapi tidak menghapus kode fungsi.

Langkah berikutnya