このトピックでは、API Gateway を使用して VPC 内のバックエンドサービスにアクセスする方法について説明します。また、Alibaba Cloud App の AppCode 認証を使用して安全な API 呼び出しを行う方法についても説明します。
前提条件
VPC があること。詳細については、「IPv4 CIDR ブロックを持つ VPC の作成」および「IPv6 CIDR ブロックを持つ VPC の作成」をご参照ください。
ECS インスタンスがあること。詳細については、「ECS インスタンスの作成」をご参照ください。
VPC に Server Load Balancer (SLB) インスタンスと ECS インスタンスが購入され、サービスがデプロイされています。
この例では、API Gateway のバックエンドサービスは VPC 内の ECS インスタンスです。Nginx Web サービスがポート 80 で ECS インスタンスにデプロイされています。
操作手順
API Gateway を使用して VPC 内のバックエンドサービスにアクセスするには、次の手順を実行します。
VPC アクセス権限の作成
VPC アクセス権限を作成して、API Gateway が VPC にアクセスできるようにします。
API Gateway コンソールにログインします。 リージョンを選択し、左側のナビゲーションペインで、[API 管理] > [VPC 認可]を選択します。
[承認リスト] ページで、右上隅にある [承認を作成] をクリックします。
[VPC 承認の作成] ページで、[VPC 承認名]、[VPC ID]、[インスタンス ID または IP アドレス]、および[ポート]を入力します。
説明特定のドメイン名を使用して SLB または ECS インスタンス上のサイト (vhost) にアクセスするには、Host フィールドにドメイン名を設定します。
VPC ID、インスタンス ID、またはプライベート IP アドレスは、ECS や Classic Load Balancer (CLB) インスタンスなどのバックエンドサービスの詳細ページで確認できます。
ネットワークタイプをパブリックに変更することはサポートされておらず、リクエスト失敗の原因となります。
API グループの作成
API グループは API の管理単位です。API を作成する前に、API グループを作成する必要があります。
API Gateway コンソールにログオンします。 リージョンを選択し、左側のナビゲーションペインで [API 管理] > [グループ管理] を選択します。 次に、右上隅の [グループの作成] をクリックします。
[グループの作成] ダイアログボックスで、[インスタンス] を選択し、[グループ名] に
nginx-demoを入力し、[ベースパス] に/を入力して、[OK] をクリックします。
[グループ一覧] ページに、作成したグループが表示されます。 グループ名をクリックすると [グループ詳細] ページに移動し、[ドメイン名のバインド]、[基本情報の変更]、[グループインスタンスの変更] を行うことができます。
API Gateway は、API グループに [パブリックセカンドレベルドメイン名] を自動的に割り当てます。このドメイン名はデバッグ専用であり、1 日あたり 1,000 回 の呼び出しに制限されています。中国本土以外のリージョン (中国 (香港) など) では、この制限は 1 日あたり 100 回です。本番環境で使用する場合は、[カスタムドメイン名] をグループにバインドしてください。
API の作成
API Gateway コンソールにログインします。リージョンを選択し、左側のナビゲーションペインで [API 管理] > [グループ管理] を選択します。
[グループリスト] ページで、
nginx-demoグループを見つけ、[アクション] 列の [API 管理] をクリックします。[API リスト] ページで、右上隅にある [API の作成] をクリックします。
[API の作成] ページの [基本情報] セクションで、次のパラメーターを設定し、[次へ] をクリックします。
[パラメーター]
[例]
[グループ]
nginx-demo
[API名]
nginx-test
[セキュリティ]認証
Alibaba Cloud App
[AppCode 認証]
AppCode (ヘッダーとクエリ) 認証を許可する
[署名アルゴリズム]
HMAC_SHA256
[API リクエストの定義] セクションで、以下のパラメーターを設定し、[次へ] をクリックします。
[パラメーター]
[例]
[プロトコル]
HTTP、HTTPS
[リクエストパス]
/nginx
[HTTP メソッド]
GET
[リクエストモード]
パススルー
説明このステップでは、ブラウザ、モバイルアプリ、または他のビジネスシステムなどのクライアントが API にリクエストを送信する方法を定義します。リクエストプロトコル、リクエストパス、HTTP メソッド、リクエストモードを定義する必要があります。この例では、リクエストモードが [パススルー] に設定されています。これは、API Gateway がクライアントリクエストを元のパラメーターのまま VPC 内のバックエンドサービスに直接転送することを意味します。
[バックエンドサービスの定義] セクションで、以下のパラメーターを設定し、[次へ] をクリックします。
[パラメーター]
[例]
[バックエンド設定]
[カスタムバックエンドサービス] を選択します
[バックエンドサービスタイプ]
[VPC] を選択します
[VPC 承認名]
***-microservice
[バックエンドリクエストパス]
/
[HTTP メソッド]
GET
[バックエンドタイムアウト]
10000
説明このステップでは、クライアントリクエストを受信した後に API Gateway がパラメーターをマッピングし、バックエンドサービスに接続する方法を定義します。この例では、バックエンドサービスタイプは [VPC] です。作成した VPC アクセス権限を選択するか、その名前を入力し、バックエンドリクエストパスを指定します。
[レスポンスの定義] セクションで、[作成] をクリックします。
説明このステップでは、呼び出し元が API を理解できるように API ドキュメントを生成します。レスポンスの Content-Type、レスポンス例、およびエラーレスポンス例を設定できます。この例では、これらの設定は行いません。[作成] をクリックします。
表示されるメッセージで、[公開] をクリックします。
「API 公開」ダイアログボックスで、[環境] を [リリース] に設定し、[備考] フィールドに説明を入力して、[公開] をクリックします。
説明API を変更した後は、変更を有効にするために環境に公開する必要があります。API Gateway は、リリース、プレ、テストの 3 つの組み込み環境を提供します。
アプリケーションの作成と API の権限付与
アプリケーションは、API を呼び出すために使用される ID です。この例では、API の作成時に認証方法が「Alibaba Cloud App」に設定されています。API を公開した後、アプリケーションを作成し、API を呼び出す権限を付与する必要があります。
アプリケーションの作成
API Gateway コンソールにログオンします。リージョンを選択し、左側のナビゲーションペインで、[API 呼び出し] > [アプリケーション管理] を選択します。
[アプリケーションと承認] ページで、右上隅にある [アプリケーションの作成] をクリックします。
[アプリケーションの作成] ダイアログボックスで、[アプリケーション名] を入力し、[OK] をクリックします。
アプリケーション名には、漢字、文字、数字、アンダースコア (_) を含めることができます。先頭は文字または漢字である必要があり、長さは 4〜26 文字です。[タグ設定]、[カスタム AK]、[拡張フィールド] を展開して、最大 180 文字の [説明] を入力することもできます。
[アプリケーションと認証] ページで、作成したアプリケーションの名前をクリックして [アプリケーションの詳細] ページに移動します。 Alibaba Cloud App の 2 つの認証方法 (AppKey と AppCode) を確認できます。 この例では、簡単な認証に AppCode を使用します。 詳細については、「簡単な認証 (AppCode) を使用して API を呼び出す」をご参照ください。
API の権限付与
API Gateway コンソールにログインします。 リージョンを選択し、左側のナビゲーションペインで [API 管理] > [API リスト] を選択します。
API リスト ページで、
nginx-testAPI を探し、[操作] 列で
をクリックして [承認] を選択します。表示される承認パネルで、[承認する環境を選択] を [リリース] に設定し、作成したアプリケーションを検索して [追加] をクリックしてから [OK] をクリックします。 成功メッセージが表示されます。
セキュリティグループでの API Gateway エグレス IP アドレスの許可
ECS インスタンスのセキュリティグループにトラフィックを制限するインバウンドルールがある場合、API Gateway のエグレス IP アドレスをセキュリティグループの許可リストに追加する必要があります。この操作により、セキュリティグループが API Gateway からのリクエストをブロックするのを防ぎます。必要なエグレス IP アドレスは、API グループをホストするインスタンスに属しています。
API Gateway コンソールにログインします。 左側のナビゲーションペインで、[API 管理] > [グループ管理] を選択し、対象の API グループの名前をクリックします。
[グループの詳細] ページで、グループの [インスタンスタイプ] を確認します。
左側のナビゲーションペインで、[インスタンスとクラスター] をクリックします。インスタンスタイプをクリックし、対応するインスタンスを見つけ、[Egress IP アドレス]情報を表示します。
[エグレス IP アドレス] には、[パブリックエグレス IP アドレス] と [内部 VPC アドレス] が含まれます。
ECS コンソールにログインします。左側のナビゲーションペインで、[インスタンス & イメージ] > [インスタンス] を選択します。ECS インスタンスの ID をクリックします。[セキュリティグループ] タブに移動し、セキュリティグループ名をクリックします。[セキュリティグループの詳細] ページで、[インバウンド] > [ルールのクイック追加] を選択し、ゲートウェイのアウトバウンド IP アドレスを設定します。
[ルールのクイック追加] ダイアログボックスで、[権限ポリシー] を [許可] に設定します。[権限オブジェクト] フィールドにゲートウェイのエグレス IP アドレスを入力します。[ポート範囲] に [すべて (1/65535)] を選択し、[OK] をクリックします。
API のデバッグ
API を設定した後、この機能を使用して、クライアントから呼び出す前に期待どおりに動作することを確認します。
デバッグページは、最大 512 KB のリクエストメッセージをサポートします。より大きなリクエストの場合は、SDK を使用してデバッグしてください。
設定したインスタンスのブラックリスト、許可リスト、および IP アドレスベースのアクセスコントロールプラグインは、47.245.113.207 からのトラフィックを許可する必要があります。
このページは JWT プラグインのデバッグをサポートしていません。
デバッグではパブリックドメイン名のみがサポートされます。
API Gateway コンソールにログインします。 左側のナビゲーションペインで、[API 呼び出し] > [デバッグ] を選択します。
「デバッグ」ページで、作成した
nginx-testAPI を選択します。「認証方法」には [AppCode を使用] を選択します。次に、[リクエストの送信] をクリックします。呼び出しが成功すると、レスポンスステータスコードは 200 になり、レスポンスボディには
Welcome to nginx!などのテキストを含む、デフォルトの Nginx ウェルカムページが HTML 形式で返されます。デバッグに失敗した場合は、次のトピックをご参照ください。
API の呼び出し
詳細については、「クライアントからの API の呼び出し」をご参照ください。
ドメイン名に環境を指定しない場合、API 呼び出しはデフォルトでリリース環境になります。API 環境の詳細については、「環境の管理」をご参照ください。
このトピックはクイックスタートガイドであり、バックエンドの高可用性については説明していません。高可用性については、「VPC 内のリソースを API のバックエンドサービスとして使用する」をご参照ください。