4
0

More than 3 years have passed since last update.

AWS API Gateway バージョンやエイリアスを指定して Lambda 関数を呼び出す

Posted at

設定の概要

やることは以下の通りです。

  • Lamdbda
    • バージョンやエイリアスを作成する
    • API Gateway の呼び出し許可のためにリソースベースのポリシーを作成する
  • API Gateway
    • Lambda 関数名に {stageVariables.version}{stageVariables.alias} を含める
    • ステージ変数を追加する

手順

Lambda

  • バージョンやエイリアスを作成する

ここではバージョンを作成します。

「新しいバージョンを発行」をクリックします。

3.png

「発行」をクリックします。

4.png

  • API Gateway の呼び出し許可のためにリソースベースのポリシーを作成する

これは次の API Gateway の手順の途中で設定します。API Gateway の ID やステートメント ID という API Gateway が発行する ID が必要であるためです。

API Gateway

  • Lambda 関数名に {stageVariables.version}{stageVariables.alias} を含める

メソッドは POST でも GET でも問題ありません。ポップアップが出てきたとき注意してください。Lambda のリソースベースのポリシーに必要な値です。

1.png

ポップアップ

「OK」は Lambda のリソースベースのポリシーを設定するまで押しません。

2.png

新しいタブで Lambda 関数のアクセス権限を開きます。

6.png

上記のポップアップの各値を以下のように設定します。

7.png

その後「OK」をクリックし、ポップアップを閉じます。

  • ステージ変数を追加する

CORS を有効化し、API をデプロイします。その後、「ステージ変数」タブでステージ変数を追加します。ここには Lambda 関数のバージョンを入力します。

5.png

最後に「設定」タブをクリックし、「変更を保存」をクリックします。

8.png

エイリアスの場合も同じ手順です。

テスト

以下のコードで動作確認を行いました。

index.html
<!DOCTYPE html>
<html>
<body>
  <button onclick="myFetch()">click</button>
  <script>
    function myFetch() {
      const raw = JSON.stringify({test: 'hello'});
      const myHeaders = new Headers();
      myHeaders.append('Content-Type', 'application/json');
      const requestOptions = {
        method: 'POST',
        headers: myHeaders,
        body: raw,
        redirect: 'follow'
      };
      fetch('https://API_GATEWAY_ID.execute-api.ap-northeast-1.amazonaws.com/ver', requestOptions)
        .then(response => response.text())
        .then(result => {
          console.log(result);
        })
        .catch(error => {
          console.log(error);
        });
    }
  </script>
</body>
</html>

参考記事

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