AWS API GatewayでAPIキー認証を設定する

はじめに

今回は、AWS API GatewayでAPIキー認証を構成する方法をご紹介します。

あらかじめ、テスト用のLambda関数とAPI Gatewayを作成しておきます。”Hello World!”と返却するシンプルなものです。

API キーの作成

画面左メニューの「API キー」を選択し、「アクション」から「APIキーの作成」をクリックします。

名前を入力し、「保存」ボタンをクリックします。

作成したAPIキーの情報が表示されます。ここで「APIキー」の「表示」をクリックすると、APIキーが画面に表示されますのでメモしておきます。

使用量プランの作成

次に使用量プランを作成します。

画面左メニューの「使用量プラン」を選択し、「作成」ボタンをクリックします。必要な項目を入力し、「次へ」ボタンをクリックします。

APIとステージを選択し、右側の「追加」アイコンをクリックします。

「次へ」ボタンをクリックします。

「APIキーを使用量プランに追加」ボタンをクリックし、キーの名前を入力後、右側の「追加」アイコンをクリックします。

「完了」ボタンをクリックして設定完了です。

API Gatewayの設定

APIキーの指定が必須となるようAPI Gatewayの設定を変更します。

対象のAPIメソッドを表示し、「メソッドリクエスト」をクリックします。

「APIキーの必要性」をtrueに変更します。

設定変更後、APIをデプロイします。「アクション」から「APIのデプロイ」を選択します。

対象のステージを選択し、「デプロイ」ボタンをクリックします。

これで設定完了です。早速動作確認してみましょう。

動作確認

curlコマンドで動作確認してみます。まずは、何も指定せずにアクセスします。

curl https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/default/AWSLambda8
{"message":"Forbidden"}

エラーメッセージが返ってきましたね。次にAPIキーをリクエストヘッダに指定してみます。[APIキー]のところは、APIキー作成時にメモした値に置き換えてください。

curl https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/default/AWSLambda8 --header "x-api-key:[APIキー]"
"Hello World!"

正常に”Hello World!”が返ってきました!

ちなみに、使用量の上限を超えると下記のエラーメッセージが返ってきます。

{"message":"Too Many Requests"}

以上です。