GSP602

Ringkasan
Go adalah bahasa pemrograman open source yang memudahkan pembuatan software yang sederhana, andal, dan efisien. Go sudah terinstal saat menggunakan Cloud Shell.
Cloud Run Functions adalah lingkungan eksekusi serverless untuk membuat dan menghubungkan layanan cloud. Dengan Cloud Run Functions, Anda menulis fungsi dengan tujuan tunggal yang terlampir ke peristiwa yang dikeluarkan dari layanan dan infrastruktur cloud Anda. Fungsi Anda akan terpicu ketika suatu peristiwa yang sedang dipantau diaktifkan. Kode Anda dijalankan dalam lingkungan yang terkelola sepenuhnya di Cloud Run. Anda tidak perlu menyediakan infrastruktur atau pun memikirkan pengelolaan server.
Anda dapat menulis fungsi Cloud Run menggunakan bahasa pemrograman yang didukung. Anda dapat menggunakan fungsi tersebut dan menjalankannya di lingkungan runtime standar apa pun untuk salah satu bahasa yang didukung, yang membuat portabilitas dan pengujian lokal menjadi mudah.
Di lab ini, Anda akan menggunakan Go untuk membuat fungsi Cloud Run Anda sendiri yang, saat dipanggil melalui HTTP, menampilkan gambar Go gopher, yang dirancang oleh Renee French.
Yang akan Anda pelajari
- Cara menulis fungsi Cloud Run HTTP di Go.
- Cara menguji fungsi Cloud Run HTTP di Go.
- Cara menjalankan server HTTP Go lokal untuk mencoba fungsi.

