サンプル集  >  other  >  API GatewayにAPIキーを設定
API GatewayにAPIキーを設定
2025/02/01

API GatewayにAPIキーを設定します。

API Gateway+Lambda POSTを受けるで作ったものにcurlでAPI GatewayにPOSTしてみます。

>curl -X POST https://xxx.execute-api.ap-northeast-1.amazonaws.com/de
fault/jsondump
{"message":"Missing Authentication Token"}

想定通りエラーになりました。

API GatewayのAPIを開きます。


左のメニューの「API キー」をクリックします。


「APIキーの作成」をクリックします。


必要な情報を入力し「保存」をクリックします。

名前jsondump APIKey

API キーが作成されました。


左のメニューの「使用量プラン」をクリックします。


「使用量プランを作成」をクリックします。


必要な情報を入力し画面の下の「使用量プランを作成」をクリックします。

名前jsondump plan任意の名前
レート11秒あたりのリクエスト数
バースト1同時に実行できるリクエスト数
リクエスト10
1日あたり
ユーザーが実行できるリクエスト数

使用量プランが作成されました。


使用量プラン「jsondump plan」の名前をクリックします。


「ステージを追加」をクリックします。


必要な情報を入力し画面の下の「使用量プランに追加」をクリックします。

APIjsondump-API
ステージdefault

使用量プランにステージが関連付けられました。


「関連付けられた APIキー」をクリックします。


「API キーを追加」をクリックします。


必要な情報を入力し画面の下の「APIキーを追加」をクリックします。

タイプ既存のキーを追加
API キー「jsondump APIKey」を選択

使用量プランにAPIキーが追加されました。


curlでAPI GatewayにPOSTしてみます。

>curl -X POST https://xxx.execute-api.ap-northeast-1.amazonaws.com/de
fault/jsondump
{"message":"Missing Authentication Token"}

特に挙動に変化はありませんでした。

API Gatewayのjsondump-APIを開きます。


「メソッドリクエストの編集」欄の「編集」をクリックします。


設定を変更し画面の下の「保存」をクリックします。

許可なし
API キーは必須ですチェックを入れる

正常に保存されました。


curlでAPI GatewayにPOSTしてみます。

>curl -X POST https://xxx.execute-api.ap-northeast-1.amazonaws.com/de
fault/jsondump
{"message":"Missing Authentication Token"}

特に挙動に変化はありませんでした。

「APIをデプロイ」をクリックします。


「ステージ」欄を「default」を選択します。


「デプロイ」をクリックします。


正常にデプロイされました。

curlでAPI GatewayにPOSTしてみます。

>curl -X POST https://xxx.execute-api.ap-northeast-1.amazonaws.com/de
fault/jsondump
{"message":"Forbidden"}

結果はForbiddenになりました。

curlでヘッダーにx-api-keyを指定してAPI GatewayにPOSTしてみます。

>curl -X POST --header 'x-api-key:xxxx' https://xxx.execute-api.ap-no
rtheast-1.amazonaws.com/default/jsondump
{"message":"Forbidden"}

結果は同じくForbiddenでした。

POSTをダブルクォート(")で囲み、ヘッダーの文字列もシングルクォート(')からダブルクォート(")に変更したところ期待通りに動作しました。

>curl -X "POST" --header "x-api-key:xxxx" https://xxx.execute-api.ap-
northeast-1.amazonaws.com/default/jsondump
"Lambda got your json!"

試しにPOSTをシングルクォート(')で囲んでみます。

>curl -X 'POST' --header 'x-api-key:xxxx' https://xxx.execute-api.ap-
northeast-1.amazonaws.com/default/jsondump
<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
</body>
</html>

ダブルクォート(")とシングルクォート(')とで挙動が違いますね。。。

リクエストを1日10回までに設定しているため11回目以降は「Too Many Requests」が返って来ました。

>curl -X "POST" --header "x-api-key:xxxx" https://xxx.execute-api.ap-
northeast-1.amazonaws.com/default/jsondump
{"message":"Too Many Requests"}

期待通りに動作しました。

curlのバージョンを確認しておきます。

>curl --version
curl 8.9.1 (Windows) libcurl/8.9.1 Schannel zlib/1.3 WinIDN
Release-Date: 2024-07-31
Protocols: dict file ftp ftps http https imap imaps ipfs ipns mqtt po
p3 pop3s smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largef
ile libz NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets

ダブルクォート(")とシングルクォート(')は特に意識しないで使っていたので今後は気を付けないといけないなと思いました。

▲ PageTop  ■ Home


Copyright (C) 2025 ymlib.com