API GatewayのAPIキー設定方法
はじめに
APIキーを使用することで、APIキーを持っているユーザーのみがAPIへのアクセス権を持つことになります。
つまり、APIにアクセスできるクライアントを限定することができ、不正なアクセスや悪意のある利用を防ぐことができます。
APIキーの作成
APIキーの作成
を選択、
名前を入力し、APIキーは自動生成
を選択されていることを確認したら保存
を押してください。
作成されたAPIキーはここからコピーすることができます。
APIの設定を変更
APIの設定を変更し、リクエストにAPIキーを必須にしてください。
メソッドリクエスト
を選択、
編集
を選択してください。
ちなみに現在はAPI キーは必須です
の箇所がFalse
になっていると思います。
API キーは必須です
を選択し、保存
を押してください。
この後に再度APIをデプロイしてください。
使用量プランの作成
使用量プランに対してAPIキーを関連付けることで、APIキーを使用したアクセスが可能になります。
使用量プランでは呼び出し回数に制限をかけすことができます。
使用量プランを作成
を選択、
内容を入力したら、使用量プランの作成
を押してください。
使用量プランを追加
使用量プランに追加
を選択、
先ほど作成したプランを選択し、保存
を押してください。
APIキーと使用量プランを関連付ける
APIキーの追加
を選択
APIキーは今回作成したものを追加したらAPIキーの追加
を押してください。
ステージと使用量プランを関連付ける
API ステージを追加
を選択、
API
とステージ
を選択したら、使用量プランに追加
を押してください。
APIキーをリクエストヘッダに付ける
APIキーを有効にした場合、リクエストを送信する際に、APIキーをリクエストヘッダーまたはクエリパラメータとして適切に含める必要があります。
const response = await fetch(endPoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': apiKey, //追加
},
body: requestBody,
});
リクエストボディがないというエラーが出た場合
いろんな解決法を試したがそれでもエラーが解決しないという場合、下記のように一行空いているだけでエラーになりますので確認してみてください。
const response = await fetch(endPoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': apiKey, //追加
},
body: requestBody,
});
参考にさせていただきました
終わりに
何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉
Discussion