はじめに
IBMが提供するAPI管理ソリューションというとAPI Connectですが、IBM CloudではそのAPI Connectに加え、よりシンプルに簡単にAPI公開ができるAPI Gatewayというサービスも提供されています。Legagyと付いたものと、無印のAPI Gatewayの2種類があるようです。Qiitaではまだ記事が見当たらないようなので、簡単に試す手順をまとめてみました。
前提
- IBM Cloud Liteアカウント(PAYGなど別アカウントがあればもちろんそれで可)
- FunctionsでHello WorldのサンプルがActionsとしてデプロイ済み
手順
- API Gatewayサービスをまずデプロイします。
-
以下から「Create service」をクリックし、サービス名とリソースグループを指定して作成します。
-
Create an API using Cloud Functionsをクリックし、Create APIから呼び出すAPI定義を作成します。これによりLegacy API Gatewayが自動で作成されます。
-
APIの設定を行います。
-
パスとメソッドと既にデプロイ済みのFunctionsのアクションを選択します。GETとPOSTメソッドそれぞれにパスを設定します。
-
セキュリティを設定します。ここではAPIキーを必須とします。またAPIキーを送信するための方法としてヘッダーを指定します。デフォルトでは悪名高い?X-IBM-Client-IDで、API Connect (V5ベース)だと変更できないのですが、このAPI Gatewayでは変更が可能になっているところがポイントが大きいです。
-
APIキーを作成します。Manage Sharing and API Keysから、Create API Keyをクリックし、キー名を入れて生成したらAPIキーの値をコピーしておきます。
4. Review and Testの各パスのTry itタブから、Client IDにAPIキーを入れて、POSTとGETをそれぞれ呼び出します。GETの場合、200とともにFunctionsのサンプルで設定されているHello Worldが応答として返ります。POSTの場合、ボディに{"name": "Andy"}を入れてリクエストすると、Hello Andyが応答として返ることがわかります。
5. Postmanから呼び出しても同様になることがわかります。
6. Rate Limitを超えると以下のように429エラーを返します。
7. X-Client-IDヘッダーによるAPIキーをつけないと401エラーを返します。
まとめ
以上で簡単にIBM CloudのシンプルなAPI Gatewayサービスで簡単にサンプルAPIを公開する手順をまとめました。次回はLegacyではないAPI Gatewayを試そうと思います。