Apigee Extension Processor を使ってみる

このページは ApigeeApigee ハイブリッドに適用されます。

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 を構成する
  • トラフィック拡張機能を構成する
  • Extension Processor でポリシーを使用する
  • 始める前に

    Apigee Extension Processor の設定を開始する前に、次のタスクを完了してください。

    1. 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.
    2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    3. Make sure that billing is enabled for your Google Cloud project.

    4. Enable the Apigee, Compute Engine, and Network Services APIs.

      Enable the APIs

    5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    6. Make sure that billing is enabled for your Google Cloud project.

    7. Enable the Apigee, Compute Engine, and Network Services APIs.

      Enable the APIs

    8. Google Cloud CLI をインストールします。

      Google Cloud CLI をインストールしたら、gcloud components update コマンドを実行して最新の gcloud コンポーネントを取得します。

    9. Apigee インスタンスをまだプロビジョニングしていない場合は、バージョン 1-15-0-apigee-2 以降を使用してプロビジョニングします。

      インスタンスのバージョンは、 Google Cloud コンソールの Apigee UI にある [インスタンスの詳細] ページで確認できます。 Google Cloud コンソールの [インスタンス] ページに移動してインスタンスを選択すると、詳細が表示されます。

      [インスタンス] に移動

      Extension Processor は、サブスクリプションまたは従量課金制の Apigee 組織で使用できます。サブスクリプションの Apigee 組織か従量課金制の Apigee 組織のどちらを使用しているかわからない場合は、Apigee 組織管理者にお問い合わせください。有料の Apigee インスタンスのプロビジョニングの詳細については、始める前にをご覧ください。

    10. 使用する Apigee インスタンスで VPC とサブネットが有効になっていることを確認します。 Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

      [VPC ネットワーク] に移動

    11. 必要なロール

      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

      ここで

      • 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 プロジェクト内のサブネットの名前です。

      環境変数が正しく設定されていることを確認するには、次のコマンドを実行して出力を確認します。

      echo $PROJECT_ID $ORG_NAME $REGION $INSTANCE $VPC_NETWORK_NAME $SUBNET

      認証トークンを構成する

      認証トークンを構成するには、次のコマンドを実行します。

      export TOKEN=$(gcloud auth print-access-token)
      echo $TOKEN

      バックエンド サービスのロードバランサを構成する

      以降のセクションでは、httpbin.org を例として使用して、バックエンド サービスにグローバル外部アプリケーション ロードバランサを設定する手順について説明します。

      1. グローバル外部アプリケーション ロードバランサを作成する
      2. ネットワーク エンドポイント グループ(NEG)を作成する
      3. バックエンド サービスを作成する
      4. URL マップを作成する
      5. ターゲット プロキシを作成する
      6. グローバル転送ルールを作成する

      グローバル外部アプリケーション ロードバランサを作成する

      ロードバランサを作成する手順は、次のとおりです。

      1. 現在のプロジェクトを使用するように gcloud 構成を設定します。
        gcloud config set project PROJECT_ID

        ここで、PROJECT_ID は Apigee インスタンスを含むプロジェクトの ID です。

      2. グローバル静的 IP アドレスを作成します。
        gcloud compute addresses create IP_ADDRESS --ip-version=IPV4 --global

        ここで、IP_ADDRESS は作成する IP アドレスの名前です。この名前は正規表現 (?:a-z?) に一致している必要があります。

      3. IP アドレスを取得して、環境変数として保存します。
        IP=$(gcloud compute addresses describe IP_ADDRESS --format="get(address)" --global)

        ここで、IP_ADDRESS は前の手順で作成した IP アドレスの名前です。

      4. IP アドレスのワイルドカード DNS レコードを提供するサードパーティ サービスである nip.io の TLS 証明書を作成します。
        gcloud compute ssl-certificates create SSL_CERT_NAME \
          --domains="nip.io"

        ここで、SSL_CERT_NAME は作成する証明書の名前です。

      ネットワーク エンドポイント グループ(NEG)を作成する

      ロードバランサのネットワーク エンドポイント グループ(NEG)を作成するには:

      1. NEG を作成します。
        gcloud compute network-endpoint-groups create NEG_NAME \
          --network-endpoint-type=INTERNET_FQDN_PORT \
          --default-port=443 \
          --global

        ここで、NEG_NAME は作成する NEG の名前です。

      2. httpbin.org のエンドポイントを NEG に追加します。
        gcloud compute network-endpoint-groups update NEG_NAME \
          --add-endpoint=fqdn=httpbin.org,port=443 \
          --global

        ここで、NEG_NAME は前の手順で作成した NEG の名前です。

      バックエンド サービスを作成する

      ロードバランサによって公開されるバックエンド サービスを作成するには:

      1. バックエンド サービスを作成します。
        gcloud compute backend-services create BACKEND_SERVICE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --protocol=HTTPS \
          --global

        ここで、BACKEND_SERVICE_NAME は作成するバックエンド サービスの名前です。

      2. 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 マップの作成

      ロードバランサとバックエンド サービスの間に URL マップを作成するには、次のコマンドを使用します。

      gcloud compute url-maps create URL_MAP_NAME \
        --default-service BACKEND_SERVICE_NAME \
        --global

      ここで

      • URL_MAP_NAME は、作成する URL マップの名前です。
      • BACKEND_SERVICE_NAME は、前の手順で作成したバックエンド サービスの名前です。

      ターゲット プロキシを作成する

      ロードバランサのターゲット プロキシを作成するには、次のコマンドを使用します。

      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

      ここで

      • TARGET_PROXY_NAME は、作成するターゲット プロキシの名前です。
      • URL_MAP_NAME は、前の手順で作成した URL マップの名前です。
      • SSL_CERT_NAME は、前の手順で nip.io 用に作成した SSL 証明書の名前です。

      グローバル転送ルールの作成

      ロードバランサのグローバル転送ルールを作成するには、次のコマンドを使用します。

      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

      ここで

      • FORWARDING_RULE_NAME は、作成する転送ルールの名前です。
      • IP_ADDRESS は、前の手順で作成した NEG エンドポイントの IP アドレスの名前です。
      • TARGET_PROXY_NAME は、前の手順で作成したターゲット プロキシの名前です。

      Apigee Extension Processor を構成する

      以降のセクションでは、Apigee Extension Processor の設定に必要な手順について説明します。

      1. Apigee 環境を作成する
      2. Extension Processor プロキシを作成する

      Apigee 環境を作成する

      1. 次のコマンドを使用して 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"

        環境のリストに、作成した環境が表示されます。

      2. 新しく作成した環境を 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 分ほどかかることがあります。

      3. 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)にする必要があります。
      4. 新しい環境を新しい環境グループに接続します。
        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 は、前の手順で作成した環境の名前です。

      Extension Processor プロキシを作成する

      Extension Processor ロードバランサで使用する Apigee のターゲットなし API プロキシを作成するには:

      1. 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>
      2. API プロキシをデプロイするの手順に沿って、前に作成した環境にプロキシをデプロイします。

      トラフィック拡張機能を構成する

      このセクションでは、Extension Processor 用のトラフィック サービス拡張機能を構成する方法について説明します。手順は次のとおりです。

      1. Apigee Private Service Connect ネットワーク エンドポイント グループを作成する
      2. ロードバランサ サービス拡張機能を作成する
      3. ロードバランサにリクエストを送信する

      Apigee Private Service Connect ネットワーク エンドポイント グループを作成する

      このセクションでは、Apigee インスタンスへの接続に使用する Apigee Private Service Connect(PSC)ネットワーク エンドポイント グループ(NEG)を作成します。PSC の詳細については、サウスバウンド ネットワーキング パターンをご覧ください。

      Apigee PSC NEG を作成するには:

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

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

      3. 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 は作成するバックエンド サービスの名前です。

      4. 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 は前の手順で作成したバックエンド サービスの名前です。

      5. バックエンド サービスのロギングを有効にします。
        gcloud compute backend-services update PSC_NEG_BACKEND_SERVICE \
          --global \
          --enable-logging \
          --logging-sample-rate=1.0

        ここで、PSC_NEG_BACKEND_SERVICE は前の手順で作成したバックエンド サービスの名前です。

      ロードバランサ サービス拡張機能を作成する

      ロードバランサ サービス拡張機能を作成する際は、拡張機能を記述するさまざまなフィールドの値を変更することで Extension Processor プロキシの動作をカスタマイズできます。次の表をご覧ください。

      本文の処理 対応するイベント メタデータ 送信モード
      リクエストとレスポンスの本文の処理

      REQUEST_HEADERS

      REQUEST_BODY

      REQUEST_TRAILERS

      RESPONSE_HEADERS

      RESPONSE_BODY

      RESPONSE_TRAILERS

      apigee-request-body: true

      apigee-response-body: true

      requestBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      responseBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      リクエスト本文の処理のみ

      REQUEST_HEADERS

      REQUEST_BODY

      REQUEST_TRAILERS

      RESPONSE_HEADERS

      apigee-request-body: true

      requestBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      レスポンス本文の処理のみ

      REQUEST_HEADERS

      RESPONSE_HEADERS

      RESPONSE_BODY

      RESPONSE_TRAILERS

      apigee-response-body: true

      responseBodySendMode: BODY_SEND_MODE_FULL_DUPLEX_STREAMED

      この手順では、リクエストとレスポンスの本文を処理できるロードバランサ サービス拡張機能を作成します。

      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"
          }
      }'

      ここで

      • EXT_PROC_NAME この名前は、前の手順で作成した API プロキシの名前と一致している必要があります。
      • FORWARDING_RULE_NAME は、前の手順で作成した転送ルールの名前です。
      • ENV_GROUP_HOSTNAME は、環境グループに使用されるドメイン名です。
      • PSC_NEG_BACKEND_SERVICE は、前の手順で作成したバックエンド サービスの名前です。

      完了するまでに数分ほどかかることがあります。

      サービス拡張機能が作成されたことを確認するには、次のコマンドを使用します。

      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 を使用して検証する方法について説明します。

      1. VerifyAPIKey ポリシーを Extension Processor に接続します。
      2. API プロダクトを作成します。
      3. デベロッパー アプリとアプリの認証情報を作成します。
      4. API キーを使用してロードバランサにリクエストを送信します。

      VerifyAPIKey ポリシーをプロキシに接続する

      VerifyAPIKey ポリシーを Extension Processor プロキシに接続するには:

      1. Cloud コンソールの Apigee UI で、[Develop] タブに移動し、前の手順で作成した Extension Processor プロキシを選択します。
      2. [ポリシー] セクションで、[+ ポリシーを追加] をクリックします。
      3. [ポリシーを追加] ペインで、ポリシーのリストから [VerifyAPIKey] を選択します。
      4. [VerifyAPIKey] ペインで、[ポリシー名] セクションと [表示名] セクションの必須項目に次の値を使用して入力します。
        • ポリシー名: ポリシー名を入力します。例: VA-verify-api-key
        • 表示名: UI で使用するポリシー名を入力します。例: VA-verify-api-key
      5. [作成] をクリックします。

        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>
      6. 新しいプロキシ リビジョンをデプロイします。

      API プロダクトを作成する

      API プロダクトを作成して、サービスの API オペレーション セットを構成するには:

      1. API プロダクトの作成の手順に沿って、サービスの API プロダクトを作成します。必要に応じて、プロダクトの詳細を構成できます。
      2. オペレーションの手順に沿って、次の仕様に従う API オペレーション セットを API プロダクトに追加します。
        • ソース: [API Proxy] を選択し、前の手順で作成したプロキシを選択します。
        • オペレーション: 次のパスとメソッドを構成します。
          • パス: /get、メソッド: GET
          • パス: /PROXY_NAME、メソッド: GET

            PROXY_NAME は、前の手順で作成したプロキシの名前です。

      デベロッパー アプリとアプリの認証情報を作成する

      新しく作成した API プロダクトのデベロッパー アプリとアプリの認証情報を作成するには:

      1. Google Cloud コンソールで、[Apigee API の管理] ページに移動します。

        Apigee API の管理

      2. デベロッパーを作成します。
        1. [配布] > [デベロッパー] を選択します。
        2. [デベロッパー] ページで、[+ 作成] をクリックします。
        3. [デベロッパーを追加] ページで、任意の値を使用して必須項目に入力します。
        4. [追加] をクリックします。
      3. アプリを作成します。
        1. [配布] > [アプリ] を選択します。
        2. [アプリ] ページで、[+ 作成] をクリックします。
        3. [アプリを作成] ページの [アプリの詳細] セクションで、次の値を使用して必須項目に入力します。
          • アプリ名: アプリの名前を入力します。例: ext-proc-app
          • デベロッパー: 前のステップで作成したデベロッパーを選択するか、リストから別のデベロッパーを選択します。
        4. [アプリの認証情報] セクションで、[+ 認証情報を追加] をクリックします。
        5. [認証情報] セクションの [有効期限] リストボックスで、[無期限] を選択します。
        6. [プロダクト] セクションで [+ プロダクトを追加] をクリックして、[プロダクトを追加] ペインを開きます。
        7. 前の手順で作成した API プロダクトを選択します。
        8. [OK] をクリックします。
        9. [追加] をクリックして、[プロダクトを追加] ペインを閉じます。
        10. [作成] をクリックします。
      4. [アプリの詳細] ページの [認証情報] セクションで、[] をクリックして [キー] の値を表示します。

        Key の値をコピーします。このキーは、後の手順でサービスに対して API 呼び出しを行うために使用します。

      5. [アプリの詳細] ページの [認証情報] セクションで、[] をクリックして [アプリ シークレット] の値を表示します。

      API キーを使用してロードバランサにリクエストを送信する

      API キーの検証をテストするには、API キーを使用してロードバランサにリクエストを送信します。

      curl "https://LB_DOMAIN_NAME/get"

      ここで、LB_DOMAIN_NAME はロードバランサと SSL 証明書に使用したドメイン名です。

      API キーがないとレスポンスは失敗します。

      リクエストの API キーを使用して、ロードバランサに別のリクエストを送信します。

      curl "https://LB_DOMAIN_NAME/get?key=API_KEY"

      ここで

      • LB_DOMAIN_NAME は、ロードバランサと SSL 証明書に使用したドメイン名です。
      • API_KEY は、前の手順で表示したデベロッパー アプリの認証情報の API キーです。

      レスポンスには、エンドポイントの認証が成功したことが示されます。これは、Extension Processor が API キーを検証し、リクエストを Apigee プロキシで処理できることを示します。

      Google 認証用の AssignMessage ポリシーを追加する

      Extension Processor を使用して Google 認証サービスに API 管理を提供する場合、AssignMessage ポリシーを使用して、バックエンド サービスに送信されるリクエストに Google アクセス トークンまたは Google ID トークンを挿入できます。

      以降のセクションでは、AssignMessage ポリシーを使用し、バックエンド サービスに送信されるリクエストに Google 認証トークンを Extension Processor を使用して挿入する方法について説明します。

      1. AssignMessage ポリシーをプロキシに接続します。
      2. ロードバランサにリクエストを送信して、トークンの挿入をテストします。

      AssignMessage ポリシーをプロキシに接続する

      AssignMessage ポリシーをプロキシに追加します。

      1. Cloud コンソールの Apigee UI で、[Develop] タブに移動し、前の手順で作成したプロキシを選択します。
      2. [ポリシー] セクションで、[+ ポリシーを追加] をクリックします。
      3. [ポリシーを追加] ペインで、ポリシーのリストから [Assign Message] を選択します。
      4. [メッセージの割り当て] ペインで、[ポリシー名] セクションと [表示名] セクションの必須項目に次の値を使用して入力します。
        • ポリシー名: ポリシー名を入力します。例: AM-auth
        • 表示名: UI に表示するポリシー名を入力します。例: AM-auth
      5. [作成] をクリックします。
      6. <Set> 要素の下に、次の子要素を追加します。
        <Set>
            <Authentication>
            <HeaderName>Authorization</HeaderName>
            <GoogleAccessToken>
                <Scopes>
                <Scope>https://www.googleapis.com/auth/cloud-platform</Scope>
                </Scopes>
            </GoogleAccessToken>
            </Authentication>
        </Set>
      7. [保存] をクリックします。
      8. Google サービス アカウントを使用して新しいリビジョンをデプロイします。

      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 認証トークンがリクエスト ヘッダーに含められます。