AWSのAPI GatewayでAPIキーを作成〜設定

# はじめに
こんにちは、ユーゴです！
今回は、API GatewayでAPIキーを設定したく、方法をネットで調べていました。しかし、なかなか見つからず、少し苦労しました。最終的には、試行錯誤しているうちに、とても簡単な方法で実現できました。
この記事で、同じことで悩んでいる方が時間を浪費せず済むようになれば幸いです。

# 課題
AWSのAPI GatewayでAPIキーの作成〜設定がわからない。

# 解決
## 1. LambdaとAPI GatewayでAPIを作成, 設定
### 1-1. 作成
こちらについては、できる前提でお話しします。
なので、自作APIの実装手順がわからない方は、こちらの記事をご覧ください。

[API超入門！最速で使えるAPIを実装する](https://qiita.com/mu5dvlp/items/276cf24095b78126a37f)

### 1-2. APIキーを必須化
APIキーを必須化します。
リソースページから、「メソッドリクエスト」タブの「編集」ボタンをクリックしてください。

![スクリーンショット 2024-03-31 13.58.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/55b8b825-a81a-2339-bb49-7ab10ca721c9.png)

「APIキーは必須です」をONにします。

![スクリーンショット 2024-03-31 13.59.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/e456ad81-0d50-05b9-b48c-c5b58d0bb2fb.png)

ONにしたら、「保存」をクリックします。

## 2. APIキーを作成する
API Gatewayの左メニューから、「APIキー」を選択します。
そして、「APIキーの作成」ボタンを押します。
![スクリーンショット 2024-03-31 13.27.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/fdaae50a-b0dc-cecc-6209-0d5747852cb1.png)

設定は以下のような感じで大丈夫です。

![スクリーンショット 2024-03-31 13.30.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/ed8c996a-8396-8b1e-108b-c85b100ea2e6.png)

大丈夫であれば、「保存」をクリックします。

## 3. 使用量プランを作成
個人的には、**ここが肝心です**。というのも、他の記事で言及されておらず、しかしAPIとAPIキーを連携させるために必要だからです。

### 3-1. 作成
APIの使用をどれだけ許可するかを設定します。
左メニューの「使用量プラン」をクリックして、「使用量プランを作成」ボタンをクリックしましょう。

![スクリーンショット 2024-03-31 13.38.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/b83af3aa-2d06-635a-aa89-e62ab434619b.png)

今回はテストなので、数値はかなり適当に入れました。リクエストのレート、バースト、クォータの設定は、プロジェクトに応じて適切に設定してください。

![スクリーンショット 2024-03-31 13.41.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/09de2894-4e23-312a-5ec4-2ec9b62d2151.png)

~~クォータを9999にするなら、トグルをOFFにして無制限で良かった~~

大丈夫そうであれば、「使用量プランを作成」をクリックします。

### 3-2. ステージを関連付ける
作成された使用量プランのページから、「APIステージを追加」をクリックします。

![スクリーンショット 2024-03-31 13.50.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/a97e26ea-6952-14c4-c738-693f03f25f43.png)

対象のAPIとステージを選択します。(APIとステージは「[1. LambdaとAPI GatewayでAPIを作成する」](https://qiita.com/drafts/719beba933e982e97055/edit#1-lambda%E3%81%A8api-gateway%E3%81%A7api%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)で作成している想定です)

![スクリーンショット 2024-03-31 13.54.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/8b8547d2-9b5e-cb7c-23ad-060ddc224b60.png)

選択したら、「使用量プランに追加」をクリックします。

## 4. APIキーを使用量プランに対応づける
「[2. APIキーを作成する](https://qiita.com/drafts/719beba933e982e97055/edit#2-api%E3%82%AD%E3%83%BC%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B)」で作成したAPIキーのページを開きます。

![スクリーンショット 2024-03-31 13.45.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/23377ad0-ba63-fe37-6ef2-322ac02621af.png)


「使用量プランに追加」をクリックします。

![スクリーンショット 2024-03-31 13.34.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/e70af84e-ee6c-ddd4-bfcf-8be51f6cfa58.png)

使用量プランを、「[3. 使用量プランを作成](https://qiita.com/drafts/719beba933e982e97055/edit#3-%E4%BD%BF%E7%94%A8%E9%87%8F%E3%83%97%E3%83%A9%E3%83%B3%E3%82%92%E4%BD%9C%E6%88%90)」で作成したものにします。

![スクリーンショット 2024-03-31 13.47.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/1545c4f7-5c78-4e6e-c65d-179ab6d224d3.png)

選択できたら、「保存」をクリックします。

# 試してみる
APIキーのページで、「APIキー」のカラムからAPIキーをコピーします。(左側のコピーボタンを押してください)

![スクリーンショット 2024-03-31 13.55.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2607452/76a8cca9-6436-d74e-2c12-4e5bf8190d77.png)

あとは、curlなりpostmanなりで、リクエストを投げてください。
APIキーは、「x-api-key」という項目に入れるのがお決まりです。

```bash:リクエスト
curl "{エンドポイント}" --header "x-api-key:{APIキー}"
```

```bash:レスポンス
{"statusCode": 200, "body": "\"Hello from Lambda!\""}
```

POSTメソッドなら```-X POST```をお忘れなく。

# まとめ
いかがだったでしょうか。今回は、APIキーの設定方法についてを紹介しました。
とても簡単だし、個人でAPIを公開していく分にはかなり有用な方法だと思います。しかし、なぜかAPIキーの使い方について細かく言及してくれている記事が見つからなかったので、書いてみました。
お役に立てましたら、いいね, LGTM, フォローなどよろしくお願いします！