【AWS API Gateway】使用料プランをAPIキーがなくとも設定できないのか?
こちらの記事は現在未解決の問題について記載しております。
記事を読了しても、特に得るものはないことにご注意ください。
API Gateway, Lambda, DynamoDB を利用した、一般的なサーバーレスアプリケーションを趣味で開発していました。
趣味で開発していたアプリは以下のような仕様です。
【目的】
ポケモン対戦で種族値を調べるのが楽になるLINE BOTの作成
【動作の流れ】
ポケモンの名前を入力しLINE BOTに対して送信
↓
LINE Messaging APIを利用し、API GatewayのURLに向けてPOSTメソッドでポケモンの名前を送信
↓
Lambdaにポケモン名を投げて、ポケモン名を主キーとして種族値をデータに持ったDynamoDBテーブルから、種族値データを取得して返却。
↓
LINE BOTが種族値を返信する。
【問題点】
今回趣味で作ってnoteに共有しようかなと思っていたのですが、イタズラで使われてAWSの課金額がとんでもないことになりそうなのが怖いです。
最初の入り口であるAPI Gatewayに月間のリクエスト数制限を掛けられないかと調査していたところ、それらしい記載を見つけたのが「使用料プラン」でした。
使用料プランは会員制のアプリなどを作る際に重宝する機能のようで、プラチナ会員であれば月に5000回リクエスト可能、ベーシック会員であれば月に1000回リクエスト可能、のような設定をしたいときに使えます。
さて、プラチナ会員、ベーシック会員をどうやって確認するかというと、APIキーというものです。
API Gatewayへのリクエストヘッダーで、設定したキーを投げることで、特定のキーのアクセスだと判定することが出来ます。
ちなみに、使用料プランの限界を超えた回数アクセスが行われた場合、API Gatewayの課金も発生しません。良い機能ですよね。API Gatewayは呼び出し毎の課金なので、この辺りがしっかりしていてくれるのは助かります。
今回問題となったのは、LINE Messaging API からリクエストを投げる際にリクエストヘッダーを指定できないということです。
LINE Developersサイトのコンソールにて設定するのですが、そこで指定できるのはWebhook URLのみなので、ヘッダーを追加することができないんですね。
APIキーが無ければ使用料プランが使えないので、API Gatewayの呼び出し回数が制限できない。
今回趣味のアプリも公開できないということになってしまいました。
解決の道筋
まだ解決できていないですが、いくつか解決の糸口があるのかなと思っています。
1. コスト周りの設定で、一定金額が超えたらSNS等でイベントを発火し、対象API Gatewayを利用不可とする。
一応出来そうではあります。ただ、やったことが無いので手を付けていないです。
2. API Gatewayの設定項目を、さらに調べる。
2時間ほど調べても目的の設定が無かったので、こちらは難しそうです。「月間のリクエスト数をAPI Gateway全体で制御したい」というニーズは少ないのでしょうか。もしくは使用料プランで事足りているのかもしれないです。
今後
解決方法が分かりましたら、こちらの記事を修正します。
また、趣味で開発したBOTに関してもGit hubにて公開してみたいなと思います。
ポケモンのBOTは他に開発している方が全然いるので、二番煎じもいいところですが。
PythonとAWSを利用している方は多分いなかったので差別化は出来るかな...?
この記事が気に入ったらサポートをしてみませんか?