Mengonfigurasi variabel lingkungan

Anda dapat men-deploy key-value pair apa saja bersama Cloud Function. Pasangan ini tersedia untuk fungsi Anda baik sebagai variabel lingkungan literal, yang dapat diakses oleh kode Anda pada waktu proses, atau sebagai informasi konfigurasi untuk buildpack Google Cloud.

Variabel lingkungan terikat pada fungsi tunggal dan tidak terlihat oleh fungsi lain dalam project Google Cloud Anda. Setiap variabel disimpan di backend Cloud Functions dan berada dalam siklus proses yang sama dengan fungsi yang terikat pada variabel tersebut.

Anda dapat menambahkan atau menghapus variabel lingkungan runtime menggunakan Google Cloud CLI atau Google Cloud Console.

Menetapkan variabel lingkungan runtime

Gunakan metode ini untuk menetapkan variabel baru atau mengganti sepenuhnya variabel yang ada. Untuk membuat perubahan aditif, gunakan proses update yang dijelaskan di bagian berikutnya.

gcloud

Untuk menetapkan variabel lingkungan runtime menggunakan Google Cloud CLI, gunakan flag --set-env-vars pada waktu deployment:

gcloud functions deploy FUNCTION_NAME --set-env-vars FOO=bar FLAGS ...

Anda juga dapat menetapkan beberapa variabel lingkungan runtime menggunakan daftar yang dipisahkan koma:

gcloud functions deploy FUNCTION_NAME --set-env-vars FOO=bar,BAZ=boo FLAGS...

Jika ingin menyimpan konfigurasi dalam file (misalnya di bawah kontrol sumber), Anda dapat menggunakan file YAML dengan flag --env-vars-file:

gcloud functions deploy FUNCTION_NAME --env-vars-file .env.yaml FLAGS...

dengan isi file .env.yaml adalah:

 FOO: bar
 BAZ: boo

Pada contoh di atas, FLAGS... merujuk pada opsi lain yang Anda teruskan selama men-deploy fungsi Anda. Untuk referensi lengkap perintah deploy, lihat gcloud functions deploy.

UI Google Cloud Console

Anda dapat menetapkan variabel lingkungan runtime selama pembuatan fungsi di Google Cloud Console:

  1. Buka halaman Ringkasan Fungsi di Google Cloud Console:

    Buka halaman Ringkasan Cloud Functions.

  2. Klik Create function.

  3. Lengkapi kolom wajib isi untuk fungsi Anda.

  4. Buka bagian Setelan runtime, build, dan koneksi.

  5. Pilih tab Runtime.

  6. Di bagian Variabel lingkungan runtime, klik Tambahkan variabel, lalu tambahkan nama dan nilai.

    Untuk petunjuk cara menambahkan variabel lingkungan ke fungsi yang sudah ada, lihat Memperbarui variabel lingkungan runtime.

Mengupdate variabel lingkungan runtime

Anda juga dapat memperbarui variabel lingkungan runtime untuk fungsi yang ada. Ini adalah pendekatan non-destruktif yang mengubah atau menambahkan variabel lingkungan runtime, tetapi tidak menghapusnya.

gcloud

Untuk memperbarui variabel menggunakan Google Cloud CLI, gunakan flag --update-env-vars pada waktu deployment:

gcloud functions deploy FUNCTION_NAME --update-env-vars FOO=bar

Anda juga dapat memperbarui beberapa variabel lingkungan runtime menggunakan daftar yang dipisahkan koma:

gcloud functions deploy FUNCTION_NAME --update-env-vars FOO=bar,BAZ=boo

UI Konsol Google Cloud

Untuk memperbarui variabel lingkungan runtime menggunakan Google Cloud Console:

  1. Buka halaman Ringkasan Fungsi di konsol Google Cloud:

    Buka halaman Ringkasan Cloud Functions.

  2. Klik fungsi yang ada untuk membuka halaman detailnya.

  3. Klik Edit.

  4. Buka bagian Setelan runtime, build, dan koneksi.

  5. Pilih tab Runtime.

  6. Lakukan pengeditan di bagian Variabel lingkungan runtime.

