Memanggil fungsi lokal
Penyiapan
Dokumen ini mengasumsikan bahwa Anda telah menyiapkan fungsi yang berjalan secara lokal di localhost
menggunakan Functions Framework atau Buildpacks. Contoh ini juga mengasumsikan bahwa Anda telah menginstal alat curl
di komputer lokal Anda.
Mengirim permintaan ke fungsi lokal
Anda dapat memicu fungsi yang berjalan secara lokal dengan mengiriminya permintaan HTTP yang dirutekan melalui proses inferensi lokal.
Tentukan tempat fungsi Anda berjalan secara lokal dengan memeriksa URL yang ditampilkan saat Anda mulai menjalankan fungsi. Secara default, fungsi Anda akan dihosting di localhost:8080
.
Fungsi HTTP
Saat Anda menguji fungsi HTTP dari lingkungan pengembangan, fungsi HTTP biasanya akan memproses permintaan di localhost:8080
. Antarmuka ini hanya dapat diakses dari mesin atau VM tempat fungsi Anda berjalan; permintaan yang dikirim dari sistem lain tidak dapat mencapainya. Karena alasan ini, Anda harus mengeluarkan permintaan HTTP dari sistem yang sama dengan tempat fungsi Anda berjalan. Dalam contoh berikut, jika fungsi Anda memproses port selain 8080, ganti 8080 dalam contoh dengan nomor port untuk fungsi Anda.
Menguji fungsi HTTP dengan Cloud Shell
Jika Anda menggunakan Cloud Shell untuk mem-build dan menguji fungsi, mulai fungsi secara lokal di jendela terminal Cloud Shell, lalu keluarkan permintaan pemicu HTTP dari browser atau instance curl
sebagai berikut:
Browser
Klik ikon di toolbar Cloud Shell dan pilih port 8080 atau Ubah port untuk memilih port lain. Tindakan ini akan membuka jendela browser di sistem yang benar dan mengirimkan permintaan GET ke port yang ditunjukkan.
Curl
Untuk mengontrol format permintaan HTTP atau melihat balasan yang tidak berformat, gunakan curl
:
- Klik ikon + pada panel menu Cloud Shell untuk membuka jendela terminal baru di sistem yang sama dengan tempat fungsi Anda berjalan.
Dari dalam jendela tersebut, jalankan perintah
curl
untuk memicu fungsi Anda. Contoh:curl localhost:8080
Menguji fungsi HTTP di server desktop
Jika Anda mem-build dan menjalankan fungsi di sistem desktop lokal, pertama-tama mulai fungsi Anda secara lokal, lalu keluarkan permintaan pemicu HTTP dari browser atau instance curl
sebagai berikut:
Browser
Buka tab atau jendela browser baru, lalu ketik http://localhost:8080
di kolom URL browser. Tindakan ini akan membuka jendela browser ke localhost:8080
di server desktop untuk memicu fungsi Anda.
Curl
Buka jendela terminal baru di desktop lokal Anda, lalu jalankan perintah curl
di jendela tersebut untuk memicu fungsi Anda. Contoh:
curl localhost:8080
Tindakan ini menjalankan perintah curl
yang ditentukan untuk memicu fungsi Anda dan menampilkan respons yang tidak diformat.
Fungsi CloudEvent
Anda dapat mengirim contoh peristiwa ke fungsi CloudEvent menggunakan curl
. Permintaan curl
berikut menunjukkan cara mengirim contoh peristiwa Pub/Sub dan Cloud Storage ke fungsi CloudEvent yang berjalan di localhost:8080
.
Pub/Sub
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.pubsub.topic.v1.messagePublished" \ -H "ce-source: //pubsub.googleapis.com/projects/MY-PROJECT/topics/MY-TOPIC" \ -d '{ "message": { "data": "d29ybGQ=", "attributes": { "attr1":"attr1-value" } }, "subscription": "projects/MY-PROJECT/subscriptions/MY-SUB" }'
Penyimpanan
curl localhost:8080 \ -X POST \ -H "Content-Type: application/json" \ -H "ce-id: 123451234512345" \ -H "ce-specversion: 1.0" \ -H "ce-time: 2020-01-02T12:34:56.789Z" \ -H "ce-type: google.cloud.storage.object.v1.finalized" \ -H "ce-source: //storage.googleapis.com/projects/_/buckets/MY-BUCKET-NAME" \ -H "ce-subject: objects/MY_FILE.txt" \ -d '{ "bucket": "MY_BUCKET", "contentType": "text/plain", "kind": "storage#object", "md5Hash": "...", "metageneration": "1", "name": "MY_FILE.txt", "size": "352", "storageClass": "MULTI_REGIONAL", "timeCreated": "2020-04-23T07:38:57.230Z", "timeStorageClassUpdated": "2020-04-23T07:38:57.230Z", "updated": "2020-04-23T07:38:57.230Z" }'