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

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

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

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

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

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

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

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

  3. [API 名] に「CrossAccountLambdaAPI」と入力します。

  4. (オプション) [説明] に説明を入力します。

  5. [API エンドポイントタイプ][リージョン別] に設定したままにします。

  6. API の作成 を選択します。

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

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

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

  2. [関数の作成] を選択します。

  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 のリージョンではなくリージョンの関数を使用する必要があります。

API を作成したら、リソースを作成します。通常、API リソースはアプリケーションロジックに従ってリソースツリーに整理されます。この例では、/helloworld リソースを作成します。

リソースを作成するには
  1. / リソースを選択し、[メソッドを作成] を選択します。

  2. [プロキシのリソース] はオフのままにします。

  3. [リソースパス]/ のままにします。

  4. [リソース名] に「helloworld」と入力します。

  5. [CORS (Cross Origin Resource Sharing)] はオフのままにします。

  6. [リソースの作成] を選択します。

リソースを作成したら、GET メソッドを作成します。別のアカウントで GET メソッドと Lambda 関数を統合します。

GET メソッドを作成するには
  1. /helloworld リソースを選択し、[メソッドを作成] を選択します。

  2. [メソッドタイプ] には、GET を選択します。

  3. [統合タイプ] で、[Lambda 関数] を選択します。

  4. [Lambda プロキシ統合]を有効にします。

  5. [Lambda 関数] に、ステップ 1 の Lambda 関数の完全な ARN を入力します。

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

  6. ARN を入力すると、aws lambda add-permission コマンド文字列が表示されます。このポリシーは、2 番目のアカウントの Lambda 関数へのアクセスを最初のアカウントに許可します。aws lambda add-permission コマンド文字列を 2 番目のアカウントに設定されている AWS CLI ウィンドウにコピーして貼り付けます。

  7. [メソッドの作成] を選択します。

Lambda コンソールで、関数の更新したポリシーを確認できます。

(オプション) 更新したポリシーを確認するには
  1. AWS Management Console にサインインして AWS Lambda コンソール (https://console.aws.amazon.com/lambda/) を開きます。

  2. Lambda 関数を選択します。

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

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