API Gateway コンソールを使用した Lambda オーソライザーの設定 - Amazon API Gateway

API Gateway コンソールを使用した Lambda オーソライザーの設定

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

API Gateway コンソールを使用して Lambda 認証を設定するには

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

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

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

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

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

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

  7. [Lambda 呼び出しロール] を空白のままにすると、API Gateway コンソールでリソースベースのポリシーが設定されます。ポリシーは、API Gateway に認可の Lambda 関数を呼び出すアクセス許可を付与します。IAM ロールの名前を入力して、API Gateway でオーソライザーの Lambda 関数を呼び出せるようにします。このようなロールの例については、「引き受け可能な IAM ロールを作成する」を参照してください。

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

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

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

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

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

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

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

        注記

        デフォルトの [TTL] 値は 300 秒です。最大値は 3600 秒で、この制限値を増やすことはできません。

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

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

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

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

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

    オーソライザーの呼び出しをテストするには、API Gateway コンソールを使用するだけでなく、AWS CLI または AWS SDK for API Gateway を使用することもできます。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 オーソライザーの場合は、必要なステージ変数を定義して、[ステージエディター] で値を指定する必要があります。