目次
ごあいさつ
こんばんは。
基本的にすべてに恐怖しているもに倉です。
今回は、前回作ったAPIGatewayをちょっとでもセキュアにするために
APIキーを作って適用してみようとおもいます。
ながれ
前回作った感想フォームをもとに設定していきます。
①API GatewayにAPIキーを設定
②APIキーを使わないと感想フォームの内容がLINEに通知されないことを確認
③APIキーを使ったらLINEに通知されることを確認
④うれしい
API GatewayにAPIキーを設定
APIキーを作りに行きましょう。

「APIキー」を選択します。

アクションから「APIキーの作成」を選択します。

名前は適当に決めて保存しましょう。
APIキーは個人的に自動生成のほうが強そうな気がしたので、自動生成を選択しています。

次に、「使用量プラン」を選択します。

使用量プランはAPI Gatewayの使用に制限をかける設定です。
今回は無制限にしていますが、もっとセキュアにするなら設定したほうがいいものではあります。

今回APIキーを設定するAPIステージを関連付けましょう。

そして、先ほど作成したAPIキーを使用量プランに追加したら下準備はOK!

今回APIキーを設定するAPIのメソッドリクエストの画面で
APIキーの必要性を「true」にして、忘れずにデプロイをしましょう。
試してみる
まずは、とくにJavaScriptを書き換えることなく感想フォームを使ってみます。

consoleを確認してみると、403エラーが出ているのがわかります。
通知も来ていませんので、想定している通りの動作になっていますね。
JavaScriptを書き換える
それでは、APIキーを使用するようにJavaScriptの部分を書き換えます。

まず、APIキーを確認。
そして、以前書いたJavaScriptを以下の通りに変更。
function checkText(){
        var name  = document.fm.name.value;
        var naiyo  = document.fm.naiyo.value;
        const yoi = {
                "name": name,
                "naiyo": naiyo
        }
        const okuru = JSON.stringify(yoi)
        fetch('API GatewayのURL', {
                method: 'post',
                headers: {
                        'x-api-key':'APIキー',
                        'Accept': 'application/json',
                        'Content-Type': 'application/json'
                },
                body: okuru
        })
        var textForm = document.getElementById("name");
        textForm.value = '';
        var textForm = document.getElementById("naiyo");
        textForm.value = '';
};変更点は以下の通りです。
①header→headers に変更
※こうしないとエラーが出ます!
② 'x-api-key':'APIキー', を書き加えたこれで完璧なのでばっちり通知が来ます!

あとがき
これで震えて眠らずにすみそうです。
やる前は難しそうだな……と思っていたのですが、わりと
簡単に設定できるので、設定しない手はないですね!

たまごのひび割れから身が見え始めたエンジニア。

