Amazon API Gateway
開発者ガイド

API Gateway コンソールを使用して Lambda オーソライザーを設定する

Lambda 関数を作成してそれが機能することを確認したら、API Gateway コンソールで以下のステップを使用して、API Gateway Lambda オーソライザー (以前のカスタムオーソライザー) を設定できます。

API メソッドで、Lambda オーソライザーを有効にするには

  1. API Gateway コンソールにサインインします。

  2. 新しい API を作成するか、既存の API を選択して、API の [オーソライザー] を選択します。

  3. [新しいオーソライザーの作成] を選択します。

  4. [オーソライザーの作成] の [名前] 入力フィールドに、オーソライザー名を入力します。

  5. [タイプ] で、[Lambda] オプションを選択します。

  6. [Lambda 関数] でリージョンを選択後、アカウントで利用可能な Lambda オーソライザー関数を選択します。

  7. API Gateway コンソールでリソースベースのポリシーを設定するには、[Lambda 呼び出しロール] を空欄のままにします。このポリシーでは、オーソライザーの Lambda 関数を呼び出す API Gateway 権限を付与します。IAM ロールの名前を入力して、API Gateway でオーソライザーの Lambda 関数を呼び出せるようにします。このようなロールの例については、「API が Lambda 関数を呼び出すように IAM のロールとポリシーを設定する」を参照してください。

    API Gateway コンソールでリソースベースのポリシーを設定するように選択した場合は、[Lambda 関数に権限を追加する] ダイアログが表示されます。[OK] を選択します。Lambda オーソライザーが作成されたら、適切な認証トークン値を使用して検証し、正常に機能することを確認します。

  8. [Lambda イベントペイロード] で、TOKEN オーソライザーの [トークン] または REQUEST オーソライザーの [リクエスト] を選択します。(これは、「タイプ」プロパティを TOKEN または REQUEST に設定するのと同じです。)

  9. 前のステップの選択内容に応じて、次のいずれかを実行します。

    1. [トークン] オプションで、以下の操作を行います。

      • [トークンソース] にヘッダーの名前を入力します。認証トークンを Lambda オーソライザーに送信するには、この名前のヘッダーが API クライアントに含まれている必要があります。

      • オプションで、Token Validation 入力フィールドに RegEx ステートメントを入力します。API Gateway は、この式に対して、入力トークンの初期検証を実行し、認証が成功するとオーソライザーを呼び出します。これにより、無効なトークンの処理費用を減少できます。

      • オーソライザーによって生成された認可ポリシーのキャッシュの実行有無によって、[認証のキャッシュ] で、[有効] オプションを選択またはクリアします。ポリシーのキャッシュが有効の場合、デフォルト値 (300) から [TTL] 値を変更できます。TTL=0 に設定すると、ポリシーのキャッシュは無効になります。ポリシーのキャッシュが有効の場合、[トークンのソース] で指定されているヘッダー名はキャッシュキーになります。

    2. [リクエスト] オプションで、以下の操作を行います。

      • [ID ソース] に、選択したパラメータタイプのリクエストパラメータ名を入力します。サポートされているパラメータタイプは、HeaderQuery StringStage Variable、および Context です。ID ソースを追加するには、[ID ソースの追加] を選択します。

        API Gateway では、リクエストオーソライザーのキャッシングキーとして、指定された ID ソースを使用します。キャッシュが有効の場合、API Gateway は、指定されているすべての ID ソースが実行時に存在していることを確認できた場合のみ、Lambda 関数を呼び出します。指定された ID ソースが欠落しているか、null、または空の場合、API Gateway は、401 Unauthorized レスポンスを返します。オーソライザーの Lambda 関数を呼び出すことはありません。

        複数の ID ソースが定義されている場合、それらはすべて、オーソライザーのキャッシュキーを取得するために使用されます。キャッシュキー部分のいずれかを変更すると、オーソライザーは、キャッシュされたポリシードキュメントを破棄し、新しいドキュメントを作成します。

      • オーソライザーによって生成された認可ポリシーのキャッシュの実行有無によって、[認証のキャッシュ] で、[有効] オプションを選択または選択解除します。ポリシーのキャッシュが有効の場合、デフォルト値 (300) から [TTL] 値を変更できます。TTL=0 に設定すると、ポリシーのキャッシュは無効になります。

        キャッシングが無効の場合は、ID ソースを指定する必要はありません。API Gateway は、オーソライザーの Lambda 関数を呼び出す前に検証を実行することはありません。

    注記

    キャッシングを有効にするには、認証は API 全体のすべてのメソッドに適用されるポリシーを返す必要があります。メソッド固有のポリシーを強制するには、TTL 値をゼロに設定して API に対するポリシーのキャッシングを無効にすることができます。

  10. [作成] を選択して、選択した API の新しい Lambda オーソライザーを作成します。

  11. API のオーソライザーが作成されたら、メソッドで構成する前に、必要に応じてオーソライザーをテストすることができます。

    [TOKEN] オーソライザーの [ID トークン] 入力フィールドに有効なトークンを入力し、[テスト] を選択します。トークンは、オーソライザーの [ID トークンのソース] 設定で指定したヘッダーとして、Lambda 関数に渡されます。

    [REQUEST] オーソライザーで、指定された ID ソースに対応する有効なリクエストパラメータを入力し、[テスト] を選択します。

    オーソライザーの呼び出しをテストするには、API Gateway コンソールだけでなく、AWS CLI の AWS または API Gateway SDK を使用できます。AWS CLI を使用してテストする方法については、「オーソライザーのテスト呼び出し」を参照してください。

    注記

    オーソライザーのテスト呼び出しを実行するメソッドのテスト呼び出しは、独立したプロセスです。

    API Gateway コンソールを使用してメソッドのテスト呼び出しを行う方法については、「コンソールを使用して REST API メソッドをテストする」を参照してください。AWS CLI を使用してメソッドのテスト呼び出しを行う方法については、「メソッドのテスト呼び出し」を参照してください。

    メソッドおよび設定済みのオーソライザーのテスト呼び出しを行うには、API をデプロイした後、cURL または Postman を使用してメソッドを呼び出し、必要なトークンまたはリクエストパラメータを指定します。

次の手順では、API メソッドで Lambda オーソライザーを使用するように設定する方法を示します。

API メソッドを設定して Lambda オーソライザーを使用するには

  1. API に戻ります。新しいメソッドを作成するか、既存のメソッドを選択します。必要に応じて、新しいリソースを作成します。

  2. [メソッドの実行] で、[メソッドリクエスト] リンクを選択します。

  3. [設定] で [認証] ドロップダウンリストを展開し、先ほど作成した Lambda オーソライザー (例: [myTestApiAuthorizer]) を選択してから、チェックマークアイコンを選択して選択内容を保存します。

  4. オプションとして、認証トークンもバックエンドに渡す場合は、[メソッドリクエスト] ページで [ヘッダーの追加] を選択します。[名前] に、API の Lambda オーソライザーを作成した際に指定した [トークンのソース] の名前に一致するカスタムヘッダー名を入力します。続いて、チェックマークアイコンを選択して、設定を保存します。このステップは [REQUEST] オーソライザーには適用されません。

  5. [API のデプロイ] を選択して、API をステージにデプロイします。[呼び出し URL] の値をメモしておきます。この値は、API を呼び出すときに必要になります。ステージ変数を使用した REQUEST オーソライザーの場合は、必要なステージ変数を定義して、[ステージエディター] で値を指定する必要があります。