クロスアカウントの Lambda オーソライザーを設定する
AWS Lambda 関数は、API オーソライザー関数とは異なる AWS アカウントからも使用できるようになりました。各アカウントは、Amazon API Gateway を利用できるリージョンであればどのリージョンでもかまいません。Lambda オーソライザー関数では、OAuth や SAML などのべアラートークン認証戦略を使用できます。これにより、複数の API Gateway API 間で簡単に一元管理し、主要な Lambda オーソライザー関数を共有できるようになります。
このセクションでは、Amazon API Gateway コンソールを使用してクロスアカウント Lambda オーソライザー関数を設定する方法を示します。
これらの手順は、AWS アカウントに API Gateway API、別のアカウントに Lambda オーソライザー関数が設定されていることを前提としています。
API Gateway コンソールを使用して クロスアカウント Lambda オーソライザーを設定する
最初のアカウント (API が設定されているアカウント) で Amazon API Gateway コンソールにサインインし、以下の操作を行います。
-
API を指定し、[オーソライザー] を選択します。
-
[新しいオーソライザーの作成] を選択します。
-
[オーソライザーの作成] の [名前] 入力フィールドに、オーソライザー名を入力します。
-
[タイプ] で、[Lambda] オプションを選択します。
-
[Lambda 関数] で、2 番目のアカウントで作成した Lambda オーソライザー関数の完全な ARN をコピーアンドペーストします。
注記 Lambda コンソールのコンソールウィンドウの右上隅で、関数の ARN を検索できます。
-
[Lambda 呼び出しロール] を空白のままにすると、API Gateway コンソールでリソースベースのポリシーが設定されます。オーソライザーの作成後、このポリシーは、ポップアップに AWS CLI コマンドとして表示されます。ポリシーは、API Gateway に認可の Lambda 関数を呼び出すアクセス許可を付与します。IAM ロールの名前を入力して、API Gateway でオーソライザーの Lambda 関数を呼び出せるようにします。このようなロールの例については、「引き受け可能な IAM ロールを作成する」を参照してください。
API Gateway コンソールでリソースベースのポリシーを設定するように選択した場合は、[Lambda 関数にアクセス許可を追加する] ダイアログが表示されます。[OK] をクリックします。
-
[Lambda Event Payload] (Lambda イベントペイロード) には、
TOKEN
オーソライザーの [Token] (トークン)、またはREQUEST
オーソライザーの [Request] (リクエスト) を選択します。 -
前のステップの選択内容に応じて、次のいずれかを実行します。
-
[トークン] オプションで、以下の操作を行います。
-
[トークンソース] にヘッダーの名前を入力します。認証トークンを Lambda オーソライザーに送信するには、この名前のヘッダーが API クライアントに含まれている必要があります。
-
オプションで、[トークン検証] 入力フィールドに RegEx ステートメントを指定します。API Gateway は、この式に対して、入力トークンの初期検証を実行し、認証が成功するとオーソライザーを呼び出します。これにより、無効なトークンの処理費用を減少できます。
-
オーソライザーによって生成された認可ポリシーのキャッシュの実行有無によって、[認証のキャッシュ] で、[有効] オプションを選択またはクリアします。ポリシーのキャッシュが有効の場合、デフォルト値 (300) から [TTL] 値を変更できます。TTL=0 に設定すると、ポリシーのキャッシュは無効になります。ポリシーのキャッシュが有効の場合、[トークンのソース] で指定されているヘッダー名はキャッシュキーになります。
-
-
[リクエスト] オプションで、以下の操作を行います。
-
[ID ソース] に、選択したパラメータタイプのリクエストパラメータ名を入力します。サポートされているパラメータタイプは、
Header
、Query String
、Stage Variable
、およびContext
です。ID ソースを追加するには、[ID ソースの追加] を選択します。API Gateway では、リクエストオーソライザーのキャッシングキーとして、指定された ID ソースを使用します。キャッシュが有効の場合、API Gateway は、指定されているすべての ID ソースがランタイムに存在していることを確認できた場合のみ、Lambda 関数を呼び出します。指定された ID ソースが欠落しているか、null、または空の場合、API Gateway は、
401 Unauthorized
レスポンスを返します。オーソライザーの Lambda 関数を呼び出すことはありません。複数の ID ソースが定義されている場合、それらはすべて、オーソライザーのキャッシュキーを取得するために使用されます。キャッシュキー部分のいずれかを変更すると、オーソライザーは、キャッシュされたポリシードキュメントを破棄し、新しいドキュメントを作成します。
-
[認証のキャッシュ] の [有効] オプションは選択したままにします。[TTL] は、デフォルト値 (300) のままにしておきます。
-
-
-
[作成] を選択して、選択した API の新しい Lambda オーソライザーを作成します。
-
aws lambda add-permission
コマンド文字列を含むポップアップが表示されます。このポリシーは、API Gateway にオーソライザー Lambda 関数を呼び出すアクセス許可を付与します。後ほど使用するために、コマンドをコピーして保存しておきます。コマンドは、オーソライザーの作成後に実行します。 -
[Create Anyway] (このまま作成する) をクリックします。
-
前のステップでコピーした
aws lambda add-permission
コマンド文字列を、2 番目のアカウント用に設定された AWS CLI ウィンドウに貼り付けます。AUTHORIZER_ID
をユーザーのオーソライザー ID に置き換えます。これにより、最初のアカウントから 2 番目のアカウントの Lambda オーソライザー関数へのアクセスが許可されます。