メニュー
Amazon API Gateway
開発者ガイド

API Gateway コンソールを使用してクロスアカウントの 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 コンソールにログインし、以下の操作を行います。

  1. API を指定し、[オーソライザー] を選択します。

  2. [Create New Authorizer] を選択します。

  3. [Create Authorizer] の [Name] 入力フィールドに、オーソライザー名を入力します。

  4. [Type] で、[Lambda] オプションを選択します。

  5. [Lambda 関数] で、2 番目のアカウントで作成した Lambda オーソライザー関数の完全な ARN をコピーアンドペーストします。

    注記

    Lambda コンソールのコンソールウィンドウの右上隅で、関数の ARN を検索できます。

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

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

  7. [Lambda Event Payload] で、TOKEN オーソライザーの [Token] または [REQUEST] オーソライザーの [Request] を選択します。

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

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

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

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

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

    2. [Request] オプションで、以下の操作を行います。

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

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

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

      2. [Authorization Caching] (認証のキャッシュ) の [有効] オプションは選択したままにします。[TTL] は、デフォルト値 (300) のままにしておきます。

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

  10. [Add Permission to Lambda Function: You have selected a Lambda function from another account.Please ensure that you have the appropriate Function Policy on this function. You can do this by running the following AWS CLI command from account 123456789012:] のポップアップ、続いて aws lambda add-permission コマンド文字列が表示されます。

  11. aws lambda add-permission コマンド文字列を 2 番目のアカウントに設定されている AWS CLI ウィンドウにコピーアンドペーストします。これにより、2 番目のアカウントの Lambda オーソライザー関数への最初のアカウントによるアクセスが許可されます。

  12. 前のステップで表示されたポップアップで、[OK] を選択します。