Menulis Cloud Functions
Cloud 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-jenis Cloud Functions dan ekspektasi untuk kode sumber.
Jenis-jenis Cloud Functions
Ada dua jenis Cloud Functions:
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 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, seperti pesan tentang topik Pub/Sub atau perubahan dalam bucket Cloud Storage.
Struktur direktori sumber
Agar Cloud 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 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 for 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 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
Framework Fungsi 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 masuk 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 for 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 masuk 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 bawah subdirektori src/test/java/
.
File pom.xml
Anda harus menyertakan
Functions Framework for 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 masuk 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 masuk fungsi yang dapat di-deploy secara terpisah.
Anda juga dapat menggunakan paket template Cloud Functions untuk .NET guna menghasilkan file yang diperlukan.
Ruby
Struktur direktori dasar untuk fungsi Ruby adalah sebagai berikut:
. ├── app.rb ├── Gemfile └── Gemfile.lock
Cloud 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 for 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 masuk fungsi yang dapat di-deploy secara terpisah.
PHP
Struktur direktori dasar untuk fungsi PHP adalah sebagai berikut:
. ├── index.php └── composer.json
Cloud 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 Python
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 masuk 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 masuk untuk fungsi Anda, yaitu kode tertentu yang dijalankan saat Cloud Function 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 masuknya adalah fungsi, sedangkan untuk bahasa lain titik masuknya adalah class. Untuk mempelajari lebih lanjut cara menentukan titik masuk dan menerapkan Cloud Functions dalam berbagai bahasa, lihat Menulis fungsi HTTP dan Menulis fungsi berbasis peristiwa.
Dependensi
Anda dapat mengelola dependensi menggunakan fitur 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 Cloud Functions.