このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge のドキュメントを表示する。
このページでは、Service Extensions に対応したロードバランサを使用する API トラフィックに対して API ポリシーが適用されるように Apigee Extension Processor を構成する方法を説明します。
API の管理に Apigee Extension Processor を使用する推奨ユースケースとメリットの詳細については、Apigee Extension Processor の概要をご覧ください。
Apigee Extension Processor は、サービス拡張機能の一種であるトラフィック拡張機能です。これを構成すると、Cloud Load Balancing を使用して、アプリケーション ロードバランサのデータ処理パスから Apigee Extension Processor にコールアウトを送信できます。ロードバランサとこのトラフィック拡張機能を構成した後、API トラフィックはロードバランサによって処理されます。Apigee Extension Processor のポリシーは、トラフィック拡張コールアウトを使用して API トラフィックに適用されます。
以降のセクションでは、Apigee Extension Processor の主な要素を構成するために必要な手順について説明します。
始める前に
Apigee Extension Processor の設定を開始する前に、次のタスクを完了してください。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Apigee, Compute Engine, and Network Services APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Apigee, Compute Engine, and Network Services APIs.
Google Cloud CLI をインストールします。
Google Cloud CLI をインストールしたら、
gcloud components update
コマンドを実行して最新の gcloud コンポーネントを取得します。Apigee インスタンスをまだプロビジョニングしていない場合は、バージョン
1-15-0-apigee-2
以降を使用してプロビジョニングします。インスタンスのバージョンは、 Google Cloud コンソールの Apigee UI にある [インスタンスの詳細] ページで確認できます。 Google Cloud コンソールの [インスタンス] ページに移動してインスタンスを選択すると、詳細が表示されます。
Extension Processor は、サブスクリプションまたは従量課金制の Apigee 組織で使用できます。サブスクリプションの Apigee 組織か従量課金制の Apigee 組織のどちらを使用しているかわからない場合は、Apigee 組織管理者にお問い合わせください。有料の Apigee インスタンスのプロビジョニングの詳細については、始める前にをご覧ください。
- 使用する Apigee インスタンスで VPC とサブネットが有効になっていることを確認します。 Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
-
サービス アカウントを作成して管理する: サービス アカウント管理者(
roles/iam.serviceAccountAdmin
) -
サービス拡張機能を作成して管理する: Service Extensions 管理者(
roles/networkservices.serviceExtensionsAdmin
) - ネットワーク エンドポイント グループ(NEG)を作成して管理する: Compute インスタンス管理者(
roles/compute.instanceAdmin
) -
ネットワーキング リソースを作成して管理する: Compute ネットワーク管理者(
roles/compute.networkAdmin
) - バックエンド サービスを作成して管理する: Compute ロードバランサ管理者(
roles/compute.loadBalancerAdmin
) -
Apigee リソースを作成して管理する: Apigee 組織管理者(
roles/apigee.admin
) PROJECT_ID
: Apigee インスタンスを含むプロジェクトの ID。REGION
は Apigee インスタンスの Google Cloud リージョンです。INSTANCE
: Apigee インスタンスの名前。VPC_NETWORK_NAME
は Apigee Extension Processor に使用する Google Cloud プロジェクト内の VPC ネットワークの名前です。SUBNET
は Apigee Extension Processor に使用する Google Cloud プロジェクト内のサブネットの名前です。- グローバル外部アプリケーション ロードバランサを作成する。
- ネットワーク エンドポイント グループ(NEG)を作成する。
- バックエンド サービスを作成する。
- URL マップを作成する。
- ターゲット プロキシを作成する。
- グローバル転送ルールを作成する。
- 現在のプロジェクトを使用するように
gcloud
構成を設定します。gcloud config set project PROJECT_ID
ここで、PROJECT_ID は Apigee インスタンスを含むプロジェクトの ID です。
- グローバル静的 IP アドレスを作成します。
gcloud compute addresses create IP_ADDRESS --ip-version=IPV4 --global
ここで、IP_ADDRESS は作成する IP アドレスの名前です。この名前は正規表現
(?:a-z?)
に一致している必要があります。 - IP アドレスを取得して、環境変数として保存します。
IP=$(gcloud compute addresses describe IP_ADDRESS --format="get(address)" --global)
ここで、IP_ADDRESS は前の手順で作成した IP アドレスの名前です。
- IP アドレスのワイルドカード DNS レコードを提供するサードパーティ サービスである
nip.io
の TLS 証明書を作成します。gcloud compute ssl-certificates create SSL_CERT_NAME \ --domains="nip.io"
ここで、SSL_CERT_NAME は作成する証明書の名前です。
- NEG を作成します。
gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=INTERNET_FQDN_PORT \ --default-port=443 \ --global
ここで、NEG_NAME は作成する NEG の名前です。
- httpbin.org のエンドポイントを NEG に追加します。
gcloud compute network-endpoint-groups update NEG_NAME \ --add-endpoint=fqdn=httpbin.org,port=443 \ --global
ここで、NEG_NAME は前の手順で作成した NEG の名前です。
- バックエンド サービスを作成します。
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --global
ここで、BACKEND_SERVICE_NAME は作成するバックエンド サービスの名前です。
- NEG をバックエンドに追加します。
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --network-endpoint-group=NEG_NAME \ --global-network-endpoint-group \ --global
ここで
- BACKEND_SERVICE_NAME は前の手順で作成したバックエンド サービスの名前です。
- NEG_NAME は前の手順で作成した NEG の名前です。
- URL_MAP_NAME は、作成する URL マップの名前です。
- BACKEND_SERVICE_NAME は、前の手順で作成したバックエンド サービスの名前です。
- TARGET_PROXY_NAME は、作成するターゲット プロキシの名前です。
- URL_MAP_NAME は、前の手順で作成した URL マップの名前です。
- SSL_CERT_NAME は、前の手順で
nip.io
用に作成した SSL 証明書の名前です。 - FORWARDING_RULE_NAME は、作成する転送ルールの名前です。
- IP_ADDRESS は、前の手順で作成した NEG エンドポイントの IP アドレスの名前です。
- TARGET_PROXY_NAME は、前の手順で作成したターゲット プロキシの名前です。
- 次のコマンドを使用して Apigee 環境を作成します。
curl -i -X POST -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments" -H "Content-Type:application/json" -d \ '{ "name": "ENV_NAME", "displayName": "ENV_NAME", "state": "ACTIVE", "deploymentType": "PROXY", "apiProxyType": "PROGRAMMABLE", "type": "COMPREHENSIVE", "properties": {"property": [ { "name": "apigee-service-extension-enabled", "value": "true" } ] } }'
ここで、ENV_NAME は作成する環境の名前です。名前は 2~32 文字(小文字、数字、ハイフン)で構成します。名前は文字で始まる必要があります。末尾をハイフンにすることはできません。この名前は、組織内の他の環境名と異なっている必要があります。
環境が作成されたことを確認します。
curl -i -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments"
環境のリストに、作成した環境が表示されます。
- 新しく作成した環境を Apigee インスタンスに接続します。
curl -i -X POST -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/instances/$INSTANCE/attachments" -H "Content-Type:application/json" -d \ '{ "environment": "ENV_NAME" }'
ここで、ENV_NAME は前の手順で作成した環境の名前。
このオペレーションには 10 分ほどかかることがあります。
- Apigee 環境グループを作成します。
curl -H "Authorization: Bearer $TOKEN" -X POST \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups" -H "Content-Type:application/json" -d \ '{ "name": "ENV_GROUP_NAME", "hostnames": ["ENV_GROUP_HOSTNAME"] }'
ここで
- ENV_GROUP_NAME は、作成する環境グループの名前です。
- ENV_GROUP_HOSTNAME は、作成する環境グループのホスト名です。ホスト名は完全修飾ドメイン名(FQDN)にする必要があります。
- 新しい環境を新しい環境グループに接続します。
curl -H "Authorization: Bearer $TOKEN" -X POST\ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups/ENV_GROUP_NAME/attachments" -H "content-type:application/json" -d \ '{ "name": "ENV_GROUP_NAME", "environment": "ENV_NAME" }'
ここで
- ENV_GROUP_NAME は、作成する環境グループの名前です。
- ENV_NAME は、前の手順で作成した環境の名前です。
- API プロキシを作成するの手順に沿って、次の仕様でターゲットなしのプロキシを作成します。
- プロキシ テンプレート: [ターゲットなし] を選択します。
- プロキシ名: プロキシ名を入力します。
- ベースパス: 任意のベースパスを設定します。このパスは使用されません。
プロキシの XML 仕様は次のようになります。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <APIProxy revision="1" name="extproc-sample"> <DisplayName/> <Description/> <CreatedAt>1739581781912</CreatedAt> <LastModifiedAt>1739582447868</LastModifiedAt> <BasePaths>/</BasePaths> <Policies></Policies> <ProxyEndpoints> <ProxyEndpoint>default</ProxyEndpoint> </ProxyEndpoints> </APIProxy>
- API プロキシをデプロイするの手順に沿って、前に作成した環境にプロキシをデプロイします。
- Apigee PSC サービス アタッチメントを取得します。
PSC_ATTACHMENT=$(curl -s -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/instances" \ | jq -r '.instances[] | select(.name = "'$INSTANCE'") | .serviceAttachment' \ )
サービス アタッチメントを表示するには:
echo $PSC_ATTACHMENT
レスポンスは次のようになります。
projects/apigee-psc-autopush/regions/us-west1/serviceAttachments/apigee-us-west1-1234567890-psc-service-attachment
- Apigee インスタンスと同じリージョンに PSC NEG を作成します。
gcloud compute network-endpoint-groups create apigee-neg-$REGION \ --network-endpoint-type=private-service-connect \ --psc-target-service=$PSC_ATTACHMENT \ --region=$REGION \ --network=$VPC_NETWORK_NAME \ --subnet=$SUBNET
レスポンスは次のようになります。
projects/ab123456cd78ef910g-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-abcd
- PSC NEG を参照する
HTTP/2
バックエンド サービスを作成します(存在しない場合)。gcloud compute backend-services create PSC_NEG_BACKEND_SERVICE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTP2 \ --global
ここで、PSC_NEG_BACKEND_SERVICE は作成するバックエンド サービスの名前です。
- PSC NEG バックエンド サービスを追加します。
gcloud compute backend-services add-backend PSC_NEG_BACKEND_SERVICE \ --network-endpoint-group=apigee-neg-$REGION \ --network-endpoint-group-region=$REGION \ --global
ここで、PSC_NEG_BACKEND_SERVICE は前の手順で作成したバックエンド サービスの名前です。
- バックエンド サービスのロギングを有効にします。
gcloud compute backend-services update PSC_NEG_BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=1.0
ここで、PSC_NEG_BACKEND_SERVICE は前の手順で作成したバックエンド サービスの名前です。
- EXT_PROC_NAME この名前は、前の手順で作成した API プロキシの名前と一致している必要があります。
- FORWARDING_RULE_NAME は、前の手順で作成した転送ルールの名前です。
- ENV_GROUP_HOSTNAME は、環境グループに使用されるドメイン名です。
- PSC_NEG_BACKEND_SERVICE は、前の手順で作成したバックエンド サービスの名前です。
- VerifyAPIKey ポリシーを Extension Processor に接続します。
- API プロダクトを作成します。
- デベロッパー アプリとアプリの認証情報を作成します。
- API キーを使用してロードバランサにリクエストを送信します。
- Cloud コンソールの Apigee UI で、[Develop] タブに移動し、前の手順で作成した Extension Processor プロキシを選択します。
- [ポリシー] セクションで、[+ ポリシーを追加] をクリックします。
- [ポリシーを追加] ペインで、ポリシーのリストから [VerifyAPIKey] を選択します。
- [VerifyAPIKey] ペインで、[ポリシー名] セクションと [表示名] セクションの必須項目に次の値を使用して入力します。
- ポリシー名: ポリシー名を入力します。例:
VA-verify-api-key
- 表示名: UI で使用するポリシー名を入力します。例:
VA-verify-api-key
- ポリシー名: ポリシー名を入力します。例:
- [作成] をクリックします。
Extension Processor プロキシに含まれる VerifyAPIKey ポリシーの XML 仕様は、次のようになります。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <VerifyAPIKey continueOnError="false" enabled="true" name="VA-verify-api-key"> <DisplayName>VA-verify-api-key</DisplayName> <Properties/> <APIKey ref="request.queryparam.x-api-key"/> </VerifyAPIKey>
- 新しいプロキシ リビジョンをデプロイします。
- API プロダクトの作成の手順に沿って、サービスの API プロダクトを作成します。必要に応じて、プロダクトの詳細を構成できます。
- オペレーションの手順に沿って、次の仕様に従う API オペレーション セットを API プロダクトに追加します。
- ソース: [API Proxy] を選択し、前の手順で作成したプロキシを選択します。
- オペレーション: 次のパスとメソッドを構成します。
- パス:
/get
、メソッド:GET
- パス:
/PROXY_NAME
、メソッド:GET
PROXY_NAME は、前の手順で作成したプロキシの名前です。
- パス:
Google Cloud コンソールで、[Apigee API の管理] ページに移動します。
- デベロッパーを作成します。
- [配布] > [デベロッパー] を選択します。
- [デベロッパー] ページで、[+ 作成] をクリックします。
- [デベロッパーを追加] ページで、任意の値を使用して必須項目に入力します。
- [追加] をクリックします。
- アプリを作成します。
- [配布] > [アプリ] を選択します。
- [アプリ] ページで、[+ 作成] をクリックします。
- [アプリを作成] ページの [アプリの詳細] セクションで、次の値を使用して必須項目に入力します。
- アプリ名: アプリの名前を入力します。例:
ext-proc-app
- デベロッパー: 前のステップで作成したデベロッパーを選択するか、リストから別のデベロッパーを選択します。
- アプリ名: アプリの名前を入力します。例:
- [アプリの認証情報] セクションで、[+ 認証情報を追加] をクリックします。
- [認証情報] セクションの [有効期限] リストボックスで、[無期限] を選択します。
- [プロダクト] セクションで [+ プロダクトを追加] をクリックして、[プロダクトを追加] ペインを開きます。
- 前の手順で作成した API プロダクトを選択します。
- [OK] をクリックします。
- [追加] をクリックして、[プロダクトを追加] ペインを閉じます。
- [作成] をクリックします。
- [アプリの詳細] ページの [認証情報] セクションで、[
visibility_off] をクリックして [キー] の値を表示します。
Key
の値をコピーします。このキーは、後の手順でサービスに対して API 呼び出しを行うために使用します。 - [アプリの詳細] ページの [認証情報] セクションで、[visibility_off] をクリックして [アプリ シークレット] の値を表示します。
- LB_DOMAIN_NAME は、ロードバランサと SSL 証明書に使用したドメイン名です。
- API_KEY は、前の手順で表示したデベロッパー アプリの認証情報の API キーです。
- Cloud コンソールの Apigee UI で、[Develop] タブに移動し、前の手順で作成したプロキシを選択します。
- [ポリシー] セクションで、[+ ポリシーを追加] をクリックします。
- [ポリシーを追加] ペインで、ポリシーのリストから [Assign Message] を選択します。
- [メッセージの割り当て] ペインで、[ポリシー名] セクションと [表示名] セクションの必須項目に次の値を使用して入力します。
- ポリシー名: ポリシー名を入力します。例:
AM-auth
- 表示名: UI に表示するポリシー名を入力します。例:
AM-auth
- ポリシー名: ポリシー名を入力します。例:
- [作成] をクリックします。
<Set>
要素の下に、次の子要素を追加します。<Set> <Authentication> <HeaderName>Authorization</HeaderName> <GoogleAccessToken> <Scopes> <Scope>https://www.googleapis.com/auth/cloud-platform</Scope> </Scopes> </GoogleAccessToken> </Authentication> </Set>
- [保存] をクリックします。
- Google サービス アカウントを使用して新しいリビジョンをデプロイします。
必要なロール
Apigee Extension Processor のインストールに必要な権限を取得するには、組織で次の IAM ロールを付与するよう管理者に依頼してください。
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
環境変数を設定する
Apigee インスタンスを含む Google Cloud プロジェクトで、次のコマンドを使用して環境変数を設定します。
export PROJECT_ID=PROJECT_ID
export ORG_NAME=$PROJECT_ID
export REGION=REGION
export INSTANCE=INSTANCE
export VPC_NETWORK_NAME=VPC_NETWORK_NAME
export SUBNET=SUBNET
ここで
環境変数が正しく設定されていることを確認するには、次のコマンドを実行して出力を確認します。
echo $PROJECT_ID $ORG_NAME $REGION $INSTANCE $VPC_NETWORK_NAME $SUBNET
認証トークンを構成する
認証トークンを構成するには、次のコマンドを実行します。
export TOKEN=$(gcloud auth print-access-token)
echo $TOKEN
バックエンド サービスのロードバランサを構成する
以降のセクションでは、httpbin.org を例として使用して、バックエンド サービスにグローバル外部アプリケーション ロードバランサを設定する手順について説明します。
グローバル外部アプリケーション ロードバランサを作成する
ロードバランサを作成する手順は、次のとおりです。
ネットワーク エンドポイント グループ(NEG)を作成する
ロードバランサのネットワーク エンドポイント グループ(NEG)を作成するには:
バックエンド サービスを作成する
ロードバランサによって公開されるバックエンド サービスを作成するには:
URL マップの作成
ロードバランサとバックエンド サービスの間に URL マップを作成するには、次のコマンドを使用します。
gcloud compute url-maps create URL_MAP_NAME \ --default-service BACKEND_SERVICE_NAME \ --global
ここで
ターゲット プロキシを作成する
ロードバランサのターゲット プロキシを作成するには、次のコマンドを使用します。
gcloud compute target-https-proxies create TARGET_PROXY_NAME \ --global \ --ssl-certificates SSL_CERT_NAME \ --global-ssl-certificates \ --url-map URL_MAP_NAME \ --global-url-map
ここで
グローバル転送ルールの作成
ロードバランサのグローバル転送ルールを作成するには、次のコマンドを使用します。
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=IP_ADDRESS \ --target-https-proxy=TARGET_PROXY_NAME \ --ports=443 \ --global
ここで
Apigee Extension Processor を構成する
以降のセクションでは、Apigee Extension Processor の設定に必要な手順について説明します。
Apigee 環境を作成する
Extension Processor プロキシを作成する
Extension Processor ロードバランサで使用する Apigee のターゲットなし API プロキシを作成するには:
トラフィック拡張機能を構成する
このセクションでは、Extension Processor 用のトラフィック サービス拡張機能を構成する方法について説明します。手順は次のとおりです。
Apigee Private Service Connect ネットワーク エンドポイント グループを作成する
このセクションでは、Apigee インスタンスへの接続に使用する Apigee Private Service Connect(PSC)ネットワーク エンドポイント グループ(NEG)を作成します。PSC の詳細については、サウスバウンド ネットワーキング パターンをご覧ください。
Apigee PSC NEG を作成するには:
ロードバランサ サービス拡張機能を作成する
ロードバランサ サービス拡張機能を作成する際は、拡張機能を記述するさまざまなフィールドの値を変更することで Extension Processor プロキシの動作をカスタマイズできます。次の表をご覧ください。
本文の処理 | 対応するイベント | メタデータ | 送信モード |
---|---|---|---|
リクエストとレスポンスの本文の処理 |
|
|
|
リクエスト本文の処理のみ |
|
|
|
レスポンス本文の処理のみ |
|
|
|
この手順では、リクエストとレスポンスの本文を処理できるロードバランサ サービス拡張機能を作成します。
curl -X POST "https://networkservices.googleapis.com/v1beta1/projects/$PROJECT_ID/locations/global/lbTrafficExtensions?lbTrafficExtensionId=global-xlb-httpbin-apim-policy" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "global-xlb-httpbin-apim-policy", "forwardingRules": [ "https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME" ], "extensionChains": [ { "name": "httpbin-apigee-extension-chain", "matchCondition": { "celExpression": "true" }, "extensions": [ { "name": "httpbin-apigee-extension", "authority": "ENV_GROUP_HOSTNAME", "service": "https://www.googleapis.com/compute/v1/projects/$PROJECT_ID/global/backendServices/PSC_NEG_BACKEND_SERVICE", "supportedEvents": [ "REQUEST_HEADERS", "REQUEST_BODY", "REQUEST_TRAILERS", "RESPONSE_HEADERS", "RESPONSE_BODY", "RESPONSE_TRAILERS" ], "timeout": "1s", "requestBodySendMode": "BODY_SEND_MODE_FULL_DUPLEX_STREAMED", "responseBodySendMode": "BODY_SEND_MODE_FULL_DUPLEX_STREAMED" } ] } ], "loadBalancingScheme": "EXTERNAL_MANAGED", "metadata": { "apigee-extension-processor": "EXT_PROC_NAME", "apigee-request-body": "true", "apigee-response-body": "true" } }'
ここで
完了するまでに数分ほどかかることがあります。
サービス拡張機能が作成されたことを確認するには、次のコマンドを使用します。
curl "https://networkservices.googleapis.com/v1beta1/projects/$PROJECT_ID/locations/global/lbTrafficExtensions/httpbin-apigee-extension" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json"
レスポンスは次のようになります。転送ルールとバックエンド サービスが表示されます。
createTime: '2025-03-22T00:29:16.056719825Z' extensionChains: - extensions: - authority: extension-processor-test.hybrid.e2e.apigeeks.net name: httpbin-apigee-extension service: https://www.googleapis.com/compute/v1/projects/123456789012/global/backendServices/ep-test-psc-neg-bes supportedEvents: - REQUEST_HEADERS - REQUEST_BODY - REQUEST_TRAILERS - RESPONSE_HEADERS - RESPONSE_BODY - RESPONSE_TRAILERS timeout: 1s matchCondition: celExpression: 'true' name: httpbin-apigee-extension-chain forwardingRules: - https://www.googleapis.com/compute/v1/projects/123456789012/global/forwardingRules/ep-test-fw-rule loadBalancingScheme: EXTERNAL_MANAGED metadata: apigee-extension-processor: ep-test-proxy apigee-request-body: true apigee-response-body: true name: projects/extension-processor-test/locations/global/lbTrafficExtensions/global-xlb-httpbin-apim-policy updateTime: '2025-03-22T00:29:31.183275055Z'
ロードバランサにリクエストを送信する
ロードバランサと Extension Processor の設定をテストするには、ロードバランサにリクエストを送信します。
curl "https://LB_DOMAIN_NAME/get"
ここで、LB_DOMAIN_NAME はロードバランサと SSL 証明書に使用したドメイン名です。nip.io
を使用した場合、ドメイン名は IP_ADDRESS.nip.io
に似ています。
レスポンスは次のようになります。
{"status": 200, { "args": {}, "headers": { ... }, "origin": "173.93.50.108", "url": "https://httpbin.org/get" } }
Extension Processor でポリシーを使用する
このセクションでは、Extension Processor でポリシーを使用する方法について説明します。
この例では、Extension Processor 用にVerifyAPIkey ポリシーと AssignMessage ポリシーが構成済みです。この 2 つのポリシーの目的は、Apigee へのリクエストに含まれる API キーを検証することと、バックエンド サービスへの呼び出しのリクエスト ヘッダーに Googleトークンを挿入することです。このシナリオは、API プロバイダが Apigee Extension Processor を使用して Apigee サービスへのリクエストを認証および認可し、Vertex AI などのバックエンド サービスに必要な Google 認証トークンをシームレスに挿入する場合に役立ちます。
API キーの検証用の VerifyAPIKey ポリシーを追加する
以降のセクションでは、VerifyAPIKey ポリシーを使用し、バックエンド サービスへの呼び出しの API キーを Extension Processor を使用して検証する方法について説明します。
VerifyAPIKey ポリシーをプロキシに接続する
VerifyAPIKey ポリシーを Extension Processor プロキシに接続するには:
API プロダクトを作成する
API プロダクトを作成して、サービスの API オペレーション セットを構成するには:
デベロッパー アプリとアプリの認証情報を作成する
新しく作成した API プロダクトのデベロッパー アプリとアプリの認証情報を作成するには:
API キーを使用してロードバランサにリクエストを送信する
API キーの検証をテストするには、API キーを使用してロードバランサにリクエストを送信します。
curl "https://LB_DOMAIN_NAME/get"
ここで、LB_DOMAIN_NAME はロードバランサと SSL 証明書に使用したドメイン名です。
API キーがないとレスポンスは失敗します。
リクエストの API キーを使用して、ロードバランサに別のリクエストを送信します。
curl "https://LB_DOMAIN_NAME/get?key=API_KEY"
ここで
レスポンスには、エンドポイントの認証が成功したことが示されます。これは、Extension Processor が API キーを検証し、リクエストを Apigee プロキシで処理できることを示します。
Google 認証用の AssignMessage ポリシーを追加する
Extension Processor を使用して Google 認証サービスに API 管理を提供する場合、AssignMessage ポリシーを使用して、バックエンド サービスに送信されるリクエストに Google アクセス トークンまたは Google ID トークンを挿入できます。
以降のセクションでは、AssignMessage ポリシーを使用し、バックエンド サービスに送信されるリクエストに Google 認証トークンを Extension Processor を使用して挿入する方法について説明します。
AssignMessage ポリシーをプロキシに接続する
AssignMessage ポリシーをプロキシに追加します。
Google アクセス トークンを生成し、 Google バックエンド サービスへの API 呼び出しのリクエスト ヘッダーに挿入する際は、このサービス アカウントが使用されます。
ロードバランサにリクエストを送信してトークンの挿入をテストする
トークンの挿入が機能していることを確認するには、ロードバランサにリクエストを送信します。
curl "https://LB_DOMAIN_NAME/get"
ここで、LB_DOMAIN_NAME はロードバランサと SSL 証明書に使用したドメイン名です。
レスポンスは次のようになります。
{ ... "headers": { "Accept": "*/*", "Authorization": "Bearer ya29.c.c0ASRK0Gbw03y9cfvxL11DxaRYBQUU18SmUP4Vu63OckHI5cX7wJ4DmGMG2vbDDS69HXJHqMj-lak4tcqOsJGmE65crn2gNuJLanXidwM8", "First": "1.0", "Host": "apigee-ext-proc-test.apigee.net", "Second": "1.0", "Sum": "2", "User-Agent": "curl/8.7.1", "X-Api-Key": "McYcHGR3PTSGLXExvKADwQ1JJeCjgPDUvAakCl0rJKCFaX0Y", "X-Cloud-Trace-Context": "0fd3dadc2a3c328fa968d5f5f1434c29/18300783092696918345" }, ... }
Google 認証トークンがリクエスト ヘッダーに正常に挿入されたことが示されるはずです。
このサンプル シナリオの AssignMessage ポリシーが正常に適用されると、クライアントから Apigee に送られて正常に処理されたリクエスト(API キーを含む)はさらに変更され、 Googleで認証されるバックエンド サービスで必要になる Google 認証トークンがリクエスト ヘッダーに含められます。