Alibaba Cloud API Gatewayのアクセス制限に気をつけよう

最終的にはドキュメントちゃんと読めって話ですが、Alibaba CloudのAPI Gatewayを使っているときに403で悩まされました。

以下のリクエストを送った時、API Gateway + Function ComputeのAPIから突然403が返ってくるようになりました。

$ curl -i -H "Content-Type: application/json" -H 'Authorization: Bearer MY_JWT' -X POST -d '
{ "query": "query getPosts { posts(limit: 100) { id url body user_id created_at updated_at } }"}
' http://xxxxxxxxxxxxxxxxxxxxxxxxxx-ap-northeast-1.alicloudapi.com/
HTTP/1.1 403 Forbidden
Server: Tengine
Date: Sat, 08 Sep 2018 11:36:14 GMT
Content-Type: text/plain;charset=UTF-8
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET,POST,PUT,DELETE,HEAD,OPTIONS,PATCH
Access-Control-Allow-Headers: X-Requested-With,X-Sequence,X-Ca-Key,X-Ca-Secret,X-Ca-Version,X-Ca-Timestamp,X-Ca-Nonce,X-Ca-API-Key,X-Ca-Stage,X-Ca-Client-DeviceId,X-Ca-Client-AppId,X-Ca-Signature,X-Ca-Signature-Headers,X-Ca-Signature-Method,X-Forwarded-For,X-Ca-Date,X-Ca-Request-Mode,Authorization,Content-Type,Accept,Accept-Ranges,Cache-Control,Range,Content-MD5
Access-Control-Max-Age: 172800
X-Ca-Request-Id: EE2517BA-5775-46AB-8339-B96AF926367F
X-Ca-Error-Message: Throttled by DOMAIN Flow Control

こう言う時はX-Ca-Error-Messageを見てみましょう。Throttled by DOMAIN Flow Controlと書いてあります。

以下のリンクによると、

The second-level domain name used for API calls can be accessed up to 1,000 times each day.Each group has limited 500 QPSs.

だそうで、API GatewayはデフォルトのURLだと1日に1000回しかアクセスできないみたいです。

www.alibabacloud.com

これを解決するには独自ドメインを紐づけるのが手っ取り早いです。

独自ドメインの使用方法は近日書きます。