Google Cloud Functions 拡張機能

バージョン 1.0.5

Google Cloud プロジェクトを介してデプロイされた Cloud Functions を呼び出します。

現時点では、この拡張機能は HTTP トリガー関数の呼び出しをサポートしています。

前提条件

ここでは、この拡張機能を構成して使用する方法についてのリファレンスを提供します。ExtensionCallout ポリシーで API プロキシ経由で拡張機能を使用する前に、次のことを行う必要があります。

  1. Cloud Functions API を有効にします。

  2. Google Cloud プロジェクト向けに Cloud Functions で関数を定義してデプロイします。

  3. 拡張機能のために必要となるアクセスレベルに IAM を経由してユーザー アクセスを付与します。たとえば、拡張機能の構成に使用するサービス アカウントのみに、関数へのアクセスを制限できます。

  4. GCP Console でサービス アカウントキーを作成します

  5. 拡張機能の追加と構成を行うときに、構成リファレンスを使用して、生成されたキーの JSON ファイルのコンテンツを使用します。

Cloud Functions について

Google Cloud Functions を使用して Google Cloud 上に関数を作成し、デプロイして、他のコードからこの関数を呼び出すことができます。Cloud Functions の概要を知るには、クイックスタートのいずれかを試してみることをおすすめします。

サンプル

次の例は、ExtensionCallout ポリシーを使用して Cloud Functions で関数を呼び出す方法について説明しています。

Node.js 関数を呼び出す

次の例は Google Cloud Functions 拡張機能を呼び出す ExtensionCallout ポリシーについて説明しています。Cloud Functions API が有効な場合、この拡張機能にデフォルトで組み込まれている「hello world」関数が呼び出されます。

次の Node.js JavaScript が GCP アカウント用の Cloud Functions にデプロイされています。リクエストにメッセージ プロパティが含まれていると、コードはこれを戻します。含まれていない場合は「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);
    };
    

この例には、Cloud Functions でコードを呼び出すための認証と権限が必要な認証情報を構成する Cloud Functions 拡張機能が含まれています。

前の関数コードは、単純に helloWorld として Cloud Functions に保存されています。次の ExtensionCallout ポリシー構成コードは、この名前と、関数がデプロイされる 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>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!
    

アクション

invoke

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>
    

リクエスト パラメータ

パラメータ 説明 デフォルト 必須
region 関数がデプロイされる Google Cloud のリージョン 文字列 なし
projectId GCP プロジェクト ID。 文字列 なし
functionName 呼び出す HTTP 関数の名前。関数を作成するときに使用した名前です(必ずしも関数のコードに基づく名前ではありません)。 文字列 なし
method 関数を呼び出すときに使用する HTTP メソッド。 文字列 GET ×
payload 関数の呼び出しと一緒に送信されるペイロード。 JSON なし ×

レスポンス

指定された関数のレスポンス値(ある場合)。

レスポンス プロパティ

なし

構成リファレンス

API プロキシで使用するためにこの拡張機能を構成およびデプロイする場合は、次の項目を参照してください。Apigee Console で拡張機能を構成する手順については、拡張機能の追加と構成をご覧ください。

拡張機能の共通プロパティ

以下のプロパティはすべての拡張機能に存在します。

プロパティ 説明 デフォルト 必須
name この拡張機能の構成に指定する名前。 なし
packageName Apigee Edge によって指定された、拡張機能パッケージの名前。 なし
version 構成する拡張機能が含まれる拡張機能パッケージのバージョン番号。 なし
configuration 追加する拡張機能に固有の構成値。こちらの拡張機能パッケージのプロパティをご覧ください。 なし

この拡張機能パッケージのプロパティ

この拡張機能に固有の以下の構成プロパティに値を指定します。

プロパティ 説明 デフォルト 必須
credentials Apigee Edge コンソール内で入力する場合は、サービス アカウントのキーファイルの内容です。管理 API を使用して設定する場合は、サービス アカウントのキーファイルから生成された、base64 でエンコード済みの値です。 なし