Membuat dan men-deploy HTTP Cloud Function menggunakan Go (generasi ke-1)

Panduan ini akan menuntun Anda menyelesaikan proses penulisan Cloud Function menggunakan runtime Go. Ada dua jenis Cloud Functions:

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

Contoh ini menunjukkan cara membuat fungsi HTTP sederhana.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

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

    Buka pemilih project

  6. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  7. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

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

    Buka panduan penyiapan Go

Membuat cloud function

  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 bernama hello_http.go di direktori helloworld dengan konten berikut:

    
    // Package helloworld provides a set of Cloud Functions samples.
    package helloworld
    
    import (
    	"encoding/json"
    	"fmt"
    	"html"
    	"net/http"
    
    	"github.com/GoogleCloudPlatform/functions-framework-go/functions"
    )
    
    func init() {
    	functions.HTTP("HelloHTTP", HelloHTTP)
    }
    
    // HelloHTTP is an HTTP Cloud Function with a request parameter.
    func HelloHTTP(w http.ResponseWriter, r *http.Request) {
    	var d struct {
    		Name string `json:"name"`
    	}
    	if err := json.NewDecoder(r.Body).Decode(&d); err != nil {
    		fmt.Fprint(w, "Hello, World!")
    		return
    	}
    	if d.Name == "" {
    		fmt.Fprint(w, "Hello, World!")
    		return
    	}
    	fmt.Fprintf(w, "Hello, %s!", html.EscapeString(d.Name))
    }
    

    Fungsi contoh ini mengambil nama yang diberikan dalam permintaan HTTP dan menampilkan salam, atau "Halo Dunia!" jika tidak ada nama yang diberikan.

Menentukan dependensi

Fungsi contoh ini hanya menggunakan paket library standar Go, sehingga Anda tidak perlu mendeklarasikan dependensi apa pun selain mengimpor paket.

Untuk fungsi yang memerlukan dependensi di luar library standar, Anda harus menyediakan dependensi melalui file go.mod atau direktori vendor. Untuk detail selengkapnya, baca Menentukan dependensi di Go.

Men-deploy cloud function

Untuk men-deploy fungsi dengan pemicu HTTP, jalankan perintah berikut di direktori helloworld, yang menentukan go113 atau go111 sebagai nilai untuk flag --runtime, bergantung pada versi yang Anda gunakan:

gcloud functions deploy HelloHTTP --runtime go121 --trigger-http --allow-unauthenticated

Flag --allow-unauthenticated memungkinkan Anda menjangkau fungsi tanpa autentikasi. Untuk mewajibkan autentikasi, hilangkan flag.

Menguji function

  1. Setelah fungsi selesai di-deploy, catat properti httpsTrigger.url atau temukan menggunakan perintah berikut:

    gcloud functions describe HelloHTTP
    

    Kodenya akan terlihat seperti berikut:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP
  2. Kunjungi URL ini di browser, atau gunakan cURL dengan menjalankan perintah:

    curl https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP

    Anda akan melihat pesan "Halo Dunia!". Coba teruskan nama dalam permintaan HTTP dengan menjalankan perintah berikut:

    curl -X POST https://GCP_REGION-PROJECT_ID.cloudfunctions.net/HelloHTTP -H "Content-Type:application/json"  -d '{"name":"NAME"}'

    Anda akan melihat pesan "Halo, NAME!"

Melihat log

Log untuk Cloud Functions dapat dilihat menggunakan Google Cloud CLI, dan di UI Cloud Logging.

Menggunakan alat command line

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

gcloud functions logs read HelloHTTP

Output akan terlihat seperti berikut:

LEVEL  NAME        EXECUTION_ID  TIME_UTC                 LOG
D      HelloHTTP  buv9ej2k1a7r  2019-09-20 13:23:18.910  Function execution started
D      HelloHTTP  buv9ej2k1a7r  2019-09-20 13:23:18.913  Function execution took 4 ms, finished with status code: 200

Menggunakan dasbor Logging

Anda juga dapat melihat log untuk Cloud Functions dari Konsol Google Cloud.