API Gatewayで作成されたAPIは、クライアントとAPI Gatewayから呼び出すことができます。 API Gatewayは、内部ネットワークを介して同じリージョンで、またはインターネットを介してリージョン間でAPIを呼び出すことができます。 API Gatewayは、承認されたアプリケーションのAccessKeyペアを使用してAPIGW_FRONTENDタイプのバックエンド署名プラグインをバインドすることにより、アカウント間でAPIを呼び出すこともできます。 API GatewayがAPIを呼び出す前に、API GatewayはAccessKeyペアを使用して署名を生成し、認証のために署名をAPIに送信します。 API Gatewayによる呼び出し機能は、次の一般的なシナリオで使用できます。 バックエンドルーティングプラグインとバックエンド署名プラグインはAPIにバインドされています。 バックエンドルーティングプラグインは、リクエストパラメータに基づいて他のAPIにリクエストをルーティングします。
設定例
1. ビジネスAPIの設定
API Gatewayで仮想プライベートクラウド (VPC) 経由でAPIを呼び出す場合は、API Gatewayコンソールで次の手順を実行する必要があります。専用インスタンスを購入し、APIが属するAPIグループを専用インスタンスに移行し、VPCベースのAPI呼び出しの内部ドメイン名を手動で生成します。
APIゲートウェイによる呼び出し機能の有効化
a. API Gatewayコンソールにログインします。
b. 左側のナビゲーションウィンドウで、[インスタンスとクラスター] > [専用インスタンス] を選択します。 [インスタンス] タブで目的の専用インスタンスを見つけ、[API Gatewayからの呼び出し] の横にある [有効化] をクリックします。
API呼び出しの内部ドメイン名の生成
インスタンスに2つのAPIグループを作成します。 次に、各グループをクリックして、内部ドメイン名を生成します。
たとえば、次の2つの内部ドメイン名が生成されます。
17ff4c9189004a1d87b557606b767334-cn-huhehaote-intranet.alicloudapi.com
c6e984b2dd784c0fb843f7c2a8878b15-cn-huhehaote-intranet.alicloudapi.com各グループにAPIを作成する
各APIグループにAPIを作成します。 両方のAPIのセキュリティ認証パラメーターをAlibaba Cloudアプリに設定します。 次の例は、2つのAPIの想定属性を示しています。
API1: メソッド: GET パス: /business1 バックエンドサービスのURL:
http://backend1.alicloudapi.com:8080/business1API2 メソッド: GET パス: /business2 バックエンドサービスのURL:
http://backend2.alicloudapi.com:8080/business2
APIを呼び出すためのアプリケーションの承認
同じアプリケーションに両方のAPIを呼び出す権限を付与します。 この例では、アプリケーションに次のAccessKeyペアがあります。キー: TESTKEY 秘密: TESTSECRET
2. ディストリビューションAPIの設定
ディストリビューションAPIの作成
匿名でアクセスできるディストリビューションAPIを作成します。 HTTPメソッドとしてGETを、パスとして /distributeAPIを、所属するAPIグループのドメイン名として
17ff4c9189004a1d87b557606b767334-cn-huhehaote.alicloudapi.comを設定します。
バックエンドルーティングプラグインの作成とバインド
バックエンドルーティングプラグインを作成し、APIにバインドします。
---
parameters:
target: "Query:target"
routes:
- name: backend1
condition: "$target = 'resource1'"
backend:
type: "HTTP"
address: "17ff4c9189004a1d87b557606b767334-cn-huhehaote-intranet.alicloudapi.com"
path: "/business1"
- name: backend2
condition: "$target = 'resource2'"
backend:
type: "HTTP"
address: "c6e984b2dd784c0fb843f7c2a8878b15-cn-huhehaote-intranet.alicloudapi.com"
path: "/business2"上記のプラグインコードでは、リクエストのクエリセクションのtargetパラメーターの値に基づいて、プラグインが受信したリクエストをルーティングするように指定します。 値がresource1である場合、プラグインは要求t o 17ff4c9189004a1d87b557606b767334-cn-huhehaote-intranet.alicloudapi.comを転送し、要求のパスは /business1に変更される。 値がresource2の場合、プラグインは同じ方法で要求を転送します。
バックエンド署名プラグインの作成とバインド
バックエンド署名プラグインを作成し、プラグインをAPIにバインドします。
---
type: APIGW_FRONTEND
key: TESTKEY
secret: TESTSECRET
signatureMethod: HmacSHA256上記のプラグインコードでは、プラグインが受信したリクエストの内容とフロントエンドで使用される署名アルゴリズムに基づいて署名を計算するように指定しています。 次に、プラグインは計算された署名をリクエストに追加し、リクエストをバックエンドサービスに送信します。
3. ディストリビューションAPIの呼び出し
APIを呼び出す前に、関連するすべてのAPIが公開され、適切にテストされていることを確認します。
curl 'http://17ff4c9189004a1d87b557606b767334-cn-huhehaote.alicloudapi.com/distributeAPI?target=resource1' -i次のコードスニペットは、バックエンドサービスに送信されるサンプルリクエストを示しています。
GET /business1 HTTP/1.1
User-Agent: curl/7.64.1
Via: 0045e52ee3a8400b8501b4c449b28779
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Forwarded-Proto: http
X-Forwarded-For: 192.168.XX.XX, 127.0.0.1
Host: backend1.alicloudapi.com:8080
X-Ca-Request-Id: 23853B41-C54D-45E9-8C43-EE4C1E8A7889
Via: bc48a42a3d17408b991b0bb4d18c23c0curl 'http://17ff4c9189004a1d87b557606b767334-cn-huhehaote.alicloudapi.com/distributeAPI?target=resource2' -i次のコードスニペットは、バックエンドサービスに送信される別のサンプルリクエストを示しています。
GET /business2 HTTP/1.1
User-Agent: curl/7.64.1
Via: 0045e52ee3a8400b8501b4c449b28779
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Forwarded-Proto: http
X-Forwarded-For: 192.168.XX.XX, 127.0.0.1
Host: backend2.alicloudapi.com:8080
X-Ca-Request-Id: AFD529D2-9B24-437E-8CEC-897E0BCD8B2F
Via: bc48a42a3d17408b991b0bb4d18c23c0