LoginSignup
4
1

More than 3 years have passed since last update.

IBM Cloud API Gateway(Legacy)経由でFunctionsを呼び出す

Last updated at Posted at 2020-08-11

はじめに

IBMが提供するAPI管理ソリューションというとAPI Connectですが、IBM CloudではそのAPI Connectに加え、よりシンプルに簡単にAPI公開ができるAPI Gatewayというサービスも提供されています。Legagyと付いたものと、無印のAPI Gatewayの2種類があるようです。Qiitaではまだ記事が見当たらないようなので、簡単に試す手順をまとめてみました。

前提

  • IBM Cloud Liteアカウント(PAYGなど別アカウントがあればもちろんそれで可)
  • FunctionsでHello WorldのサンプルがActionsとしてデプロイ済み
    • リクエスト・ボディにJSONで{"name": "xxx"}と入れると、その名前が入ったHello xxxが返り、ボディがないとHello Worldが返るサンプルです。 image.png スクリーンショット 2020-08-11 15.51.11.png

手順

  1. API Gatewayサービスをまずデプロイします。

    • 以下から「Create service」をクリックし、サービス名とリソースグループを指定して作成します。 スクリーンショット 2020-08-11 15.04.55.png スクリーンショット 2020-08-11 15.06.34.png
  2. Create an API using Cloud Functionsをクリックし、Create APIから呼び出すAPI定義を作成します。これによりLegacy API Gatewayが自動で作成されます。
     image.png
    スクリーンショット 2020-08-11 15.16.13.png

  3. APIの設定を行います。

    • API名と基本パスを設定します。 スクリーンショット 2020-08-11 15.16.57.png
  • パスとメソッドと既にデプロイ済みのFunctionsのアクションを選択します。GETとPOSTメソッドそれぞれにパスを設定します。
    スクリーンショット 2020-08-11 15.17.13.png
    スクリーンショット 2020-08-11 15.53.54.png

  • セキュリティを設定します。ここではAPIキーを必須とします。またAPIキーを送信するための方法としてヘッダーを指定します。デフォルトでは悪名高い?X-IBM-Client-IDで、API Connect (V5ベース)だと変更できないのですが、このAPI Gatewayでは変更が可能になっているところがポイントが大きいです。
    スクリーンショット 2020-08-11 15.17.46.png
    スクリーンショット 2020-08-11 15.18.07.png

  • Rate Limitを設定します。ここでは1分に10回を超える呼び出しをするとエラーになるようにします。
    スクリーンショット 2020-08-11 15.18.45.png

  • OAuthやCORSの設定はデフォルトのままにします。
    スクリーンショット 2020-08-11 15.18.56.png

  • リージョン、CF組織、スペースを選択して保存します。
    スクリーンショット 2020-08-11 15.19.48.png

  • 定義が完成し、エンドポイントができたことを確認します
    スクリーンショット 2020-08-11 15.20.53.png

  • APIキーを作成します。Manage Sharing and API Keysから、Create API Keyをクリックし、キー名を入れて生成したらAPIキーの値をコピーしておきます。
    スクリーンショット 2020-08-11 15.21.24.png
    スクリーンショット 2020-08-11 15.22.02.png
    image.png

4. Review and Testの各パスのTry itタブから、Client IDにAPIキーを入れて、POSTとGETをそれぞれ呼び出します。GETの場合、200とともにFunctionsのサンプルで設定されているHello Worldが応答として返ります。POSTの場合、ボディに{"name": "Andy"}を入れてリクエストすると、Hello Andyが応答として返ることがわかります。
スクリーンショット 2020-08-11 15.55.50.png
スクリーンショット 2020-08-11 15.52.48.png
スクリーンショット 2020-08-11 16.01.37.png
スクリーンショット 2020-08-11 16.02.04.png

5. Postmanから呼び出しても同様になることがわかります。
スクリーンショット 2020-08-11 15.51.59.png
スクリーンショット 2020-08-11 16.03.31.png

6. Rate Limitを超えると以下のように429エラーを返します。
スクリーンショット 2020-08-11 15.33.01.png

7. X-Client-IDヘッダーによるAPIキーをつけないと401エラーを返します。
スクリーンショット 2020-08-11 15.33.35.png

まとめ

以上で簡単にIBM CloudのシンプルなAPI Gatewayサービスで簡単にサンプルAPIを公開する手順をまとめました。次回はLegacyではないAPI Gatewayを試そうと思います。

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1