AWSのAPI Gatewayを使ってみる

はじめに

本記事ではAWSのAPI Gatewayを触ったことない方向けに、まずは動かすことをゴールとした記事となります。

REST APIが自分で簡単に作れたり、Lamdaと連携したりできるあのAPI Gateway…だけど自分で動かすのはちょっと難しいし抵抗がある、という方向けの記事となります。

実施方法

最終的なアウトプット

まずはやってみましょう!…なのですが、最終的なREST APIの結果をブラウザで表示した結果がこちらになりました。

REST APIを作成する

まずはAWSのコンソール画面からAPI Gatawayのサービスを開きましょう。2021/07/11時点では以下のような画面が表示されるはずです。今回作成するのはREST APIです。早速、構築ボタンをクリックして作業を進めていきます。

次はREST APIの中身を作成していきます…が、このブログを読みに来た方は迷わず、そのまま画面を一番下までスクロールし、"インポート"ボタンをクリックして下さい。API GatewayサービスのREST APIの動作を確認するのであれば、AWSが提供してくれているこのサンプルをそのまま動かすのが一番です。

ここまででAWSがサンプルとして用意してくれているREST APIが完成しました。しかしこの状態ではまだ利用出来ない状態なので引き続き作業を進めていきます。

APIキーの作成

最初にAPIキーを作成していきます。APIキーを利用する目的はREST APIを不特定多数の方に利用されないようにするためです。ここで作成したAPIキーをREST APIの発行元に設定して、その認証に利用する、という流れとなります。

APIキーのメニューを開き、アクションのタブから”APIキーの作成”を選択します。

APIキーに名前を付けて保存します。

ここまででAPIキーが作成されますので、APIキーのテキストをコピーしておきましょう。このAPIキーを使ってREST APIを利用しますので、このキーは大切に保管して下さい。

(APIキーを表示するには"表示する"を1回クリックする必要があります)

メソッドのAPIキーの有効化

次はAPIのリソースのページに移動します。ここで各リソースのメソッド(GETやPUT)の内容を確認すると、APIキーがデフォルトで"不要"となっていますので、こちらを"必要"に変えていきます。

該当のメソッドをクリックした後に、"メソッドリクエスト"をクリックして下さい。

ここでメソッドの設定ページとなりますので、ここでAPIキーの必要性の項目をtrueに修正して下さい。

ステージの作成

次にステージを作成します。このステージはREST APIを発行するときのURLの一部にも利用されますが、ここで言うステージは開発環境と商用環境でURLを分けるような使い方をイメージしてもらうと良いかと思います。将来的に商用環境で使うステージをprodとする予定で、今回はdevのステージを作成します。

ステージのメニューから作成ボタンをクリックして、ステージ名を設定して画面右下の作成ボタンをクリック。

これでステージの作成としては完了です。スロットリングの設定を行うことでAPIのリクエスト数を制限したりすることも可能ですが、今回は設定しません。

使用量プランの作成

たくさんやることあるな…と考えているあなた、そうです。やることが多いんです。ここで使用量プランとはユーザー毎にAPIの権限を与えるために作成したステージに対してAPIキーを割り当てたり、APIのリクエスト数に制限を与えたりする内容となっています。

今度は使用量プランのメニューから作成ボタンをクリックして使用量プランを作成していきます。リクエスト量の制限はこちらでも設定が可能です。設定を行ったのち次へ、をクリック。

次のページでは使用量プランに紐づく、ステージを選択します。ここでは先ほど作成したdevのステージを設定します。設定したら次へ、をクリック。

このページでは使用量プランにAPIキーを紐づけます。先ほど作成したAPIをこちらで設定して下さい。設定が終わったら完了、をクリック。これで使用量プランの作成も完了です。

APIのデプロイ

最後にAPIのデプロイを行います。リソースのメニューからアクションタブを開き、APIのデプロイを選択して下さい。

デプロイするステージを確認されますので、先ほどまで作業していたdevのステージをデプロイします。ステージを選択した後にデプロイボタンをクリックして設定完了です。

(手順の問題でステージ作成時に厳密にはデプロイがなされているようです。ただしこの時点ではAPIキーによるアクセス制限が行われていません。)

動作確認

手元のラズベリーパイからREST APIを発行して動作を確認します。利用するコマンドは以下となります。

XXXXXには作成したAPIキーを設定し、後半部分のYYYYYにはREST APIのURLを入力してください。

コマンド

curl -H 'x-api-key:XXXXX' https://YYYYY.execute-api.ap-northeast-1.amazonaws.com/dev

実行結果は以下のようになりました。

無事API Gatewayが応答を返してくれたことが確認出来ました!ここでhtmlを返されず、

{“message":"Forbidden"}

というようなレスポンスがあった場合には設定、URL、APIキーのいずれかが間違っている可能性がありますので一旦見直しをして頂くのが良いかと思います。

最後にラズベリーパイ上のWebサーバーで返ってきたhtmlを表示してみました。

さいごに

本記事ではAPI Gatewayのサンプルコードを動かしてREST APIが利用できる状態にしてみました。こちらの記事がこれからAPI Gatewayの触ってみたい方の参考になれば幸いです。

ではまた。