8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

API Gatewayを使ってkintoneへのAPIリクエストを減らしてみた

Last updated at Posted at 2015-12-22

前回やった事

外部サイトから直接kintone APIを実行したい」で、S3にホストしたHTMLからAPI Gatewayを経由してkintoneへのアクセスを実現してみた。

この時はconsole.log(console.table)に出力したが、テーブルで出力するとこんな感じになる。
html.png

kintoneとしての課題

この仕組みを使うと、99.999999999%の耐久性を持つS3上にkintoneのデータを簡単に外部公開できるのだけど、kintoneには1日あたり10,000 リクエスト/アプリという制限が存在するため、大量アクセスを避ける必要がある。
price.png

ちなみに、10,000 リクエストを超過しても、いきなりサービスが止まったりする事は無い。
APIリクエスト数を超過した場合、直ちに使えなくなりますか

APIキャッシュを使ってリクエスト数を減らす

API GatewayにはAPIキャッシュという便利機能があるので、kintoneのAPIリクエストを減らす事ができないか試してみた。
APIキャッシュの概要、設定手順については、クラメソさんのブログが分かりやすい。

APIキャッシュを使う前

kintoneは、アプリ管理画面でAPIリクエスト数を確認できるようになっている。
今回、テストで利用している販売実績アプリの場合、この時点のAPIリクエスト数は68である事が分かる。
(もちろん、S3上のHTMLをリロードするごとにリクエスト数は増えていく)
処理済~apicount.jpg

APIキャッシュを有効にする

APIキャッシュを有効にした状態。(AVAILABLEになるまで5分ぐらいかかった)
AWS側でもキャッシュの状況を確認したいため、Enable CloudWatch Metricsを有効にした。
apigateway.png

アクセスしてみる

APIキャッシュが有効になった状態でアクセスした時の挙動は以下の通り。

  • 初回アクセス時はキャッシュされていないため、リクエスト数は増える。(68→69)
    apicount.png
  • 2回目以降のアクセスはAPIキャッシュが効いているため、リクエスト数は変わらない。
  • 試しにkintone側にレコードを追加して、アクセスしてもキャッシュが返されるため、追加したレコードは表示されない。
  • TTLに設定された時間(デフォルト300秒)を過ぎるとキャッシュがクリアされ、次にアクセスした際に最新の情報が取得される。

CloudWatchを確認すると、CacheMissCountは1(同じリクエストURLしか使っていないため)、それ以外のアクセスはCecheHitCountとなっていた。
cloudwatch.png

まとめ

  • API Gatewayを使う事で、kintoneのAPIリクエストを減らす事はできる。

分からない点

  • キャッシュがクリアされる条件はサイズ、TTLとなっているので、明示的にクリアしたい運用があった場合はどうするべき?(キャッシュ機能を一無的に無効にする?)
8
6
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
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?