Help us understand the problem. What is going on with this article?

AWS API GatewayにおけるThrottling問題

More than 3 years have passed since last update.

2015/11/27: 本件はAWSに報告済みの既知の問題です。
2015/12/24: AWSより回答がありました。問題改修までの間は、Clone from APIを使わない方が良いようです。本ドキュメントでは、Clone API利用時の回避策を記載しています。

概要

API GatewayのThrottling Settingsに関する不具合を共有します。
新規にAPIを作成する際はコピー元となるAPIを指定する機能があるのですが、ここに罠があります。

スクリーンショット 2015-12-22 22.33.33.png

Clone from APIを選択してAPIを作成すると、Throttling Settingsの挙動がコピー元にエイリアスされてしまうのです。
つまり、オリジンAPIからクローンAPIを作成し、クローンAPIの接続数を100から1に変更すると、オリジンAPIも接続数が1に書き換わってしまいます。
API Gatewayにおいて、開発用エンドポイントから本番用エンドポイントをクローンして運用する場合は注意が必要です。

再現手順

以下にAWSコンソールから問題を再現する手順を記載します。

  1. API Gatewayのダッシュボードから新規APIOrigin (API name) を作成。下図はIntegration typeHTTP Proxyに指定したもの。恐らくIntegration typeは何でも構わない
    スクリーンショット 2015-12-22 22.44.35.png

  2. 新規にStageを作成し、Throttling SettingsBurst LimitRateをそれぞれ100に指定
    スクリーンショット 2015-12-22 22.46.14.png

  3. API Gatewayのダッシュボードから新規APIClone (API name) を作成。API作成時のオプションで、API Clone from APIからOriginを選択。Integration typeOriginと同じものを指定
    スクリーンショット 2015-12-22 23.16.24.png

  4. 新規にStageを作成し、Throttling SettingsBurst LimitRate をそれぞれ 1に指定

Originに対し20回の連続アクセスを試みたところ、半数のレスポンスでHTTPステータス429が返されました。 429 は API Gatewayから返される、 Limit Exceeded Exception というエラーです。

Handling Errors in Amazon API Gateway - Error Codes (Client and Server Errors)

スクリーンショット 2015-12-22 23.22.38.png

つまり、Cloneに設定したはずのthrottleが Originにも適用されてしまっているということです。うーむ。。

回避策

Clone APIを作成した場合は、Stageから対象エンドポイントを開き、Settings のタイプを Override for this method に指定。ここで新たに Throttling Settings を指定することで問題を回避できました。

スクリーンショット 2015-12-22 22.58.24.png

問題が解消されるまでは、面倒ですがエンドポイント単位で Throttling Settings は設定したほうが安全なようです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした