Konfigurasi lingkungan

Sering kali fungsi Anda memerlukan konfigurasi tambahan, seperti tombol API pihak ketiga atau setelan yang dapat disesuaikan. Firebase SDK untuk Cloud Functions menawarkan konfigurasi lingkungan bawaan untuk memudahkan penyimpanan dan pengambilan jenis data ini untuk project Anda.

Menyetel konfigurasi lingkungan untuk project Anda

Untuk menyimpan data lingkungan, Anda dapat menggunakan perintah firebase functions:config:set di Firebase CLI. Setiap kunci dapat diberi namespace menggunakan titik untuk mengelompokkan konfigurasi yang terkait bersama-sama. Perlu diingat hanya karakter huruf kecil yang diterima untuk kunci; karakter huruf kapital tidak diizinkan.

Misalnya, untuk menyimpan ID Klien dan kunci API untuk "Some Service", Anda dapat menjalankan:

firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"

Mengambil konfigurasi lingkungan saat ini

Untuk memeriksa apa saja yang saat ini tersimpan di konfigurasi lingkungan project, Anda dapat menggunakan firebase functions:config:get. Perintah ini akan menampilkan JSON yang terlihat seperti ini:

{
  "someservice": {
    "key":"THE API KEY",
    "id":"THE CLIENT ID"
  }
}

Fungsi ini didasarkan pada API Konfigurasi Waktu Proses Google Cloud.

Mengakses konfigurasi lingkungan dalam suatu fungsi

Beberapa konfigurasi secara otomatis tersedia di bawah namespace firebase yang dicadangkan. Konfigurasi lingkungan disediakan di dalam fungsi Anda yang sedang berjalan melalui functions.config(). Untuk menggunakan konfigurasi tersebut, kode Anda dapat terlihat seperti ini:

const functions = require('firebase-functions');
const request = require('request-promise');

exports.userCreated = functions.database.ref('/users/{id}').onWrite(event => {
  let email = event.data.child('email').val();

  return request({
    url: 'https://someservice.com/api/some/call',
    headers: {
      'X-Client-ID': functions.config().someservice.id,
      'Authorization': `Bearer ${functions.config().someservice.key}`
    },
    body: {email: email}
  });
});

Menggunakan konfigurasi lingkungan untuk melakukan inisialisasi modul

Beberapa modul Node siap digunakan tanpa konfigurasi apa pun. Modul yang lain memerlukan konfigurasi tambahan agar diinisialisasi dengan benar. Sebaiknya simpan konfigurasi ini di variabel konfigurasi lingkungan, bukan dengan melakukan hard-coding. Langkah ini membantu Anda mempertahankan kode jauh lebih portabel, sehingga Anda dapat membuat aplikasi menjadi open source atau mudah beralih antara versi produksi dan penahapan.

Misalnya, untuk menggunakan modul Slack Node SDK, Anda dapat menulis hal berikut:

const functions = require('firebase-functions');
const IncomingWebhook = require('@slack/client').IncomingWebhook;
const webhook = new IncomingWebhook(functions.config().slack.url);

Sebelum melakukan penerapan, setel variabel konfigurasi lingkungan slack.url:

firebase functions:config:set slack.url=https://hooks.slack.com/services/XXX

Perintah Lingkungan Tambahan

  • firebase functions:config:unset key1 key2 menghapus kunci tertentu dari konfigurasi
  • firebase functions:config:clone --from <fromProject> meng-clone lingkungan project lain ke dalam project yang sedang aktif.

Variabel lingkungan yang diisi secara otomatis

Ada variabel lingkungan yang diisi secara otomatis dalam runtime fungsi dan fungsi yang diemulasikan secara lokal, seperti:

process.env.GCLOUD_PROJECT: Memberikan ID project Firebase

process.env.FIREBASE_CONFIG: Memberikan informasi konfigurasi project Firebase berikut:

{
  databaseURL: 'https://databaseName.firebaseio.com',
  storageBucket: 'projectId.appspot.com',
  projectId: 'projectId'
}

Konfigurasi ini diterapkan secara otomatis saat Anda menginisialisasi Firebase Admin SDK tanpa argumen. Jika menulis fungsi dalam JavaScript, lakukan inisialisasi seperti ini:

const admin = require('firebase-admin');
admin.initializeApp();

Jika Anda sedang menulis fungsi di TypeScript, lakukan inisialisasi seperti ini:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import 'firebase-functions';
admin.initializeApp();

Jika harus menginisialisasi Admin SDK dengan konfigurasi project default menggunakan kredensial akun layanan, Anda dapat memuat kredensial dari file dan menambahkannya ke FIREBASE_CONFIG seperti ini:

serviceAccount = require('./serviceAccount.json');

const adminConfig = JSON.parse(process.env.FIREBASE_CONFIG);
adminConfig.credential = admin.credential.cert(serviceAccount);
admin.initializeApp(adminConfig);

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.