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
- Pelajari cara Men-deploy Cloud Function di Google Cloud.