チュートリアル:クロスアカウント Lambda プロキシ統合を使用して API Gateway REST API をビルドする - Amazon API Gateway

チュートリアル:クロスアカウント Lambda プロキシ統合を使用して API Gateway REST API をビルドする

また、API 統合バックエンドとは異なる AWS アカウントの AWS Lambda 関数も使用できるようになりました。各アカウントは、Amazon API Gateway を利用できるリージョンであればどのリージョンでもかまいません。これにより、複数の API 間で簡単に集中管理して、Lambda バックエンド関数を共有できるようになります。

このセクションでは、Amazon API Gateway コンソールを使用してクロスアカウント Lambda プロキシ統合を設定する方法を示します。

まず、あるアカウントで チュートリアル: サンプルをインポートして REST API を作成する からサンプル API を作成します。次に、別のアカウントで Lambda 関数を作成します。最後に、クロスアカウントの Lambda 統合を使用して、2 番目のアカウントで作成した Lambda 関数をサンプル API で使用できるようにします。

API Gateway のクロスアカウント Lambda 統合用の API の作成

まず、「チュートリアル: サンプルをインポートして REST API を作成する」に記載されているように、サンプル API を作成します。

サンプル API を作成するには

  1. API Gateway コンソール https://console.aws.amazon.com/apigateway にサインインします。

  2. API Gateway を初めて使用する場合は、サービスの特徴を紹介するページが表示されます。[REST API] で、[ビルド] を選択します。[Create Example API (サンプル API の作成)] がポップアップ表示されたら、[OK] を選択します。

    API Gateway を使用するのが初めてではない場合、[Create API (API の作成)] を選択します。[REST API] で、[ビルド] を選択します。

  3. [新しい API の作成] で、[Example API (サンプル API)] を選択します。

  4. [インポート] を選択して、サンプル API を作成します。

別のアカウントで統合用の Lambda 関数を作成する

ここでは、サンプル API 作成時とは異なるアカウントで Lambda 関数を作成します。

別のアカウントで Lambda 関数を作成する

  1. API Gateway API 作成時とは別のアカウントで Lambda コンソールにログインします。

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

  3. [Author from scratch] を選択します。

  4. [一から作成] で、次の操作を行います。

    1. [関数名] に名前を入力します。

    2. [ランタイム] ドロップダウンリストから、サポートされている Node.js ランタイムを選択します。

    3. [Permissions (アクセス許可)] で、[実行ロールの選択または作成] を選択します。ロールを作成することも、既存のロールを選択することもできます。

    4. [関数の作成] を選択して続行します。

  5. [関数コード] ペインまで下にスクロールします。

  6. チュートリアル: Lambda プロキシ統合を使用した Hello World REST API の構築 から Node.js 関数の実装をコピーアンドペーストします。

  7. [デプロイ] を選択します。

  8. 関数の完全な ARN をメモします (Lambda 関数ペインの右上隅)。この情報は、クロスアカウントの Lambda 統合を作成する際に必要になります。

クロスアカウントの Lambda 統合を設定する

別のアカウントで、統合用の Lambda 関数を設定したら、最初のアカウントで API Gateway コンソールを使用して API に追加します。

注記

クロスリージョン、クロスアカウントのオーソライザーを設定している場合、ターゲット関数に追加される sourceArn は、API のリージョンではなくリージョンの関数を使用する必要があります。

クロスアカウントの Lambda 統合を設定する

  1. API Gateway コンソールで、API を選択します。

  2. [リソース] を選択します。

  3. [リソース] ペインで、上位レベルの GET メソッドを選択します。

  4. [メソッドの実行] ペインで [統合リクエスト] を選択します。

  5. [Integration type (統合タイプ)] で、[Lambda Function (Lambda 関数)] を選択します。

  6. [Use Lambda Proxy integration (Lambda プロキシ統合の使用)] を選択します。

  7. [Lambda Region (Lambda リージョン)] の設定は、アカウントのリージョンのままにします。

  8. [Lambda Function (Lambda 関数)] で、2 番目のアカウントで作成した Lambda 関数の完全な ARN をコピーアンドペーストし、チェックマークを選択します。

  9. [ Lambda 関数にアクセス許可追加: 別のアカウントの Lambda 関数を選択しました] というポップアップが表示されます。アカウントアカウント 123456789012 から次の AWS CLI コマンドを実行して、この関数に適切な関数ポリシーが設定してあるか確認してください。その後、コマンド文字列 aws lambda add-permission が表示されます。

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

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

  12. Lambda コンソールで、関数の更新後のポリシーを表示するには、

    1. 統合用の関数を選択します。

    2. [Permissions] を選択します。

    Allow ポリシーの Condition 句で、AWS:SourceArn が API の GET メソッドの ARN になっています。