Menghapus variabel lingkungan runtime

gcloud

Jika ingin menghapus variabel lingkungan runtime secara selektif, Anda dapat menggunakan flag --remove-env-vars pada waktu deployment:

gcloud functions deploy FUNCTION_NAME --remove-env-vars FOO,BAZ

Atau, Anda dapat menghapus semua variabel lingkungan runtime yang ditetapkan sebelumnya dengan flag --clear-env-vars:

gcloud functions deploy FUNCTION_NAME --clear-env-vars

UI Konsol Google Cloud

Untuk menghapus variabel lingkungan runtime menggunakan Google Cloud Console:

  1. Buka halaman Ringkasan Fungsi di konsol Google Cloud:

    Buka halaman Ringkasan Cloud Functions.

  2. Klik fungsi yang ada untuk membuka halaman detailnya.

  3. Klik Edit.

  4. Buka bagian Setelan runtime, build, dan koneksi.

  5. Pilih tab Runtime.

  6. Di bagian Variabel lingkungan runtime, klik ikon sampah di samping key-value pair untuk menghapusnya.

Variabel lingkungan runtime ditetapkan secara otomatis

Bagian ini mencantumkan variabel lingkungan runtime yang ditetapkan secara otomatis.

Kunci Deskripsi
FUNCTION_TARGET Dicadangkan: Fungsi yang akan dieksekusi.
FUNCTION_SIGNATURE_TYPE Dicadangkan: Jenis fungsi: http untuk fungsi HTTP, dan event untuk fungsi berbasis peristiwa.
K_SERVICE Dicadangkan: Nama resource fungsi.
K_REVISION Dicadangkan: ID versi fungsi.
PORT Dicadangkan: Port tempat fungsi dipanggil.
gcloud functions deploy envVarMemory \
--runtime nodejs10 \
--set-env-vars FUNCTION_MEMORY_MB=2Gi \
--memory 2Gi \
--trigger-http

Menetapkan dan mengambil variabel lingkungan runtime: sebuah contoh

Tetapkan variabel lingkungan runtime:

Node.js

gcloud functions deploy envVar \
--runtime nodejs20 \
--set-env-vars FOO=bar \
--trigger-http

Gunakan flag --runtime untuk menentukan ID runtime dari versi Node.js yang didukung untuk menjalankan fungsi Anda.

Python

gcloud functions deploy env_vars \
--runtime python312 \
--set-env-vars FOO=bar \
--trigger-http

Gunakan flag --runtime untuk menentukan ID runtime versi Python yang didukung untuk menjalankan fungsi Anda.

Go

gcloud functions deploy EnvVar \
--runtime go121 \
--set-env-vars FOO=bar \
--trigger-http

Gunakan flag --runtime untuk menentukan ID runtime versi Go yang didukung untuk menjalankan fungsi Anda.

Java

gcloud functions deploy java-envVar-function \
--entry-point functions.EnvVars \
--runtime java17 \
--memory 512MB \
--set-env-vars FOO=bar \
--trigger-http

Gunakan flag --runtime untuk menentukan ID runtime versi Java yang didukung guna menjalankan fungsi Anda.

C#

gcloud functions deploy csharp-envVar-function \
--entry-point EnvironmentVariables.Function \
--runtime dotnet6 \
--set-env-vars FOO=bar \
--trigger-http

Gunakan flag --runtime untuk menentukan ID runtime versi .NET yang didukung guna menjalankan fungsi Anda.

Ruby

gcloud functions deploy env_vars --runtime ruby32 \
--set-env-vars FOO=bar \
--trigger-http

Gunakan flag --runtime untuk menentukan ID runtime versi Ruby yang didukung untuk menjalankan fungsi Anda.

PHP

 gcloud functions deploy envVar --runtime php82 \
