🐈

API Gateway の 使用量プラン と APIキー

に公開

API Gateway では、API を作ってテストして、公開(デプロイ)すると、それをユーザーに使わせるための「ルール」を作ることができます。
このルールに基づいて、どのユーザーからのAPIのアクセス許可するかを制限することができます。
API Gateway では、使用量プランとAPIキーを用いることで、そのアクセス制御を行うことができます。
また、スロットリングやクォータ制限といったリクエスト数を制限するための設定を行うことで、より詳細なAPIリクセストの制限をかけることができます。

使用量プラン とは?

使用量プラン(Usage Plan) は、誰がどの API にアクセスできるか(=アクセス制御)と、どれくらいの頻度でアクセスできるか(=スロットリング、クォータ)を制限するための仕組みです。

API キー とは?

API キーは、ユーザー(=アプリ開発者)に配布して使ってもらう アクセス用の文字列(英数字) です。
例を挙げると、apikey1234abcdefghij0123456789 のように、値は 20~128文字 の英数字で、一意でなければなりません(同じ値のキーを2つ作ると1つと見なされる)。

使用量プランと API キーの関係

API キーは使用量プランに紐づけます。そして、どのユーザー(APIキー)にどのAPIステージ(本番/テストなど)を使わせるか決めます。また、1つの API キーを複数の使用量プランに紐づけることができます。
ただし、同じステージに対しては、1つの API キーは1つの使用量プランにしか紐づけられません。

スロットリング(リクエスト制限)

スロットリングとは、一定時間あたりに許可するリクエスト数を設定することを指します。たとえば「毎秒10リクエストまで」のような制限が可能であったり、API 全体、または特定のメソッド単位で設定可能です。

クォータ制限(使用量の上限)

一定期間(例:1日、1週間)に許可されるリクエストの総数を設定できます。なので、1日あたり1000リクエストまで といった感じの設定をすることができます。

その他の補足

API キーは API Gateway が自動で作成することもできるし、CSV から一括インポートも可能です。また、API キーの名前(表示用)と値(実際に使われる文字列)があり、名前は1024文字までとなっております。

まとめ

用語 内容
使用量プラン 誰が、どのAPIに、どのくらいアクセスできるかを管理する設定
API キー 利用者に配る英数字の文字列。これを使ってアクセス制御を行う
スロットリング 短時間でのアクセス回数制限(例:1秒に10回まで)
クォータ制限 一定期間のアクセス上限(例:1日で1000回まで)
キーの紐づけ制限 同じAPIステージには1つの使用量プランしか紐づけられない(キーごとに)

参考

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/api-gateway-api-usage-plans.html

Discussion