

# チュートリアル: クロスアカウント Lambda プロキシ統合を使用して REST API を作成する
<a name="apigateway-cross-account-lambda-integrations"></a>

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

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

## API Gateway のクロスアカウント Lambda 統合用の API の作成
<a name="apigateway-cross-account-lambda-integrations-create-api"></a>

**API を作成するには**

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

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

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

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

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

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

1. **[IP アドレスの種類]** には **[IPv4]** を選択します。

1. **[API の作成]** を選択します。

## 別のアカウントで統合用の Lambda 関数を作成する
<a name="apigateway-cross-account-lambda-integrations-create-lambda-function"></a>

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

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

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

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

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

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

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

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

   1. [**アーキテクチャ **] は、デフォルト設定のままにします。

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

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

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

1. [チュートリアル: Lambda プロキシ統合を使用して REST API を作成する](api-gateway-create-api-as-simple-proxy-for-lambda.md) から Node.js 関数の実装を入力します。

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

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

## クロスアカウントの Lambda 統合を設定する
<a name="apigateway-cross-account-lambda-integrations-create-integration2"></a>

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

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

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

**リソースを作成するには**

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

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

1. **[リソースパス]** は `/` のままにします。

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

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

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

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

**`GET` メソッドを作成するには**

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

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

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

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

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

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

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

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

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

**(オプション) 更新したポリシーを確認するには**

1. AWS マネジメントコンソール にサインインして AWS Lambda コンソール ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) を開きます。

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

1. [**Permissions**] を選択します。

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