Menulis fungsi Cloud Run
Cloud Run Functions mendukung penulisan kode sumber di beberapa bahasa pemrograman. Runtime bahasa yang Anda pilih dan jenis fungsi yang ingin ditulis menentukan cara menyusun kode dan mengimplementasikan fungsi Anda. Halaman ini menyajikan ringkasan jenis fungsi Cloud Run dan ekspektasi untuk kode sumber.
Jenis fungsi Cloud Run
Ada dua jenis fungsi Cloud Run:
Fungsi HTTP, yang menangani permintaan HTTP dan menggunakan pemicu HTTP. Baca artikel Menulis fungsi HTTP untuk mengetahui informasi tentang cara mengimplementasikan fungsi HTTP.
Fungsi berbasis peristiwa, yang menangani peristiwa dari lingkungan cloud Anda dan menggunakan pemicu peristiwa seperti yang dijelaskan dalam Pemicu Cloud Run Functions. Baca artikel Menulis fungsi berbasis peristiwa untuk mengetahui informasi tentang cara mengimplementasikan fungsi berdasarkan peristiwa.
Gunakan fungsi HTTP jika Anda ingin fungsi memiliki endpoint URL dan merespons permintaan HTTP, seperti untuk webhook. Gunakan fungsi berbasis peristiwa jika fungsi Anda harus dipicu secara langsung sebagai respons terhadap peristiwa dalam project Google Cloud Anda, seperti pesan pada topik Pub/Sub atau perubahan dalam bucket Cloud Storage.
Struktur direktori sumber
Agar Cloud Run Functions dapat menemukan definisi fungsi Anda, setiap runtime bahasa memiliki persyaratan untuk menyusun kode sumber. Struktur direktori dasar untuk fungsi di setiap runtime ditampilkan di bawah ini.
Node.js
Struktur direktori dasar untuk fungsi Node.js adalah sebagai berikut:
. ├── index.js └── package.json
Secara default, Cloud Run Functions akan mencoba memuat kode sumber dari file
bernama index.js di root direktori fungsi Anda. Untuk menentukan file sumber utama
yang berbeda, gunakan kolom main di file package.json Anda.
File package.json Anda juga harus menyertakan
Functions Framework untuk Node.js
sebagai dependensi:
{
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
}
}
Kode dalam file utama harus menentukan titik entri fungsi dan dapat mengimpor kode lain dan modul Node.js seperti biasa. File utama juga dapat menentukan beberapa titik entri fungsi yang dapat di-deploy secara terpisah.
Python
Struktur direktori dasar untuk fungsi Python adalah sebagai berikut:
. ├── main.py └── requirements.txt
Cloud Run Functions memuat kode sumber dari file bernama main.py di
root direktori fungsi Anda. File utama Anda harus diberi nama main.py.
File requirements.txt Anda harus menyertakan
Functions Framework untuk Python
sebagai dependensi:
functions-framework==3.*
Kode dalam file main.py harus menentukan
titik entri fungsi dan dapat mengimpor kode lain serta dependensi
eksternal seperti biasa. File main.py juga dapat menentukan beberapa titik entri fungsi
yang dapat di-deploy secara terpisah.
Go
Struktur direktori dasar untuk fungsi Go adalah sebagai berikut:
. ├── myfunction.go └── go.mod
Fungsi Anda harus berada dalam paket Go di root project Anda. Paket
dan file sumbernya dapat memiliki nama apa pun, kecuali fungsi Anda tidak boleh berada dalam
package main. Jika memerlukan paket main, misalnya untuk pengujian lokal,
Anda dapat membuatnya di subdirektori:
.
├── myfunction.go
├── go.mod
└── cmd/
└── main.go
File go.mod Anda harus menyertakan
Functions Framework untuk Go
sebagai dependensi:
module example.com/my-module
require (
github.com/GoogleCloudPlatform/functions-framework-go v1.5.2
)
Kode dalam paket root harus menentukan titik entri fungsi dan dapat mengimpor kode lain dari subpaket dan dependensi seperti biasa. Paket Anda juga dapat menentukan beberapa titik entri fungsi yang dapat di-deploy secara terpisah.
Java
Struktur direktori dasar untuk fungsi Java adalah sebagai berikut:
.
├── pom.xml
└── src/
└── main/
└── java/
└── MyFunction.java
File sumber Java Anda harus berada di bawah direktori src/main/java/ dan dapat memiliki
nama apa pun. Jika file sumber Anda mendeklarasikan suatu paket, tambahkan direktori tambahan pada
src/main/java dengan nama paket tersebut:
.
├── pom.xml
└── src/
└── main/
└── java/
└── mypackage/
└── MyFunction.java
Sebaiknya tempatkan pengujian terkait di bagian subdirektori src/test/java/.
File pom.xml Anda harus menyertakan
Functions Framework untuk Java
sebagai dependensi:
...
<dependency>
<groupId>com.google.cloud.functions</groupId>
<artifactId>functions-framework-api</artifactId>
<version>1.0.4</version>
</dependency>
...
Kode dalam file sumber harus menentukan titik entri fungsi dan dapat mengimpor kode lain serta dependensi eksternal seperti biasa. File sumber Anda juga dapat menentukan beberapa titik entri fungsi yang dapat di-deploy secara terpisah.
C#
Struktur direktori dasar untuk fungsi .NET adalah sebagai berikut:
. ├── MyFunction.cs └── MyProject.csproj
Anda dapat menyusun project seperti yang Anda lakukan pada kode sumber .NET lainnya. File sumber Anda dapat memiliki nama apa pun.
File project Anda harus menyertakan Functions Framework untuk .NET sebagai dependensi:
...
<PackageReference Include="Google.Cloud.Functions.Hosting" Version="1.0.0" />
...
Kode dalam file sumber harus menentukan titik entri fungsi dan dapat mengimpor kode lain serta dependensi eksternal seperti biasa. File sumber Anda juga dapat menentukan beberapa titik entri fungsi yang dapat di-deploy secara terpisah.
Anda juga dapat menggunakan paket template fungsi Cloud Run untuk .NET guna menghasilkan file yang diperlukan.
Ruby
Struktur direktori dasar untuk fungsi Ruby adalah sebagai berikut:
. ├── app.rb ├── Gemfile └── Gemfile.lock
Cloud Run Functions memuat kode sumber dari file bernama app.rb di
root direktori fungsi Anda. File utama Anda harus diberi nama app.rb.
File Gemfile Anda harus menyertakan
Functions Framework untuk Ruby
sebagai dependensi:
source "https://rubygems.org"
gem "functions_framework", "~> 1.0"
Kode dalam file app.rb harus menentukan
titik entri fungsi dan dapat mengimpor kode lain serta dependensi
eksternal seperti biasa. File app.rb juga dapat menentukan beberapa titik entri fungsi
yang dapat di-deploy secara terpisah.
PHP
Struktur direktori dasar untuk fungsi PHP adalah sebagai berikut:
. ├── index.php └── composer.json
Cloud Run Functions memuat kode sumber dari file bernama index.php di
root direktori fungsi Anda. File utama Anda harus diberi nama index.php.
File composer.json Anda harus menyertakan
Framework Functions untuk PHP
sebagai dependensi:
{
"require": {
"google/cloud-functions-framework": "^1.1"
}
}
Kode dalam file index.php harus menentukan
titik entri fungsi dan dapat mengimpor kode lain serta dependensi
eksternal seperti biasa. File index.php juga dapat menentukan beberapa titik entri fungsi
yang dapat di-deploy secara terpisah.
Jika Anda ingin mengelompokkan beberapa fungsi ke dalam satu project, ketahuilah bahwa setiap fungsi mungkin akan memiliki kumpulan dependensi yang sama. Namun, beberapa fungsi mungkin tidak memerlukan semua dependensi.
Jika memungkinkan, sebaiknya bagi codebase multifungsi yang berukuran besar dan masukkan setiap fungsi dalam direktori level teratasnya sendiri seperti yang ditunjukkan di atas, dengan file konfigurasi sumber dan project-nya sendiri. Pendekatan ini meminimalkan jumlah dependensi yang diperlukan untuk fungsi tertentu, sehingga mengurangi jumlah memori yang dibutuhkan fungsi Anda.
Titik entri fungsi
Kode sumber Anda harus menentukan titik entri untuk fungsi Anda, yaitu kode tertentu yang dieksekusi saat fungsi Cloud Run dipanggil. Anda menentukan titik entri ini saat men-deploy fungsi.
Cara Anda menentukan titik entri bergantung pada runtime bahasa yang Anda gunakan. Untuk beberapa bahasa, titik entrinya adalah fungsi, sedangkan untuk bahasa lain, titik entrinya adalah class. Untuk mempelajari lebih lanjut cara menentukan titik entri dan menerapkan fungsi Cloud Run dalam berbagai bahasa, lihat Menulis fungsi HTTP dan Menulis fungsi berbasis peristiwa.
Dependensi
Anda dapat mengelola dependensi menggunakan alat standar untuk setiap runtime. Untuk informasi selengkapnya, lihat halaman yang sesuai:
- Menentukan dependensi di Node.js
- Menentukan dependensi di Python
- Menentukan dependensi di Go
- Menentukan dependensi di Java
- Menentukan dependensi di .NET
- Menentukan dependensi di Ruby
- Menentukan dependensi di PHP
Langkah berikutnya
- Pelajari cara menulis fungsi HTTP.
- Pelajari cara menulis fungsi berbasis peristiwa.
- Pelajari pemicu fungsi Cloud Run.