このトピックでは、API GatewayでHTTPタイプのバックエンドサービスを使用するAPIを作成および公開する方法に関するクイックガイドを提供します。 このトピックでは、Alibaba Cloud App認証タイプに基づいてアプリケーションとAppKeyとAppSecretのペアを使用してAPIを呼び出す方法についても説明します。
前提条件
仮想プライベートクラウド (VPC) 環境が作成されます。 詳細については、「IPv4 CIDRブロックを使用したVPCの作成」および「IPv6 CIDRブロックを使用したVPCの作成」をご参照ください。
Elastic Compute Service (ECS) インスタンスが作成されました。 詳細については、「手順1: ECSインスタンスの作成」をご参照ください。
この例では、VPCにデプロイされたECSインスタンスが使用されます。 ECSインスタンスは、API Gatewayインスタンスと同じリージョンにあります。 ECSインスタンスでは、Apacheがデプロイされ、デフォルトの80ポートを使用します。 詳細については、「手順4: Apacheのデプロイ」をご参照ください。
処理中
次の手順を順番に実行する必要があります。
HTTPバックエンドサービスの作成
API Gatewayでは、バックエンドサービスをリージョンのリソースとして設定し、管理を簡素化できます。 API Gatewayコンソールでバックエンドサービスを作成し、異なる環境でバックエンドサービスに異なるURLを設定するだけで済みます。 その後、設定されたバックエンドサービスを直接選択してAPIを作成できます。
API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [バックエンドサービス] を選択します。 表示されるページで、右上隅の [バックエンドサービスの作成] をクリックします。
[バックエンドサービスの作成] ダイアログボックスで、[名前] を
[httpd-online]
に、[入力] を[HTTP/HTTPSサービス]
に設定し、[確認] をクリックします。[バックエンドサービス] ページで、
[httpd-online]
バックエンドサービスをクリックします。 [バックエンドサービス定義] ページで、[運用] タブをクリックし、右上隅の [作成] をクリックします。[基本情報] ページで、[*** アドレス] ボックスに
[http:// 192.168.*.***:80]
と入力し、[公開] をクリックします。説明http:// 192.168.*.***:80
は、作成されたECSインスタンスのプライベートIPアドレスです。
APIグループの作成
APIはAPIグループで管理されます。 APIを作成する前に、APIグループを作成する必要があります。
API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの管理] > [APIグループ] を選択します。 [APIグループ] ページで、右上隅の [グループの作成] をクリックします。
[グループの作成] ダイアログボックスで、[インスタンス] ドロップダウンリストからインスタンスを選択し、[グループ名] を
[httpd-demo]
に設定し、[BasePath] を[/
] に設定して、[確認] をクリックします。
[APIグループ] ページで、作成したグループを表示し、グループ名をクリックして [グループの詳細] ページに移動します。 [グループの詳細] ページで、ドメイン名のバインド、基本情報の変更、およびAPIグループのインスタンスタイプの変更を行うことができます。
API Gatewayは、APIグループにパブリックセカンドレベルドメイン名を自動的に割り当てます。 このドメイン名はデバッグにのみ使用され、中国本土以外のリージョンでは1日あたり100回の呼び出し、中国本土内のリージョンでは1日あたり1,000回の呼び出しの制限があります。 APIグループを作成した後、独立したドメイン名をバインドすることを推奨します。
APIの作成
API Gatewayコンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、[APIの管理] > [APIグループ] を選択します。
[APIグループ] ページで、作成した
httpd-demo
グループを見つけ、[操作] 列の [APIの管理] をクリックします。[API] ページで、右上隅の [APIの作成] をクリックします。
[APIの作成] ウィザードの [基本情報] ステップで、次のパラメーターを設定し、[次へ] をクリックします。
パラメーター
例
グループ
httpd-デモ
API名
httpd-test
セキュリティ認証
Alibaba Cloudアプリ
AppCode認証
AppCode認証の有効化 (ヘッダーとクエリ)
署名アルゴリズム
HMAC_SHA256
[APIリクエストの定義] ステップで、次のパラメーターを設定し、[次へ] をクリックします。
説明この手順では、webブラウザー、モバイルアプリ、ビジネスシステムなどのクライアントがAPIを要求する方法を定義します。 この手順で設定する必要があるパラメーターには、プロトコル、リクエストパス、HTTPメソッド、リクエストモード、および [リクエストパラメーター] セクションのパラメーターが含まれます。 この例では、Request Modeパラメーターはパススルーに設定されています。 これは、API Gatewayがクライアントから送信されたパラメーターを処理せず、それらをバックエンドに直接渡すことを示します。
[バックエンドサービスの定義] ステップで、次のパラメーターを設定し、[次へ] をクリックします。
パラメーター
例
設定モード
[既存のバックエンドサービスを使用] を選択します。
バックエンドサービスタイプ
[HTTP/HTTPSサービス] を選択します。
バックエンドサービス
httpd-online
バックエンドリクエストパス
/
HTTPメソッド
GET
バックエンドサービスのタイムアウト期間
10000
説明このステップでは、API Gatewayがクライアントから受信したリクエストを送信するバックエンドサービスのタイプとURL、およびパラメーターのマッピングと処理方法を設定します。 この例では、Backend Service TypeパラメーターはHTTP/HTTPS Serviceに設定されています。
[応答の定義] ステップで、ビジネス要件に基づいてページのパラメーターを設定し、[作成] をクリックします。
表示されるメッセージで、[公開] をクリックします。
表示される [APIの発行] ダイアログボックスで、環境を [リリース] に設定し、[備考] セクションに備考を入力し、[発行] をクリックします。
説明APIを変更した後、変更を有効にするには、対応する環境にAPIを公開する必要があります。 API Gatewayには、テスト、プレリリース、本番の3つの組み込み環境があります。
アプリケーションを作成し、APIの呼び出しを許可する
アプリケーションは、APIを呼び出すために使用するIDです。 この例の [APIの作成] ステップでは、認証方法がAlibaba Cloud Appに設定されています。 したがって、APIが公開された後、アプリケーションを作成し、アプリケーションにAPIを呼び出す権限を付与する必要があります。
アプリケーションの作成
API Gatewayコンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、[APIの呼び出し] > [アプリ] を選択します。
[アプリ] ページで、右上隅の [アプリの作成] をクリックします。
[アプリの作成] ダイアログボックスで、[アプリ名] パラメーターを設定し、[確認] をクリックします。 この例では、httpdがアプリケーション名として使用されます。
[アプリ] ページで、作成した
[httpd]
アプリケーションをクリックします。 [アプリの詳細] ページで、[AppKey]
と[AppCode]
の2つの認証方法が利用できることがわかります。AppKey
メソッドには、ユーザー名とパスワードのペアと同様に機能するAppKey
とAppSecret
のペアが含まれます。 APIを呼び出すときは、AppKey
をパラメーターとして渡す必要があります。AppSecret
は、署名の計算に使用されます。 API Gatewayは、AppKeyとAppSecretのペアを検証してIDを認証します。
アプリケーションにAPIを呼び出す権限を付与する
API Gatewayコンソールにログインします。 上部のナビゲーションバーで、リージョンを選択します。 左側のナビゲーションウィンドウで、[APIの管理] > [API] を選択します。
APIページで、作成された
http-test
APIを見つけ、[操作] 列で /> [許可] を選択します。[権限付与] ページで、[ステージ] パラメーターを [リリース] に設定します。 [承認用アプリの選択] セクションの検索バーに、作成したアプリケーションの名前を入力します。 検索結果で、作成したアプリケーションを選択し、[操作] 列の [追加] をクリックし、[確認] をクリックします。 アプリケーションがAPIの呼び出しを許可されていることを通知するメッセージが表示されます。
APIのデバッグDebug the API
API Gatewayはオンラインデバッグをサポートしています。 クライアントでこのAPIを呼び出す前に、この機能を使用してAPIが正しく構成されているかどうかを確認することを推奨します。
API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの呼び出し] > [デバッグ] を選択します。
[デバッグAPI] ページで、作成した
httpd-test
APIを選択し、検証方法を [AppSecretの使用] に設定し、[リクエストの送信] をクリックします。 次の情報は、設定が成功したことを示します。
APIの呼び出し
上記の手順を実行することで、APIを作成して公開し、APIを呼び出すためのアプリケーションを作成して承認し、APIをデバッグしました。 このステップでは、API Gatewayによって提供されるSDKを使用して、ビジネスシステムから公開されたAPIを呼び出すことができます。
方法1: SDKを使用してAPIを呼び出す
API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの呼び出し] > [SDK] を選択します。
SDKページで、[他の言語の署名サンプルコード (参照のみ)] セクションで [Node.js] を選択し、[Node.jsのサンプルコードの表示] をクリックします。
$ npm install aliyun-api-gateway -S
コマンドを実行し、nmpを使用してサンプルSDK for Node.jsをインストールします。次のコードスニペットで、この例で作成したアプリケーションのAppKeyとAppSecretに
YOUR_APP_KEY
とYOUR_APP_SECRET
を設定します。// Import the SDK for Node.js that you downloaded. const Client = require('aliyun-api-gateway').Client; // Create an instance for the authorized application. Specify the AppKey and AppSecret of the authorized application. const client = new Client('YOUR_APP_KEY','YOUR_APP_SECRET'); async function get() { // Use the domain name of the API group to which the API that you want to call belongs. You can use the public second-level domain name provided by API Gateway to test API calls. However, a limit is imposed on the number of API calls. We recommend that you bind an independent domain name to the API Group. var url = 'YOUR_GROUP_DOMAIN'; var result = await client.get(url, { // Specify the request header. Some APIs can return data formats based on the specified response type. We recommend that you manually define the request header based on your business requirements. headers: { accept: 'application/json' }, }); console.log(JSON.stringify(result)); } get().catch((err) => { console.log(err.stack); });
方法2: cURLを使用してAPIを呼び出す
API Gatewayコンソールにログインします。 左側のナビゲーションウィンドウで、[APIの呼び出し] > [アプリ] を選択します。 [アプリ] ページで、許可されたアプリケーションをクリックし、表示されるページでそのアプリケーションコードを取得します。 次に、次のサンプルコードを使用してAPIを呼び出します。
curl -i -X GET "http://3fbf0648d01e4aa5a1d*******-cn-hangzhou.alicloudapi.com" -H "Authorization:APPCODE c404eca23959492b9f0e4d4d15****"