Google Cloud Functions 拡張機能

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

<ph type="x-smartling-placeholder">

バージョン 1.3.1

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 ポリシーを示しています。この拡張機能ではデフォルトの「hello world」がCloud Functions API を有効にするときに含める必要があります。

次の Node.js JavaScript が、GCP アカウントの Cloud Functions にデプロイされます。リクエストに message プロパティが含まれている場合、コードはそれを返します。それ以外の場合は、「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 のコードを呼び出すための認証と認可に必要な認証情報が構成された Google Cloud Functions 拡張機能が含まれています。

上の関数コードは、単純に helloWorld として Cloud Functions に保存されます。次の ExtensionCallout ポリシー構成コードでは、この名前と、関数がデプロイされる Cloud Functions 環境の詳細に一致するリージョン ID とプロジェクト 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 Functions の関数が JSON レスポンスを返し、parsed="true" を設定すると、拡張機能からのレスポンスはオブジェクト参照になります。参照からレスポンスを抽出するには、{objectName}.{jsonKey} 構文を使用します。例:

function.response.message

操作

<ph type="x-smartling-placeholder">

invoke

Cloud Functions の関数を呼び出します。

現在、この拡張機能は 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 のリージョン 文字列 なし。 はい。
projectId GCP プロジェクト ID。 文字列 なし。 はい。
functionName 呼び出す HTTP 関数の名前。これは、関数の作成時に使用した名前です(関数のコードの名前にする必要はありません)。 文字列 なし。 はい。
method 関数の呼び出し時に使用する HTTP メソッド。 文字列 GET いいえ。
payload 関数の呼び出しで送信するペイロード。 できます。 なし。 いいえ。

レスポンス

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

レスポンスのプロパティ

なし。

構成リファレンス

API プロキシで使用するためにこの拡張機能を構成してデプロイする場合は、以下を使用します。Apigee コンソールを使用して拡張機能を構成する手順については、拡張機能の追加と構成をご覧ください。

拡張機能の一般的なプロパティ

すべての拡張機能には次のプロパティがあります。

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

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

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

プロパティ 説明 デフォルト 必須
credentials Apigee Edge コンソールで入力した場合は、これがサービス アカウント キー ファイルの内容です。Management API 経由で送信する場合は、サービス アカウント キー ファイルから生成された base64 エンコード値になります。 なし。 はい。