0
0

More than 1 year has passed since last update.

API Gatewayを環境構築しながら学ぶ

Last updated at Posted at 2022-09-04

「APIを実装する」ということが良く分からなかったため
一度環境構築してみることで理解を深めた際のメモです。
AWSの無料利用枠で試してます。

  • 最終目標

AWS API Gateway と AWS Lambda で Hello Nodejs! を出力する

1. Lambda関数の作成

API Gatewayを作成する場合、API Gatewayのバックエンドを指定しないといけません。
そのバックエンドをLambda関数としたいので、その関数※を作成します。
※API Gatewayからのデータを受け取り、そのまま返すLambda関数

  • 関数の作成
    image.png
  • apiGateWayTestという関数名で作成
    image.png

サンプルで自動作成された index.js の 'Hello from Lambda!' の部分を event に置き換えます
image.png

  • 関数のテスト

イベント名を入力し、右上のテストボタンを押すimage.pngテストに書いた json がそのまま出力されていたら成功
image.png

2. API Gateway で API を作成

  • Amazon API Gateway のコンソールを開き、REST API の「構築」をクリックします
    image.png

  • API の基本情報を以下のように設定して「API の作成」をクリックします
    image.png

  • リソース(APIのパス:今回は/test)を作成します。
    image.png
    image.png

  • リソースにメソッドを定義します。リソースの下にリストボックスが現れるので、今回はPOSTを選択します。
    image.png

  • リソースとバックグラウンドの処理を関連付けるための、メソッドのセットアップをします。「統合タイプ」はLambda 関数、「Lambda 関数」のテキストボックスは、先ほど作成した関数の名前とします
    image.png

  • メソッドのテストをします。
    image.png
    メソッドテストの画面に遷移したら「リクエスト本文」の欄に以下追記し、テストボタンを押します。
    レスポンス本文に送信した json が表示されていたら成功です。
    image.png

3. APIキーの作成

  • デプロイ前にAPIキーを作成し、APIリクエスト時に認証を行うようにします。
     メニューから「APIキー」へ移動し「アクション -> APIキーの作成」を押します。
    image.png
    API キーの情報を入力して「保存」をクリック
    image.png
    APIキーが生成されます。ここで作成されたAPIキー情報は6. API動作確認にて使用します
    image.png

  • 作成したAPIキーをメソッドに割り当てます。
    image.png
    デフォルトのfalseからtrueに変更してチェックボタンをクリックします。
    image.png

4. APIのデプロイ

  • 外部からアクセスできるようにデプロイを行います。
    API をデプロイすることで、エンドポイントの URL が作成されます。
    image.png
    デプロイされるステージに「新しいステージ」を選択してステージ名を入力します。ステージの説明とデプロイメントの説明の入力は任意です。入力後、「デプロイボタンを押します
    image.png

エンドポイントURLが作成されます。
image.png

5. ステージとAPIキーの紐づけ

ステージで利用できるAPIキーを紐付ける必要があるので、使用量プランのページへ移動し「作成」を押します。名前を適当に入力して、「スロットリング」「クォータ」についてチェックを外して「次へ」を押します。
image.png
「APIステージの追加」からAPIとステージを選択してチェックボタンを押し、「次へ」を押します。
使用量プランとAPIステージが紐づきます
image.png
「APIキーを使用量プランに追加」からAPIキーを選択してチェックボタンを押します。
使用量プランとAPIキーが紐づきます。
image.png
ここでAPIステージとAPIキーが紐づきますので、利用可能状態となりました。

6. API動作確認

最後に、設定がうまくいっているかどうかを外部からのアクセスで確認します。
curlコマンドで-dオプションでPOSTのデータを指定、-Hでヘッダーを追加します。

$ curl -d '{ "test" : "Hello Nodejs!" }' -H 'x-api-key:<YOUR API KEY>' <YOUR API URL>

POSTデータに{ "test" : "Hello Nodejs!" }
<YOUR API KEY>に作成されたAPIキー文字列
<YOUR API URL>にAPIステージのURLの呼び出し
を入力します。

{"statusCode":200,"body":"{\"test\":\"Hello Nodejs!\"}"}

上記レスポンスが返ればOKです!

補足

6.API動作確認ですが、Windows10のコマンドプロンプトにて確認しようとしてハマりました。。

{"message":"Forbidden"}

何故か上記となり失敗。。。原因わからず。

ブラウザからPOSTメソッドを送信できるChrome拡張 Advanced REST clientにて
Body部とHeader部を入力して確認しました。
image.png

image.png

参考情報

0
0
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
0
0