--set-env-vars FOO=bar \
--trigger-http

Gunakan tanda --runtime untuk menentukan ID runtime versi PHP yang didukung untuk menjalankan fungsi Anda.

Saat runtime, gakses variabel secara terprogram:

Node.js

Di Node.js, gunakan properti process.env untuk mengakses variabel lingkungan runtime:

exports.envVar = (req, res) => {
  // Sends 'bar' as response
  res.send(process.env.FOO);
};

Python

Di Python, gunakan os.environ untuk mengakses variabel lingkungan runtime:

import os

def env_vars(request):
    return os.environ.get("FOO", "Specified environment variable is not set.")

Go

Di Go, gunakan os.Getenv() untuk mengakses variabel lingkungan runtime:


// Package tips contains tips for writing Cloud Functions in Go.
package tips

import (
	"fmt"
	"net/http"
	"os"
)

// EnvVar is an example of getting an environment variable in a Go function.
func EnvVar(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "FOO: %q", os.Getenv("FOO"))
}

Java

Di Java, gunakan System.getenv untuk mengakses variabel lingkungan runtime:


import com.google.cloud.functions.HttpFunction;
import com.google.cloud.functions.HttpRequest;
import com.google.cloud.functions.HttpResponse;
import java.io.BufferedWriter;
import java.io.IOException;

public class EnvVars implements HttpFunction {

  // Returns the environment variable "foo" set during function deployment.
  @Override
  public void service(HttpRequest request, HttpResponse response)
      throws IOException {
    BufferedWriter writer = response.getWriter();
    String foo = System.getenv("FOO");
    if (foo == null) {
      foo = "Specified environment variable is not set.";
    }
    writer.write(foo);
  }
}

C#

Saat runtime, variabel lingkungan dapat diakses menggunakan Environment.GetEnvironmentVariable di C#:

using Google.Cloud.Functions.Framework;
using Microsoft.AspNetCore.Http;
using System;
using System.Threading.Tasks;

namespace EnvironmentVariables;

public class Function : IHttpFunction
{
    public async Task HandleAsync(HttpContext context)
    {
        string foo = Environment.GetEnvironmentVariable("FOO")
            ?? "Specified environment variable is not set.";
        await context.Response.WriteAsync(foo);
    }
}

Ruby

Saat runtime, variabel lingkungan dapat diakses menggunakan ENV di Ruby:

require "functions_framework"

FunctionsFramework.http "env_vars" do |_request|
  ENV["FOO"] || "Specified environment variable is not set."
end

PHP

Saat runtime, variabel lingkungan dapat diakses menggunakan fungsi getenv PHP:


use Psr\Http\Message\ServerRequestInterface;

function envVar(ServerRequestInterface $request): string
{
    return getenv('FOO') . PHP_EOL;
}

Menggunakan variabel lingkungan build

Anda juga dapat menetapkan variabel lingkungan build untuk runtime yang mendukung buildpack.

Variabel lingkungan build adalah key-value pair yang di-deploy bersama fungsi yang memungkinkan Anda meneruskan informasi konfigurasi ke buildpack. Misalnya, Anda mungkin ingin menyesuaikan opsi compiler. Anda dapat menambahkan atau menghapus variabel lingkungan build ini menggunakan Google Cloud CLI atau UI Google Cloud Console.

Menetapkan variabel lingkungan build

Gunakan metode ini untuk menetapkan variabel baru atau mengganti sepenuhnya variabel yang ada. Untuk membuat perubahan tambahan, gunakan proses update (flag --update-build-env-vars di gcloud) yang dijelaskan di bagian berikutnya.

gcloud

Untuk menetapkan variabel menggunakan Google Cloud CLI, gunakan flag --set-build-env-vars pada waktu deployment:

gcloud beta functions deploy FUNCTION_NAME --set-build-env-vars FOO=bar FLAGS...

Anda juga dapat menetapkan beberapa variabel lingkungan build menggunakan daftar yang dipisahkan koma:

