JBUG 大阪 #2 マネジメントを身近に感じて仕事に生かそう!のレポート!
API Gateway の API キーを理解した(気になった
気づけば 1 ヶ月もブログ書いてませんでした、那須です。
前回は完全に思いつきで AWS API オープンなるものを作ってみました。
で、せっかく作ったのでちょっと Facebook に投稿して感触どーかなーと思ってたら、河村先生からありがたいお言葉をいただきました!
API キー…とは?
と思いましたが、いい機会なので API Gateway をもっとよく知るために勉強しようと思いまして、実際に実装してみました。
河村先生と「飲みに行こう!」と話したので11月末までには行こうと思います。もし一緒に行きたい人いたら行きましょう。
そもそも API キーとは?
正しい API キーをつけてアクセスしてきたものだけを許可する仕組みがあって、それに使うキーが API キーです。なんか日本語変ですがイメージは伝わったんじゃないでしょうか?
ま、いつもの通り、クラスメソッドさんのブログに頼りましょうw
こないだ作った API に API キー認証をつけてみる
まずは API キーを作成します。
API キーの名前を決めて、キーを自動生成するか自分で指定するか選びましょう。私は自動生成にしました。
次に使用量プランを作成します。使用量プランは、この API キーを使うにあたって無制限に使えるのかある程度制限をつけるのかを決めるものです。このプランに API キーを紐付けていきます。ここでは無制限にしましたが、必要に応じてスロットリングとクオータを有効にして値を指定しましょう。
作成した使用量プランに API キーを追加します。API キータブで API キーを使用量プランに追加を押し、先程作成した API キーを指定しましょう。
詳細タブでは、関連付ける API とステージを指定します。これで API と使用量プランと API キーが関連付けられました。
対象の API で、API キーの必要性を true に変更します。これでこの API にアクセスするには API キーが必要になりますよ。
最後に API をデプロイして設定を反映させましょう。これで設定は完了です。簡単ですね。
確認してみましょう
まず WSL でアクセスしてみます。API キーをつけずにアクセスすると {"message":"Forbidden"} と出てアクセスできないことが確認できました。API キーをつけてアクセスすると、想定通りのレスポンスが返ってきました。
$ curl https://hogehoge.execute-api.ap-northeast-1.amazonaws.com/rdp_control/open {"message":"Forbidden"} $ curl https://hogehoge.execute-api.ap-northeast-1.amazonaws.com/rdp_control/open --header 'x-api-key:tekitounaapikeydayo' "OK"
Linux や mac で確認しているブログが多いので、参考までに PowerShell での確認方法も書いておきます。普通に Invoke-RestMethod でアクセスするだけですけどね。API キーをつけない場合は、{"message":"Forbidden"} が返ってきてエラーになりました。API キーをつけると、想定通りのレスポンスが返ってきましたね。
PS C:\> Invoke-RestMethod https://hogehoge.execute-api.ap-northeast-1.amazonaws.com/rdp_control/open Invoke-RestMethod : {"message":"Forbidden"} 発生場所 行:1 文字:1 + Invoke-RestMethod https://hogehoge.execute-api.ap-northeast-1.amazo ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod]、WebExce ption + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand PS C:\> Invoke-RestMethod https://hogehoge.execute-api.ap-northeast-1.amazonaws.com/rdp_control/open -Headers @{'x-api-key'='tekitounaapikeydayo'} OK
使用状況も確認できますよ
使用量プランの API キータブで、各 API ごとに使用状況の確認ができます。
さきほど WSL と PowerShell でそれぞれ 1 回ずつアクセスしたので、計 2 回のリクエストが記録されていますね。
最後に
今思えばしがないネットワークエンジニアから始まって SAP もかじり、AWS のインフラエンジニアになって、未熟ながらもなぜか今 API を作っている自分にちょっと不思議な感覚が出てきました。AWS に限らずクラウドを使うと本当にインフラとかアプリとかの垣根って低くなりますね。だからこそ面白いのかもしれません。
というわけで、これからも知らないことをガンガン知ろうとするように生きていこうと思いました。