Google Cloud Functions 擴充功能

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

1.3.1 版本

叫用透過 Google Cloud 專案部署的 Cloud Functions。

此擴充功能目前支援叫用 HTTP 觸發條件函式

必要條件

這項內容提供設定與使用這項擴充功能的參考資源。透過 Extension 摘要政策使用 API Proxy 擴充功能之前,您必須:

  1. 啟用 Cloud Functions API

  2. 在 Cloud Functions 中為 Google Cloud 專案定義部署函式。

  3. 透過 IAM 授予使用者存取權,取得您想要的函式存取層級。舉例來說,您可以限制只有用來設定擴充功能的服務帳戶才能存取函式。

  4. 使用 GCP 主控台為服務帳戶產生金鑰

  5. 使用設定參考資料新增及設定擴充功能時,請使用產生的金鑰 JSON 檔案內容。

關於 Cloud Functions

有了 Google Cloud Functions,您就能在 Google Cloud 上建立及部署函式,然後從其他程式碼叫用這些函式。如需 Cloud Functions 的介紹,請參閱其中一個快速入門導覽課程

範例

以下範例說明如何透過擴充功能摘要政策,在 Cloud Functions 中叫用函式。

叫用 Node.js 函式

下例示範的是呼叫 Google Cloud Functions 擴充功能的擴充功能摘要政策。擴充功能呼叫了預設的「hello world」函式。

下列 Node.js JavaScript 已在 Cloud Functions 部署為 GCP 帳戶。如果要求包含訊息屬性,程式碼會傳回該屬性。如果沒有,則會傳回「Hello World!」。做為回應

/**
 * 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);
};

這個範例包含設定的 Google Cloud Functions 擴充功能,其中包含驗證及取得在 Cloud Functions 中叫用程式碼所需的憑證。

上述函式程式碼會以 helloWorld 的形式儲存在 Cloud Functions 中。下列 Extension 摘要政策設定程式碼使用這個名稱,以及與部署函式所在 Cloud Functions 環境的特定狀況相符的區域和專案 ID 值。

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

下列 AssignMessage 政策會擷取回應值,以便偵錯。

<?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>

上述要求的回應會如下所示:

Hello yourself!

parsed 的預設值為 true。此範例會在政策的 <Output> 標記中設定 parsed="false"。 限制政策無法剖析 JSON 回應。 在大部分的情況下,使用 Cloud Functions 擴充功能時您會設定 parsed="false"。 請參閱 <Output>元素

如果 Cloud 函式傳回 JSON 回應,且您設定了 parsed="true",則擴充功能的回應會是物件參照。如要從參照中擷取回應,請使用下列語法:{objectName}.{jsonKey}。例如:

function.response.message

動作

叫用

叫用 Cloud 函式。

此擴充功能目前支援叫用 HTTP 觸發條件函式

語法

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

範例

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

要求參數

參數 說明 類型 預設 必填
區域 部署函式的 Google Cloud 區域 字串。 無。 是。
專案 ID GCP 專案 ID。 字串。 無。 是。
functionName 要叫用的 HTTP 函式的名稱。這是您建立函式時使用的名稱 (不一定是函式程式碼中的名稱)。 字串。 無。 是。
method 叫用函式時使用的 HTTP 方法。 字串。 GET 編號
payload 與函式叫用一起傳送的酬載。 JSON 檔案。 無。 編號

回應

指定函式的回應值 (如果有的話)。

回應屬性

無。

設定參考資料

設定及部署這項擴充功能以用於 API Proxy 時,請使用下列指令。如需使用 Apigee 控制台設定擴充功能的步驟,請參閱新增及設定擴充功能

常見擴充功能屬性

每個擴充功能都有下列屬性。

屬性 說明 預設 必要
name 您要為這項擴充功能設定的名稱。 相容
packageName Apigee Edge 指定的擴充功能套件名稱。 相容
version 擴充功能的擴充功能套件版本號碼。 相容
configuration 您要新增的擴充功能專屬的設定值。請參閱「這個擴充功能套件的屬性」一文 相容

這個擴充功能套件的屬性

指定這個擴充功能專用的下列設定屬性值。

屬性 說明 預設 必填
憑證 您在 Apigee Edge 控制台中輸入的服務帳戶金鑰檔案內容。透過 Management API 傳送時,這是從服務帳戶金鑰檔案產生的 Base64 編碼值。 無。 是。