Prasyarat
Lab ini mengasumsikan bahwa Anda sudah memahami Go. Penjelasan disediakan untuk kode Go, tetapi mungkin tidak menjelaskan semua hal yang diperlukan bagi seseorang yang benar-benar baru menggunakan Go.
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
-
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Menetapkan region dan zona
Resource Compute Engine tertentu berada di region dan zona. Region adalah lokasi geografis spesifik tempat Anda dapat menjalankan resource. Setiap region memiliki satu atau beberapa zona.
Jalankan perintah gcloud berikut di Cloud Shell guna menetapkan region dan zona default untuk lab Anda:
gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}"
export ZONE=$(gcloud config get compute/zone)
gcloud config set compute/region "{{{project_0.default_region|REGION}}}"
export REGION=$(gcloud config get compute/region)
Memastikan Cloud Run Functions API diaktifkan
- Di Cloud Shell, jalankan perintah berikut untuk mengaktifkan Cloud Run Functions API. Hal ini memungkinkan Anda men-deploy fungsi Cloud Run nanti di lab.
gcloud services enable cloudfunctions.googleapis.com
Mendownload dan menyiapkan kode
- Dari terminal Cloud Shell, gunakan
curl untuk mendownload zip dengan kode untuk lab ini:
curl -LO https://github.com/GoogleCloudPlatform/golang-samples/archive/main.zip
- Gunakan
unzip untuk mengekstrak kode. Perintah ini akan mengekstrak direktori (golang-samples-main), yang berisi contoh kode Go untuk cloud.google.com:
unzip main.zip
- Ubah ke direktori yang berisi kode untuk lab ini:
cd golang-samples-main/functions/codelabs/gopher
Direktori gopher berisi direktori dan file berikut:
$ tree
.
├── cmd
│ └── main.go # Binary to run the function locally.
├── go.mod # Go module definition.
├── gophercolor.png # The gopher!
├── gopher.go # Go file with the function.
└── gopher_test.go # Go test file.
Tugas 1. Memperkenalkan fungsi Cloud Run HTTP di Go
Fungsi Cloud Run HTTP di Go ditulis sebagai fungsi http.HandlerFunc, yang merupakan antarmuka yang ditentukan dalam library standar Go. Fungsi ini harus:
- Dapat diekspor, yang berarti dapat digunakan dari paket lain, yang ditunjukkan dengan nama yang diawali dengan huruf besar.
- Cocok dengan jenis
http.HandlerFunc, yang berarti fungsi tersebut dalam format func(http.ResponseWriter, *http.Request). (Lihat tutorial Writing Web Applications untuk mengetahui panduan mendalam tentang cara menulis aplikasi web lengkap di Go.)
Misalnya, berikut adalah fungsi "Hello, world":
package gopher
import (
"fmt"
"net/http"
)
// HelloWorld prints "Hello, world."
func HelloWorld(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, world.")
}
Catatan: Anda dapat membuka file ini di Cloud Shell Editor (klik **Open Editor**), lalu gunakan struktur file di sebelah kiri untuk membuka file golang-samples-main/functions/codelabs/gopher/hello.go.
Men-deploy fungsi ini sebagai fungsi Cloud Run HTTP
- Dari direktori
functions/codelabs/gopher, Anda dapat men-deploy nama fungsi dengan gcloud functions deploy:
gcloud functions deploy HelloWorld --gen2 --runtime go125 --trigger-http --region {{{project_0.default_region |
REGION}}}
- Masukkan Y saat diminta untuk mengizinkan pemanggilan yang tidak diautentikasi dari fungsi baru.
Proses ini memerlukan waktu satu atau dua menit.
Output:
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
entryPoint: HelloWorld
httpsTrigger:
url: https://region-my-project.cloudfunctions.net/HelloWorld
...
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat fungsi Cloud Run HTTP HelloWorld
Catatan: Apakah Anda menerima error selama deployment? Periksa:
- Apakah Cloud Run Functions API diaktifkan? Jika tidak, akan ada notifikasi error yang menyertakan link agar Anda dapat mengaktifkannya. Atau, Anda dapat mengaktifkannya dengan perintah
gcloud services enable cloudfunctions.googleapis.com.
- Pastikan direktori kerja Anda (tempat Anda menjalankan
gcloud) adalah direktori yang berisi file .go. Anda dapat mengubah direktori menggunakan cd golang-samples/functions/codelabs/gopher.
- Apakah nama fungsinya sudah benar? Nama fungsi Go yang coba Anda deploy harus berupa
HelloWorld.
- Jika Anda masih mendapatkan error penolakan izin, tunggu beberapa menit dan coba lagi.
- Jika Anda mengalami error **403 Forbidden** setelah deployment saat mengakses URL yang di-deploy, jalankan perintah berikut untuk memberikan akses publik ke fungsi:
gcloud functions add-iam-policy-binding HelloWorld \
--member="allUsers" \
--role="roles/cloudfunctions.invoker" \
--region=
Setelah binding kebijakan IAM ini diterapkan, deploy ulang fungsi menggunakan perintah deployment sebelumnya.
- Salin URL
httpsTrigger yang ditampilkan di output. Kodenya akan terlihat seperti berikut:
https://<REGION>-$GOOGLE_CLOUD_PROJECT.cloudfunctions.net/HelloWorld
- Untuk menguji fungsi
HelloWorld, curl ke URL dari output terakhir:
curl https://<REGION>-$GOOGLE_CLOUD_PROJECT.cloudfunctions.net/HelloWorld
Output:
Hello, world.
Anda telah menulis dan men-deploy fungsi Cloud Run HTTP.
Tugas 2. Menulis fungsi Cloud Run HTTP Gopher
Sekarang, buat fungsi "Hello, world" menjadi lebih menarik dengan mencetak gambar Gopher untuk setiap permintaan.