gcloud functions deploy FUNCTION_NAME --set-build-env-vars FOO=bar,BAZ=boo FLAGS...

Jika ingin menyimpan konfigurasi dalam file (misalnya di bawah kontrol sumber), Anda dapat menggunakan file YAML dengan flag --build-env-vars-file:

gcloud functions deploy FUNCTION_NAME --build-env-vars-file FILE_NAME.yaml FLAGS...

dengan isi file *.yaml adalah:

 FOO: bar
 BAZ: boo

Pada contoh di atas, FLAGS... merujuk pada opsi lain yang Anda teruskan selama men-deploy fungsi Anda. Untuk referensi lengkap perintah deploy, lihat gcloud beta functions deploy.

UI Konsol Google Cloud

Anda juga dapat menetapkan variabel lingkungan build selama pembuatan fungsi di Google Cloud Console:

  1. Buka halaman Ringkasan Fungsi di konsol Google Cloud:

    Buka halaman Ringkasan Cloud Functions.

  2. Klik Create function.

  3. Lengkapi kolom wajib isi untuk fungsi Anda.

  4. Buka bagian Setelan runtime, build, dan koneksi.

  5. Pilih tab Build.

  6. Di bagian Variabel lingkungan build, klik Tambahkan variabel, lalu tambahkan nama dan nilai.

Mengupdate variabel lingkungan build

Anda juga dapat mengupdate variabel lingkungan build untuk fungsi yang ada. Ini adalah pendekatan non-destruktif yang mengubah atau menambahkan variabel lingkungan build, tetapi tidak menghapusnya.

gcloud

Untuk menetapkan variabel menggunakan Google Cloud CLI, gunakan flag --update-build-env-vars pada waktu deployment:

gcloud functions deploy FUNCTION_NAME --update-build-env-vars FOO=bar

Anda juga bisa mengupdate beberapa variabel lingkungan build menggunakan daftar yang dipisahkan koma:

gcloud functions deploy FUNCTION_NAME --update-build-env-vars FOO=bar,BAZ=boo

UI Konsol Google Cloud

Untuk memperbarui variabel lingkungan build menggunakan Google Cloud Console:

  1. Buka halaman Ringkasan Fungsi di konsol Google Cloud:

    Buka halaman Ringkasan Cloud Functions.

  2. Klik fungsi yang ada untuk membuka halaman detailnya.

  3. Klik Edit.

  4. Buka bagian Setelan runtime, build, dan koneksi.

  5. Pilih tab Build.

  6. Lakukan pengeditan di bagian Variabel lingkungan build.

Menghapus variabel lingkungan build

gcloud

Jika ingin menghapus variabel lingkungan build secara selektif, Anda dapat menggunakan flag --remove-build-env-vars pada waktu deployment:

gcloud functions deploy FUNCTION_NAME --remove-build-env-vars FOO,BAZ

Atau, Anda dapat menghapus semua variabel lingkungan build yang ditetapkan sebelumnya dengan flag --clear-build-env-vars:

gcloud functions deploy FUNCTION_NAME --clear-build-env-vars

UI Konsol Google Cloud

Untuk menghapus variabel lingkungan build menggunakan Google Cloud Console:

  1. Buka halaman Ringkasan Fungsi di konsol Google Cloud:

    Buka halaman Ringkasan Cloud Functions.

  2. Klik fungsi yang ada untuk membuka halaman detailnya.

  3. Klik Edit.

  4. Buka bagian Setelan runtime, build, dan koneksi.

  5. Pilih tab Build.

  6. Di bagian Variabel lingkungan build, klik ikon sampah di samping key-value pair untuk menghapusnya.

Siklus proses variabel

Semua variabel lingkungan terikat pada deployment Cloud Function, dan hanya dapat ditetapkan atau diubah dengan deployment. Jika deployment gagal karena suatu alasan, perubahan apa pun pada variabel lingkungan tidak akan diterapkan. Perubahan variabel lingkungan memerlukan deployment yang berhasil.

