Ekstensi Google Cloud Functions

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

Versi 1.0.5

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 ExtensionCallout, Anda harus:

  1. Aktifkan Cloud Functions API.

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

  3. Berikan akses pengguna melalui IAM pada 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 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. 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 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 menampilkannya. Jika tidak, respons akan menampilkan "Hello World!" (Halo Dunia!) sebagai respons.

/**
 * 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 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>

KebijakanAssignMessage berikut menangkap 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 akan seperti berikut:

Hello yourself!

Nilai default parsed adalah true. Contoh ini menetapkan parsed="false" dalam tag <Output> kebijakan, sehingga kebijakan tidak dapat mengurai respons JSON. Untuk sebagian besar situasi saat menggunakan ekstensi Cloud Functions, Anda menetapkan parsed="false". Lihat elemen<Output> untuk mengetahui 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 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 selalu 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. . 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 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 isi file kunci akun layanan Anda. Saat dikirim melalui API pengelolaan, nilai tersebut adalah nilai berenkode base64 yang dihasilkan dari file kunci akun layanan. Tidak ada. Ya.