Ekstensi Google Cloud Functions

Anda sedang melihat dokumentasi Apigee Edge.
Buka Dokumentasi Apigee X.
info

Versi 1.3.1

Panggil Cloud Functions yang di-deploy melalui project Google Cloud Anda.

Saat ini, ekstensi ini mendukung pemanggilan fungsi pemicu HTTP.

Prasyarat

Konten ini menyediakan referensi untuk mengonfigurasi dan menggunakan ekstensi ini. Sebelum menggunakan ekstensi dari proxy API menggunakan kebijakan Extensionscallout, Anda harus:

  1. Aktifkan Cloud Functions API.

  2. Tentukan dan deploy fungsi di Cloud Functions untuk project Google Cloud Anda.

  3. Beri pengguna akses melalui IAM untuk tingkat akses yang Anda inginkan untuk fungsi tersebut. Misalnya, Anda dapat membatasi akses ke fungsi hanya untuk akun layanan yang Anda gunakan untuk mengonfigurasi ekstensi.

  4. Gunakan GCP Console untuk membuat kunci untuk akun layanan.

  5. Gunakan konten file JSON utama yang dihasilkan saat menambahkan dan mengonfigurasi ekstensi menggunakan referensi konfigurasi.

Tentang Cloud Functions

Dengan Google Cloud Functions, Anda dapat membuat dan men-deploy fungsi di Google Cloud, lalu memanggil fungsi tersebut dari kode lain. Sebagai pengantar Cloud Functions, cobalah salah satu panduan memulai.

Contoh

Contoh berikut menggambarkan cara memanggil fungsi di Cloud Functions menggunakan kebijakan Extensioncallout.

Memanggil fungsi Node.js

Contoh berikut menampilkan kebijakan Extensioncallout yang memanggil ekstensi Google Cloud Functions. Ekstensi memanggil "hello world" default disertakan saat Anda mengaktifkan Cloud Functions API.

Node.js JavaScript berikut di-deploy di Cloud Functions untuk akun GCP. Jika permintaan menyertakan properti pesan, kode akan menampilkan properti tersebut. Jika tidak, kueri akan menampilkan "Hello World!" (Halo Dunia) sebagai responsnya.

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */
exports.helloWorld = (req, res) => {
  let message = req.query.message || req.body.message || 'Hello World!';
  res.status(200).send(message);
};

Contoh ini mencakup ekstensi Google Cloud Functions yang dikonfigurasi dengan kredensial yang diperlukan untuk mengautentikasi dan memperoleh otorisasi untuk memanggil kode di Cloud Functions.

Kode fungsi sebelumnya disimpan di Cloud Functions hanya sebagai helloWorld. Kode konfigurasi kebijakan Extensioncallout berikut menggunakan nama ini, beserta nilai region dan project ID yang cocok dengan detail lingkungan Cloud Functions tempat fungsi di-deploy.

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output parsed="false">function.response</Output>

Kebijakan MenetapkanMessage berikut merekam nilai respons untuk tujuan proses debug.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Function-Response">
    <DisplayName>Get Function Response</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{function.response}</Payload>
    </Set>
</AssignMessage>

Respons terhadap permintaan di atas adalah seperti berikut:

Hello yourself!

Nilai default parsed adalah true. Contoh ini menetapkan parsed="false" dalam tag <Output> kebijakan, yang mencegah kebijakan mengurai respons JSON. Untuk sebagian besar situasi saat menggunakan ekstensi Cloud Functions, Anda menetapkan parsed="false". Lihat <Output> elemen untuk informasi selengkapnya.

Jika Cloud Function menampilkan respons JSON dan Anda menetapkan parsed="true", respons dari ekstensi tersebut adalah referensi objek. Untuk mengekstrak respons dari referensi, gunakan sintaksis berikut: {objectName}.{jsonKey}. Contoh:

function.response.message

Tindakan

panggil

Memanggil fungsi Cloud.

Saat ini, ekstensi ini mendukung pemanggilan fungsi pemicu HTTP.

Sintaksis

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "deployment-region",
    "projectId" : "project-id",
    "functionName" : "function-name",
    "method" : "http-method",
    "payload" : { json-payload }
  }
]]></Input>
<Output>function.response</Output>

Contoh

<Action>invoke</Action>
<Input><![CDATA[
  {
    "region" : "us-central1",
    "projectId" : "my-project",
    "functionName" : "hello-world",
    "method" : "POST",
    "payload" : { "message" : "Hello yourself!" }
  }
]]></Input>
<Output>function.response</Output>

Parameter permintaan

Parameter Deskripsi Jenis Default Wajib
region Region Google Cloud tempat fungsi di-deploy. String. Tidak ada. Ya.
projectId ID project GCP. String. Tidak ada. Ya.
functionName Nama fungsi HTTP yang akan dipanggil. Ini adalah nama yang Anda gunakan saat membuat fungsi (tidak harus nama dari kode fungsi). String. Tidak ada. Ya.
method Metode HTTP yang akan digunakan saat memanggil fungsi. String. GET Tidak.
payload Payload yang akan dikirim dengan pemanggilan fungsi. JSON. Tidak ada. Tidak.

Respons

Nilai respons fungsi yang ditentukan, jika ada.

Properti respons

Tidak ada.

Referensi Konfigurasi

Gunakan hal berikut saat Anda mengonfigurasi dan men-deploy ekstensi ini untuk digunakan di proxy API. Untuk mengetahui langkah-langkah dalam mengonfigurasi ekstensi menggunakan konsol Apigee, lihat Menambahkan dan mengonfigurasi ekstensi.

Properti ekstensi umum

Properti berikut ada untuk setiap ekstensi.

Properti Deskripsi Default Wajib
name Nama yang Anda berikan pada konfigurasi ekstensi ini. Tidak ada Ya
packageName Nama paket ekstensi seperti yang diberikan oleh Apigee Edge. Tidak ada Ya
version Nomor versi untuk paket ekstensi tempat Anda mengonfigurasi ekstensi. Tidak ada Ya
configuration Nilai konfigurasi khusus untuk ekstensi yang Anda tambahkan. Lihat Properti untuk paket ekstensi ini Tidak ada Ya

Properti untuk paket ekstensi ini

Tentukan nilai untuk properti konfigurasi berikut khusus untuk ekstensi ini.

Properti Deskripsi Default Wajib
credentials Saat dimasukkan di konsol Apigee Edge, ini adalah isi file kunci akun layanan Anda. Saat dikirim melalui Management API, ini adalah nilai berenkode base64 yang dihasilkan dari file kunci akun layanan. Tidak ada. Ya.