このトピックでは、API Gateway で HTTP バックエンドサービスを作成してアクセスする方法について説明します。
前提条件
仮想プライベートクラウド (VPC) 環境が作成されます。詳細については、「IPv4 CIDR ブロックを使用して VPC を作成する」および「IPv6 CIDR ブロックを使用して VPC を作成する」をご参照ください。
Elastic Compute Service (ECS) インスタンスが作成されます。詳細については、「ステップ 1: ECS インスタンスの作成」をご参照ください。
この例では、VPC にデプロイされた ECS インスタンスが使用されます。 ECS インスタンスは、API Gateway インスタンスと同じリージョンにあります。 ECS インスタンスでは、Apache がデプロイされ、デフォルトのポート 80 を使用します。 詳細については、「ステップ 4: Apache をデプロイする」をご参照ください。
プロセス
このトピックでは、バックエンドサービスの作成から始まる段階的なガイドを提供します。このガイドでは、API とアプリケーションの作成および関連付けについても説明します。さらに、SDK ベースの例と cURL ベースの例を使用して、オンラインで API をデバッグする方法についても説明します。
プロセスは 6 つのステップで構成されます。
バックエンドサービスを作成する:このステップでは、API Gateway インスタンスが存在するリージョンにリソースとしてバックエンドサービスを設定します。API の作成時に、設定済みのバックエンドサービスを直接選択できます。
API グループの作成: このステップでは、API グループを作成します。API は、業務タイプと業務の組織構造に基づいてグループ単位で管理されます。
API の作成:このステップでは、API Gateway コンソールで API を作成します。
アプリケーションを作成して API の呼び出しを承認する: このステップでは、API を呼び出す際の ID として使用するアプリケーションを作成し、承認します。
API をデバッグする: このステップでは、API Gateway コンソールのオンラインデバッグ機能を使用して、API が期待どおりに機能するかどうかを確認します。
API の呼び出し: このステップでは、API Gateway が提供する SDK を使用するか、cURL コマンドラインツールで cURL コマンドを実行することで、API を呼び出すことができます。
ステップ 1: バックエンドサービスの作成
API Gateway では、バックエンドサービスをリージョンのリソースとして設定することで、管理を簡素化できます。API Gateway コンソールでバックエンドサービスを作成し、環境ごとに異なる URL を設定するだけで、API を作成する際に設定済みのバックエンドサービスを直接選択できます。
API Gateway コンソールにログオンします。上部のナビゲーションバーで、リージョンを選択します。左側のナビゲーションペインで、を選択します。次に、右上隅の[バックエンドサービスの作成]をクリックします。
「バックエンドサービスの作成」ダイアログボックスで、[名前] を
httpd-onlineに、[タイプ] をHTTP/HTTPS Serviceに設定し、[確認] をクリックします。-
「バックエンドサービス」ページで、
httpd-onlineバックエンドサービスをクリックします。「バックエンドサービス定義」ページで、[本番] タブをクリックし、右上隅の [作成] をクリックします。 -
[基本情報] ページで、バックエンドサービス URL ボックスに
http://192.168.*.***:80を入力し、[公開] をクリックします。説明http://192.168.*.***:80は、作成した ECS インスタンスのプライベート IP アドレスです。
ステップ 2: API グループの作成
API は API グループで管理されます。API を作成する前に、API グループを作成する必要があります。
[API グループ] ページで、作成したグループを表示し、グループ名をクリックして [グループ詳細] ページに移動します。グループ詳細ページでは、API グループの [ドメイン名のバインド]、[基本情報の変更]、および [インスタンスタイプの変更] を実行できます。
API Gateway は、API グループに対して公開セカンドレベルドメイン名を自動的に割り当てます。このドメイン名はデバッグ専用であり、中国本土以外のリージョンでは1 日あたり 100 回の呼び出し、中国本土のリージョンでは 1 日あたり 1,000 回の呼び出しという制限があります。API グループを作成した後、カスタムドメイン名をバインドすることを推奨します。
左側のナビゲーションペインで、 を選択します。[API グループ] ページで、右上隅にある [グループ作成] をクリックします。
-
「グループの作成」ダイアログボックスで、[インスタンス] ドロップダウンリストからインスタンスを選択し、[グループ名] を
httpd-demoに設定し、[BasePath] を/に設定し、[確認] をクリックします。
ステップ 3: API の作成
左側のナビゲーションペインで、 を選択します。「API グループ」ページで、作成した
httpd-demoグループを探し、[操作] 列の [API の管理] をクリックします。[API] ページで、右上隅の [API の作成] をクリックします。
-
[基本情報] ステップでパラメーターを設定して、[次へ] をクリックします。次の表に、パラメーターの詳細を示します。
パラメータ
例
[グループ]
httpd-demo
[API 名]
httpd-test
[セキュリティ認証]
Alibaba Cloud App
[AppCode 認証]
AppCode 認証を有効にする (Header & Query)
[署名アルゴリズム]
HMAC_SHA256
-
[API リクエストの定義] ステップで、以下のパラメーターを設定し、[次へ] をクリックします。
説明このステップでは、Web ブラウザ、モバイルアプリ、ビジネスシステムなどのクライアントから API をリクエストする方法を定義します。このステップで設定する必要があるパラメータには、プロトコル、リクエストパス、HTTP メソッド、リクエストモード、およびリクエストパラメータセクションの項目が含まれます。この例では、リクエストモードパラメータをパススルーに設定します。これは、API Gateway がクライアントから送信されたパラメータを処理せず、そのままバックエンドに渡すことを意味します。
[プロトコル] を [HTTP] および [HTTPS] に、[リクエストパス] を [/] に、[HTTP メソッド] を [GET] に、[インバウンドリクエストモード] を [パススルー] に設定します。
-
[バックエンドサービスの定義] ステップで、以下のパラメーターを設定し、[次へ] をクリックします。
説明クライアントリクエストを受信した後、API Gateway がパラメータをマッピングおよび処理する方法と、バックエンドアドレスに接続する方法を定義します。この例では、バックエンドサービスタイプは HTTP(S) Service です。
パラメータ
例
[設定モード]
[既存のバックエンドサービスを使用] を選択します。
[バックエンドサービスタイプ]
[HTTP/HTTPS サービス] を選択します。
[バックエンドサービス]
httpd-online[バックエンドリクエストパス]
/
[HTTP メソッド]
GET
[バックエンドサービスタイムアウト期間]
10000
[レスポンスの定義] ステップで、ビジネス要件に基づいてページ上のパラメーターを設定し、[作成] をクリックします。
-
表示されるメッセージで、[公開] をクリックします。
-
「API の公開」ダイアログボックスで、「環境」を [リリース] に設定し、[備考] セクションに説明を入力して、[公開] をクリックします。
説明API を変更した後、変更を有効にするには、対応する環境に API を公開する必要があります。API Gateway には、テスト、プレリリース、本番の 3 つの組み込み環境が用意されています。
ステップ 4: アプリケーションの作成と API 呼び出しの認可
アプリケーションは、API を呼び出すために使用するアイデンティティです。この例の API の作成 の手順では、認証方法が Alibaba Cloud App に設定されています。このため、API が公開された後、アプリケーションを作成し、そのアプリケーションに API を呼び出す権限を付与する必要があります。
アプリケーションの作成
左側のナビゲーションペインで、 を選択します。 アプリページで、右上隅の [アプリの作成] をクリックします。
-
[アプリケーション名] フィールドにアプリケーション名を入力し、[確認] をクリックします。この例では、アプリケーション名として httpd が入力されています。
-
[Apps] ページで、作成した
httpdアプリケーションをクリックします。[App Details] ページには、AppKeyとAppCodeという 2 つの認証方法があります。AppKey方式には、AppKeyとAppSecretのペアが含まれます。これはユーザー名とパスワードのペアと同様に機能します。API を呼び出す際には、パラメーターとしてAppKeyを渡す必要があります。AppSecretは署名の計算に使用されます。API ゲートウェイは、AppKeyとAppSecretのペアを検証して本人確認を行います。
アプリケーションへのAPI呼び出しの認可
左側のナビゲーションペインで、 を選択します。「API」ページで、
http-testAPI を見つけ、[操作] 列の
> [承認] をクリックします。-
「認可」ページで、[ステージ] パラメーターを [本番] に設定します。「認可するアプリの選択」セクションの検索バーに、作成したアプリケーションの名前を入力します。検索結果で作成したアプリケーションを選択し、「操作」列の [追加] をクリックしてから、[確認] をクリックします。アプリケーションに API の呼び出しが認可されたことを通知するメッセージが表示されます。
ステップ 5: API のデバッグ
API Gateway はオンラインデバッグをサポートしています。クライアントでこの API を呼び出す前に、この機能を使用して API が正しく設定されているかどうかを確認することを推奨します。
左側のナビゲーションペインで、 を選択します。[API のデバッグ] ページで、
httpd-testAPI を選択し、検証方法を [AppSecret を使用] に設定し、[リクエストの送信] をクリックします。-
呼び出しが成功した場合、レスポンス情報を確認して、設定が成功したことを確認します。
呼び出しが成功すると、ステータスコード HTTP 200 OK と、バックエンドの Apache サービスからの「It works!」などのデフォルトのテストページコンテンツを含むレスポンスボディが返されます。これにより、API ゲートウェイがバックエンドサービスに正常に接続されたことが確認できます。
ステップ 6: API の呼び出し
前述の手順を実行することで、APIの作成と公開、アプリケーションの作成とAPI呼び出しの認可、およびAPIのデバッグが完了しました。このステップでは、API Gateway が提供する SDK を使用して、ビジネスシステムから公開した API を呼び出すことができます。
SDK の使用
左側のナビゲーションペインで、 を選択します。[その他の言語での Node.js 署名サンプルコード] セクションで、[Node.js] などの言語を選択し、[Node.js のサンプルコードを表示] をクリックします。
$ npm install aliyun-api-gateway -Sコマンドを実行して、npm を使用して Node.js 用のサンプル SDK をインストールします。次のコードスニペットで、
YOUR_APP_KEYとYOUR_APP_SECRETを、この例で作成したアプリケーションの AppKey と AppSecret に設定します。// ダウンロードした Node.js 用の SDK をインポートします。 const Client = require('aliyun-api-gateway').Client; // 認可されたアプリケーションのインスタンスを作成します。認可されたアプリケーションの AppKey と AppSecret を指定します。 const client = new Client('YOUR_APP_KEY','YOUR_APP_SECRET'); async function get() { // 呼び出したい API が属する API グループのドメイン名を使用します。API Gateway が提供する公開セカンドレベルドメイン名を使用して API 呼び出しをテストできますが、API 呼び出しの回数には制限があります。API グループにカスタムドメイン名をバインドすることを推奨します。 var url = 'YOUR_GROUP_DOMAIN'; var result = await client.get(url, { // リクエストヘッダーを指定します。一部の API は、指定されたレスポンスタイプに基づいてデータ形式を返すことができます。ビジネス要件に基づいて、リクエストヘッダーを手動で定義することを推奨します。 headers: { accept: 'application/json' }, }); console.log(JSON.stringify(result)); } get().catch((err) => { console.log(err.stack); });
cURL の使用
左側のナビゲーションペインで、[API の呼び出し] > [アプリ] を選択します。 アプリページで、承認されたアプリケーションをクリックし、表示されたページでその AppCode を取得します。 次に、以下のサンプルコードを使用して API を呼び出します。
curl -i -X GET "http://3fbf0648d01e4aa5a1d*******-cn-hangzhou.alicloudapi.com" -H "Authorization:APPCODE c404eca23959492b9f0e4d4d15****"
HTTP/1.1 200 OK
Date: Tue, 01 Aug 2023 09:41:07 GMT
Content-Type: text/html
Content-Length: 4897
Server: Apache/2.4.6 (CentOS)
X-Ca-Request-Id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title>Apache HTTP Server Test Page</title>
</head>
<body>
...
<h1>Testing 123..</h1>
<p>This page is used to test the proper operation of the Apache HTTP server...</p>
...
</body>
</html>