

# 教程：利用跨账户 Lambda 代理集成创建 REST API
<a name="apigateway-cross-account-lambda-integrations"></a>

您现在可以使用其他 AWS Lambda 账户中的 AWS 函数作为 API 集成后端。每个账户都可以位于 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. 通过以下网址登录到 Amazon API Gateway 控制台：[https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway)。

1. 如果您是第一次使用 API Gateway，您会看到一个介绍服务特征的页面。在 **REST API** 下，选择**生成**。当**创建示例 API** 弹出框出现时，选择**确定**。

   如果这不是您首次使用 API Gateway，请选择**创建 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. 选择**从头开始创作**。

1. 在**从头开始创作**下，执行以下操作：

   1. 对于**函数名称**，输入一个名称。

   1. 从**运行时**下拉列表中，选择受支持的 Node.js 运行时。

   1. 对于**架构**，请保留默认设置。

   1. 在**权限**下，展开**选择或创建执行角色**。您可以创建角色或选择现有角色。

   1. 选择**创建函数**以继续。

1. 向下滚动到**函数代码**窗格。

1. 输入来自 [教程：利用 Lambda 代理集成创建 REST API](api-gateway-create-api-as-simple-proxy-for-lambda.md) 的 Node.js 函数实现。

1. 选择 **Deploy (部署)**。

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（跨源资源共享）**保持为关闭状态。

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` 命令字符串。此策略将向您的第一个账户授予对第二个账户的 Lambda 函数的访问权限。将 `aws lambda add-permission` 命令字符串复制粘贴到为您的第二个账户配置的 AWS CLI 窗口中。

1. 选择**创建方法**。

您可以在 Lambda 控制台中查看您的函数更新后的策略。

**（可选）查看更新后的策略**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 AWS Lambda 控制台：[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)。

1. 选择您的 Lambda 函数。

1. 选择**权限**。

   您应该看到具有 `Allow` 子句的 `Condition` 策略，其中 `AWS:SourceArn` 是您 API 的 `GET` 方法的 ARN。