API Gateway コンソールを使用した Lambda オーソライザーの設定
Lambda 関数を作成してそれが機能することを確認したら、API Gateway コンソールで以下のステップを使用して、API Gateway Lambda オーソライザー (以前のカスタムオーソライザー) を設定できます。
API Gateway コンソールを使用して Lambda 認証を設定するには
-
[API Gateway コンソール] にサインインします。
-
新しい API を作成するか、既存の API を選択して、API の [オーソライザー] を選択します。
-
[新しいオーソライザーの作成] を選択します。
-
[オーソライザーの作成] の [名前] 入力フィールドに、オーソライザー名を入力します。
-
[タイプ] で、[Lambda] オプションを選択します。
-
[Lambda 関数] でリージョンを選択後、アカウントで利用可能な Lambda オーソライザー関数を選択します。
-
[Lambda 呼び出しロール] を空白のままにすると、API Gateway コンソールでリソースベースのポリシーが設定されます。ポリシーは、API Gateway に認可の Lambda 関数を呼び出すアクセス許可を付与します。IAM ロールの名前を入力して、API Gateway でオーソライザーの Lambda 関数を呼び出せるようにします。このようなロールの例については、「引き受け可能な IAM ロールを作成する」を参照してください。
API Gateway コンソールでリソースベースのポリシーを設定するように選択した場合は、[Lambda 関数にアクセス許可を追加する] ダイアログが表示されます。[OK] を選択します。Lambda オーソライザーが作成されたら、適切な認証トークン値を使用して検証し、正常に機能することを確認します。
-
[Lambda イベントペイロード] で、
TOKEN
オーソライザーの [トークン] またはREQUEST
オーソライザーの [リクエスト] を選択します。(これは、「タイプ」プロパティをTOKEN
またはREQUEST
に設定するのと同じです。) -
前のステップの選択内容に応じて、次のいずれかを実行します。
-
[トークン] オプションで、以下の操作を行います。
-
[トークンソース] にヘッダーの名前を入力します。認証トークンを Lambda オーソライザーに送信するには、この名前のヘッダーが API クライアントに含まれている必要があります。
-
必要に応じて、
Token Validation
入力フィールドに RegEx ステートメントを入力します。API Gateway は、この式に対して、入力トークンの初期検証を実行し、認証が成功するとオーソライザーを呼び出します。これにより、無効なトークンの処理費用を減少できます。 -
オーソライザーによって生成された認可ポリシーのキャッシュの実行有無によって、[認証のキャッシュ] で、[有効] オプションを選択またはクリアします。ポリシーのキャッシュが有効の場合、[TTL] 値を変更できます。[TTL] を 0 に設定すると、ポリシーのキャッシュは無効になります。ポリシーのキャッシュが有効の場合、[トークンのソース] で指定されているヘッダー名はキャッシュキーになります。
注記 デフォルトの [TTL] 値は 300 秒です。最大値は 3600 秒で、この制限値を増やすことはできません。
-
-
[リクエスト] オプションで、以下の操作を行います。
-
[ID ソース] に、選択したパラメータタイプのリクエストパラメータ名を入力します。サポートされているパラメータタイプは、
Header
、Query String
、Stage 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 に対するポリシーのキャッシングを無効にすることができます。
-
-
[作成] を選択して、選択した API の新しい Lambda オーソライザーを作成します。
-
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 オーソライザーを使用するには
-
API に戻ります。新しいメソッドを作成するか、既存のメソッドを選択します。必要に応じて、新しいリソースを作成します。
-
[メソッドの実行] で、[メソッドリクエスト] リンクを選択します。
-
[設定] で [認証] ドロップダウンリストを展開し、先ほど作成した Lambda オーソライザー (例: [myTestApiAuthorizer]) を選択してから、チェックマークアイコンを選択して選択内容を保存します。
-
オプションとして、認証トークンもバックエンドに渡す場合は、[メソッドリクエスト] ページで [ヘッダーの追加] を選択します。[名前] に、API の Lambda オーソライザーを作成した際に指定した [トークンのソース] の名前に一致するカスタムヘッダー名を入力します。続いて、チェックマークアイコンを選択して、設定を保存します。このステップは [
REQUEST
] オーソライザーには適用されません。 -
[API のデプロイ] を選択して、API をステージにデプロイします。[呼び出し URL] の値をメモしておきます。この値は、API を呼び出すときに必要になります。ステージ変数を使用した
REQUEST
オーソライザーの場合は、必要なステージ変数を定義して、[ステージエディター] で値を指定する必要があります。