はじめに
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を試そうと思います。






