Pengembangan fungsi lokal

Cloud Run Functions mendukung beberapa metode untuk menjalankan fungsi Anda di luar lingkungan deployment target. Hal ini sangat berguna untuk pengembangan iteratif, dan untuk situasi ketika Anda ingin menguji fungsi sebelum melakukan deployment.

Kemampuan untuk menjalankan fungsi tanpa men-deploy-nya dapat menyederhanakan pengujian lokal, kepatuhan terhadap pembatasan lokalitas data, dan deployment multicloud:

  • Pembatasan lokalitas data: Uji fungsi Anda secara lokal tanpa mengakses data produksi, untuk menghindari pelanggaran aturan lokalitas data organisasi Anda.

  • Deployment multicloud: Deployment fungsi multicloud adalah pola yang sudah mapan untuk memitigasi risiko waktu non-operasional di lingkungan yang sangat mendukung keandalan. Men-deploy fungsi ke lingkungan selain Cloud Run Functions itu sendiri dapat mengurangi risiko aplikasi mengalami waktu non-operasional yang tidak direncanakan.

Mengembangkan fungsi secara lokal menggunakan Functions Framework

Anda dapat mengembangkan dan menguji fungsi secara lokal menggunakan Functions Framework. Mengembangkan fungsi secara lokal dapat membantu Anda menguji kode tanpa harus membangun ulang container fungsi. Hal ini dapat menghemat waktu dan mempermudah pengujian fungsi Anda.

Cloud Run menggunakan library Functions Framework open source untuk menggabungkan fungsi yang di-deploy ke dalam aplikasi HTTP persisten.

Functions Framework juga dapat berjalan di platform lain yang mendukung bahasa itu sendiri, termasuk komputer lokal Anda, server lokal, dan Compute Engine.

Menginstal dependensi

Di direktori fungsi, instal library Functions Framework untuk bahasa Anda:

Node.js

npm install --save-dev @google-cloud/functions-framework

Python

pip3 install functions-framework

Go

go install github.com/GoogleCloudPlatform/functions-framework-go/funcframework

Java

Maven

Jika Anda menggunakan Maven, tambahkan kode berikut ke file pom.xml:

<dependency>
  <groupId>com.google.cloud.functions</groupId>
  <artifactId>functions-framework-api</artifactId>
  <version>1.1.0</version>
  <scope>provided</scope>
</dependency>

Gradle

Jika Anda menggunakan Gradle, tambahkan kode berikut ke file build.gradle:

dependencies {
  // Every function needs this dependency to get the Functions Framework API.
  compileOnly 'com.google.cloud.functions:functions-framework-api:1.1.0'

  // To run function locally using Functions Framework's local invoker
  invoker 'com.google.cloud.functions.invoker:java-function-invoker:1.3.1'
}

Lihat library Functions Framework Java untuk mengetahui informasi selengkapnya.

C#

Perintah berikut menggunakan Template .NET untuk membuat codebase fungsi .NET baru dengan library.NET Functions Framework sebagai dependensi:

# HTTP functions
dotnet new gcf-http

# CloudEvent functions
dotnet new gcf-event

Ruby

Di Ruby, Functions Framework harus ditambahkan ke dependensi fungsi Anda untuk men-deploy-nya ke Cloud Run:

bundle add functions_framework

PHP

composer require google/cloud-functions-framework

Mengonfigurasi Functions Framework

Sebelum menjalankan fungsi menggunakan Functions Framework, pertama-tama Anda harus menentukan jenis dan nama fungsi yang ingin dijalankan. Atribut ini dapat ditentukan sebagai flag antarmuka command line (CLI) atau sebagai variabel lingkungan.

Jenis fungsi yang didukung

Functions Framework mendukung kedua jenis fungsi yang didukung oleh Cloud Run Functions. Semua runtime bahasa mendukung jenis tanda tangan http dan cloudevent.

Jenis fungsi Jenis tanda tangan Deskripsi Mendukung Runtime
Fungsi yang dipicu HTTP http Fungsi yang menerima dan merespons permintaan HTTP. Semua runtime
Fungsi berbasis peristiwa cloudevent Format peristiwa standar industri. Semua runtime

Menentukan fungsi yang akan dijalankan

Sebelum menjalankan fungsi dengan Functions Framework, Anda harus terlebih dahulu menentukan fungsi mana dalam kode Anda yang akan dijalankan. Untuk sebagian besar bahasa, Anda dapat melakukannya dengan menentukan nama metode fungsi target seperti yang ditunjukkan pada tabel berikut. Perhatikan bahwa ada pengecualian untuk aturan ini untuk runtime Java dan .NET.