Praktik terbaik dan variabel lingkungan yang dicadangkan

Beberapa variabel lingkungan tambahan ditetapkan secara otomatis bergantung pada runtime yang digunakan fungsi Anda. Hal ini didasarkan pada sistem operasi runtime (misalnya, DEBIAN_FRONTEND, SHLVL, atau PATH) dan runtime bahasa (misalnya, NODE_ENV, VIRTUAL_ENV, atauGOPATH).

Variabel lingkungan yang disediakan oleh lingkungan (selain yang tercantum dalam Variabel lingkungan disetel secara otomatis) dapat berubah pada versi runtime mendatang. Sebagai praktik terbaik, sebaiknya Anda tidak bergantung pada atau mengubah variabel lingkungan yang belum ditetapkan secara eksplisit.

Mengubah variabel lingkungan yang disediakan oleh lingkungan dapat menyebabkan hasil yang tidak dapat diprediksi. Upaya untuk mengubah variabel lingkungan tersebut dapat diblokir atau, lebih buruk lagi, menyebabkan konsekuensi yang tidak diinginkan seperti fungsi yang tidak dapat dimulai. Sebagai praktik terbaik, pertimbangkan untuk memberi awalan pada variabel lingkungan apa pun dengan kunci unik untuk menghindari konflik.

Terakhir, Anda tidak dapat menggunakan variabel lingkungan berikut:

Kunci Deskripsi
Kosong ('') Kunci tidak boleh berupa string kosong.
= Kunci tidak boleh berisi karakter '='.
X_GOOGLE_ Kunci tidak boleh berisi awalan X_GOOGLE_.

Batas ukuran

Jumlah total byte yang digunakan oleh nama dan nilai variabel lingkungan runtime untuk setiap fungsi dibatasi hingga 32 KiB. Tidak ada batasan khusus untuk setiap kunci atau nilai dalam kapasitas keseluruhan ini.

Untuk variabel lingkungan build, maksimal 100 variabel dapat ditentukan, dengan string definisi foo=bar dibatasi hingga 64KiB.

Mengelola secret

Variabel lingkungan dapat digunakan untuk konfigurasi fungsi, tetapi tidak direkomendasikan sebagai cara untuk menyimpan rahasia seperti kredensial database atau kunci API. Nilai yang lebih sensitif ini harus disimpan di luar kode sumber dan di luar variabel lingkungan. Beberapa lingkungan eksekusi atau penggunaan beberapa framework dapat mengakibatkan isi variabel lingkungan dikirim ke log, dan penyimpanan kredensial sensitif dalam file YAML, skrip deployment, atau di bawah kontrol sumber tidak direkomendasikan.

Untuk menyimpan secret, sebaiknya Anda menggunakan Secret Manager. Untuk mengonfigurasi Cloud Functions agar dapat mengakses secret yang disimpan di Secret Manager, lihat Mengonfigurasi secret. Perlu diperhatikan bahwa tidak ada integrasi khusus Cloud Functions dengan Cloud KMS.

Portabilitas

Ada kemungkinan variabel lingkungan yang saat ini berfungsi dengan Cloud Function Anda tidak akan berfungsi dengan lingkungan runtime yang berbeda, seperti dalam bahasa lain atau dengan alat atau library tertentu. Mungkin juga mereka tidak akan diterima oleh platform yang berbeda.

Anda dapat menghindari masalah tersebut dengan mengikuti standar POSIX untuk variabel lingkungan. Jika Anda menggunakan Google Cloud Console untuk mengedit variabel, Google Cloud Console akan memperingatkan setiap kali Anda menentukan variabel yang mungkin memiliki masalah portabilitas (tetapi tidak akan mencegah deployment). Sebagai aturan umum, sebaiknya kunci variabel lingkungan hanya terdiri dari huruf besar, angka, dan <underscore> (_), seperti yang ditentukan dalam Set Karakter Portabel, dan tidak dimulai dengan angka.