Blok berikut menunjukkan kode untuk mewujudkannya. Anda dapat melihat kode ini di Cloud Shell di golang-samples-master/functions/codelabs/gopher/gopher.go.
// Package gopher contains an HTTP function that shows a gopher.
package gopher
import (
"fmt"
"io"
"net/http"
"os"
)
// Gopher prints a gopher.
func Gopher(w http.ResponseWriter, r *http.Request) {
// Read the gopher image file.
f, err := os.Open("gophercolor.png")
if err != nil {
http.Error(w, fmt.Sprintf("Error reading file: %v", err), http.StatusInternalServerError)
return
}
defer f.Close()
// Write the gopher image to the response writer.
if _, err := io.Copy(w, f); err != nil {
http.Error(w, fmt.Sprintf("Error writing response: %v", err), http.StatusInternalServerError)
}
w.Header().Add("Content-Type", "image/png")
}
-
File dimulai dengan deklarasi paket dan komentar. Semua kode Go ditulis di dalam paket, dengan deklarasi seperti ini di bagian atas.
-
Blok import berisi daftar paket lain yang menjadi dependensi file ini. Paket ini dirujuk di bagian lain file menggunakan namanya. Misalnya, untuk menggunakan jenis ResponseWriter dari paket http, Anda menulis http.ResponseWriter.
-
Selanjutnya adalah deklarasi fungsi Gopher.
-
Fungsi ini dimulai dengan membaca file gophercolor.png (lihat kode contoh) menggunakan fungsi os.Open.
-
Kemudian, fungsi ini memeriksa apakah ada error saat membaca file, yang mungkin terjadi jika file rusak atau tidak sengaja tertinggal saat diupload.
-
Fungsi ini menggunakan io.Copy untuk menyalin gambar gopher ke w, argumen http.ResponseWriter. Semua yang ditulis ke w dikirim dalam respons HTTP.
-
Jika tidak ada error saat menulis respons, fungsi akan kembali normal.
- Deploy fungsi ini seperti yang Anda lakukan pada fungsi "Hello, world" sebelumnya, menggunakan
gcloud functions deploy dan nama fungsi, Gopher:
gcloud functions deploy Gopher --gen2 --runtime go125 --trigger-http --region {{{project_0.default_region | REGION}}}
-
Masukkan Y saat diminta untuk mengizinkan pemanggilan yang tidak diautentikasi dari fungsi baru.
-
Untuk menguji fungsi, buka URL fungsi di output dari perintah terakhir. Jika berhasil, Anda akan melihat gopher di browser Anda.
Langkah berikutnya adalah menambahkan pengujian untuk memastikan fungsi Anda terus berjalan.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat fungsi Cloud Run HTTP Gopher
Tugas 3. Menulis pengujian
Fungsi Cloud Run HTTP di Go diuji menggunakan paket testing dan httptest dari library standar. Anda tidak perlu menjalankan emulator atau simulasi lain untuk menguji fungsi—cukup kode Go normal.
Berikut tampilan pengujian untuk fungsi Gopher:
package gopher
import (
"net/http"
"net/http/httptest"
"testing"
)
func TestGopher(t *testing.T) {
rr := httptest.NewRecorder()
req := httptest.NewRequest("GET", "/", nil)
Gopher(rr, req)
if rr.Result().StatusCode != http.StatusOK {
t.Errorf("Gopher StatusCode = %v, want %v", rr.Result().StatusCode, http.StatusOK)
}
}
- Pengujian Go ditulis dengan cara yang sama seperti file Go lainnya. Mereka memulai dengan deklarasi paket dan set impor.
- Deklarasi pengujian berbentuk
func MyTest(t *testing.T). Fungsi ini harus diekspor dan mengambil satu argumen dengan jenis *testing.T.
- Pengujian ini membuat nilai respons dan permintaan pengujian menggunakan paket
httptest.
- Fungsi ini memanggil fungsi Gopher.
- Setelah memanggil fungsi Gopher, pengujian akan memeriksa kode respons HTTP untuk memastikan tidak ada error.
- Untuk menjalankan pengujian ini secara lokal,
cd ke direktori yang berisi file yang Anda uji:
cd ~/golang-samples-main/functions/codelabs/gopher
- Di direktori
golang-samples-main/functions/codelabs/gopher, gunakan perintah go test:
go test -v
Output:
=== RUN TestGopher
--- PASS: TestGopher (0.00s)
PASS
ok github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher 0.037s
Catatan: Pengujian tidak lulus?
- Periksa pesan error untuk mengetahui informasi yang berguna.
- Apakah Anda berada di direktori yang sama dengan file
gopher.go dan gopher_test.go (golang-samples-main/functions/codelabs/gopher)?
Selanjutnya, Anda akan membuat program biner (package main, di Go) agar dapat menjalankan fungsi secara lokal dan mencobanya di browser.
Tugas 4. Menjalankan fungsi secara lokal
Untuk menjalankan fungsi HTTP secara lokal, buat server HTTP dan daftarkan fungsi Anda sebagai handler. (Lihat tutorial Writing Web Applications untuk mengetahui panduan mendalam tentang cara menulis aplikasi web lengkap di Go.)
Anda dapat menulis server HTTP untuk fungsi di subdirektori fungsi Anda.
Dengan mengikuti konvensi Go, Anda menamai direktori tersebut cmd dan membuat file main.go di dalamnya:
// The cmd command starts an HTTP server.
package main
import (
"fmt"
"log"
"net/http"
"github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher"
)
func main() {
http.HandleFunc("/", gopher.Gopher)
fmt.Println("Listening on localhost:8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
- File ini menggunakan
package main sebagai paket. Paket main akan dibangun sebagai biner yang dapat Anda jalankan.
- File ini mengimpor
github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher, berdasarkan baris module dari go.mod di samping file fungsi Anda. Saat menulis fungsi Anda sendiri, Anda dapat memberi nama modul sesuai keinginan.
-
func main() adalah titik entri untuk biner. Fungsi gopher.Gopher didaftarkan sebagai pengendali HTTP, lalu server dimulai menggunakan http.ListenAndServe.
- Untuk membangun dan menjalankan program biner ini secara lokal, jalankan perintah berikut:
go work init
go work use .
go build -o start ./cmd
./start
Output:
Listening on localhost:8080
-
Karena fungsi memuat gambar gophercolor.png dari direktori kerja saat ini, Anda harus memulai program biner dari direktori yang sama dengan file gophercolor.png. Flag -o start digunakan untuk memberi nama program biner output start. ./cmd digunakan untuk membangun program biner yang ada di direktori cmd.
-
Sekarang gunakan Web Preview di Cloud Shell untuk menguji server di browser Anda.
- Klik tombol Web Preview
.
- Pilih port
8080 dari menu yang ditampilkan.
Cloud Shell membuka URL pratinjau pada layanan proxy-nya di jendela browser baru. Pratinjau web membatasi akses melalui HTTPS hanya ke akun pengguna Anda.
Jika semuanya berfungsi dengan baik, Anda akan melihat Go Gopher.
Catatan: Tidak dapat melihat gopher?
- Apakah Anda berada di direktori yang sama dengan file
gopher.go dan gopher_test.go (golang-samples-main/functions/codelabs/gopher)?
- Apakah server sudah dimulai? Pastikan untuk membangunnya dengan perintah
go build -o start ./cmd, lalu mulai dengan menjalankan ./start. Outputnya akan menampilkan Listening on localhost:8080.
- Apakah Anda memilih port yang tepat saat membuka pratinjau web? Pastikan untuk menggunakan
8080, port yang digunakan server untuk memproses.
Tugas 5. Pembersihan
Semua resource yang Anda gunakan akan dihapus saat Anda mengakhiri lab ini. Saat menggunakan lingkungan sendiri, Anda harus selalu menghapus resource yang tidak diperlukan untuk menghemat biaya dan menjadi pengguna cloud yang baik.
-
Hentikan penayangan URL Anda dengan CTRL+C.
-
Setelah selesai menguji fungsi Cloud Run, Anda dapat menghapusnya menggunakan gcloud:
gcloud functions delete Gopher --region {{{project_0.default_region | REGION}}}
gcloud functions delete HelloWorld --region {{{project_0.default_region | REGION}}}
Anda juga dapat menghapus fungsi dari konsol.
Selamat!
Sekarang Anda telah mengetahui cara menggunakan fungsi Cloud Run di Go. Di lab ini, Anda telah mempelajari cara menulis fungsi Cloud Run HTTP di Go, cara mengujinya, dan cara menjalankannya secara lokal.
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 25 September 2025
Lab Terakhir Diuji pada 25 September 2025
Hak cipta 2026 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.
Berikan Masukan tentang Lab ini