<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 プロキシから拡張機能を使用する前に、次のことを行う必要があります。
Cloud Functions API を有効にします。
関数に必要なアクセスレベルの IAM を介してユーザーにアクセス権を付与します。たとえば、関数へのアクセスを、拡張機能の構成に使用するサービス アカウントのみに制限できます。
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 エンコード値になります。 | なし。 | はい。 |