Amazon API Gateway
開発者ガイド

チュートリアル: クロスアカウントの Lambda プロキシ統合で API Gateway API をビルドする

AWS Lambda 関数は、API 統合バックエンドとして、別の AWS アカウントから使用できるようになりました。各アカウントは、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 コンソールにサインインします。

  2. API Gateway の [API] ホームページから、[API の作成]を選択します。

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

  4. [エンドポイントタイプ] で、[最適化されたエッジ] を選択します。

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

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

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

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

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

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

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

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

    1. [名前] 入力フィールドに関数名を入力します。

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

    3. [ロール] ドロップダウンリストで、[既存のロールを選択する]、[テンプレートから新しいロールを作成]、または [カスタムロールの作成] を選択します。次に、選択に応じて次の手順に従います。

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

      この例では、[デザイナー] セクションをスキップし、次に [関数コード] セクションに移動します。

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

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

  7. [Runtime (ランタイム)] ドロップダウンメニューから、[Node.js 8.10] を選択します。

  8. [Save] を選択します。

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

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

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

注記

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

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

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

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

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

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

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

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

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

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

  9. [Lambda 関数に権限を追加する: 別のアカウントの Lambda 関数を選択しました。Please ensure that you have the appropriate Function Policy on this function.これを行うには、アカウント 123456789012 から次の AWS CLI コマンドを実行します:] のポップアップ、続いて aws lambda add-permission コマンド文字列が表示されます。

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

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

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

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

    2. [デザイナー] ペインで、キーアイコンをクリックします。

    [Function policy (関数のポリシー)] ペインには、AWS:SourceArn が API の GET メソッドの ARN である Condition 句を含む Allow ポリシーが表示されます。