Ekstensi Google Cloud Functions

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

Versi 2.0.1

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

Saat ini, ekstensi ini mendukung pemanggilan fungsi pemicu HTTP.

Prasyarat

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

  1. Mengaktifkan Cloud Functions API.

  2. Menentukan dan men-deploy fungsi di Cloud Functions untuk project Google Cloud Anda.

  3. Memberikan akses pengguna 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. Menggunakan Konsol GCP untuk membuat kunci untuk akun layanan.

  5. Menggunakan konten file JSON kunci 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. Untuk pengantar Cloud Functions, coba salah satu panduan memulai.

Contoh

Contoh berikut mengilustrasikan 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 ini memanggil fungsi "hello world" default yang disertakan saat Anda mengaktifkan Cloud Functions API.

JavaScript Node.js berikut di-deploy di Cloud Functions untuk akun GCP. Jika permintaan menyertakan properti pesan, kode akan menampilkan properti tersebut. Jika tidak, kode akan menampilkan "Hello World!" 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 mendapatkan otorisasi untuk memanggil kode di Cloud Functions.

Kode fungsi sebelumnya disimpan di Cloud Functions sebagai helloWorld. Kode konfigurasi kebijakan ExtensionCallout berikut menggunakan nama ini, beserta nilai region dan ID project 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 AssignMessage berikut mengambil nilai respons untuk tujuan 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 akan seperti berikut:

Hello yourself!

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

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

function.response.message

Tindakan

panggil

Memanggil Cloud Function.

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.
metode 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 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 yang khusus untuk ekstensi ini.

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