教程:利用跨账户 Lambda 代理集成创建 REST API
您现在可以使用其他 Amazon Lambda 账户中的 Amazon 函数作为 API 集成后端。每个账户都可以位于 Amazon API Gateway 可用的任何区域中。这样便可轻松地跨多个 API 集中管理和共享 Lambda 后端函数。
在本节中,我们将介绍如何使用 Amazon API Gateway 控制台配置跨账户 Lambda 代理集成。
为 API Gateway 跨账户 Lambda 集成创建 API
创建 API
-
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 -
如果您是第一次使用 API Gateway,您会看到一个介绍服务特征的页面。在 REST API 下,选择生成。当创建示例 API 弹出框出现时,选择确定。
如果这不是您首次使用 API Gateway,请选择创建 API。在 REST API 下,选择生成。
对于 API 名称,请输入
CrossAccountLambdaAPI
。(可选)对于描述,输入描述。
将 API 端点类型设置保留为区域。
选择创建 API。
在另一个账户中创建 Lambda 集成函数
现在,您将在与创建示例 API 不同的账户中创建 Lambda 函数。
在另一个账户中创建 Lambda 函数
-
从与创建 API Gateway API 不同的账户登录 Lambda 控制台。
-
选择创建函数。
-
选择从头开始创作。
-
在从头开始创作下,执行以下操作:
-
对于函数名称,输入一个名称。
-
从运行时下拉列表中,选择受支持的 Node.js 运行时。
对于架构,请保留默认设置。
-
在权限下,展开选择或创建执行角色。您可以创建角色或选择现有角色。
-
选择创建函数以继续。
-
-
向下滚动到函数代码窗格。
-
输入来自 教程:利用 Lambda 代理集成创建 REST API 的 Node.js 函数实现。
-
选择 Deploy (部署)。
-
记下函数的完整 ARN(位于 Lambda 函数窗格的右上角)。当您创建跨账户 Lambda 集成时,将需要此信息。
配置跨账户 Lambda 集成
一旦您在其他账户中拥有 Lambda 集成函数,就可以使用 API Gateway 控制台将其添加到第一个账户中的 API。
注意
如果要配置跨区域、跨账户授权方,则添加到目标函数的 sourceArn
应使用此函数的区域,而不是 API 的区域。
创建 API 后,您将创建一个资源。通常情况下,根据应用程序逻辑将 API 资源组织成资源树形式。在本示例中,您将创建一个 /helloworld 资源。
创建资源
选择创建资源。
将代理资源保持为关闭状态。
将资源路径保持为
/
。对于资源名称,输入
helloworld
。将 CORS(跨源资源共享)保持为关闭状态。
选择创建资源。
创建资源后,您将创建一个 GET
方法。您将此 GET
方法与另一个账户中的 Lambda 函数集成。
创建 GET
方法
选择 /helloworld 资源,然后选择创建方法。
对于方法类型,选择 GET。
对于集成类型,选择 Lambda 函数。
打开 Lambda 代理集成。
对于 Lambda 函数,输入步骤 1 中您的 Lambda 函数的完整 ARN。
在 Lambda 控制台中,您可以在控制台窗口的右上角找到函数的 ARN。
-
当您输入 ARN 时,将出现一个
aws lambda add-permission
命令字符串。此策略将向您的第一个账户授予对第二个账户的 Lambda 函数的访问权限。将aws lambda add-permission
命令字符串复制粘贴到为您的第二个账户配置的 Amazon CLI 窗口中。 选择创建方法。
您可以在 Lambda 控制台中查看您的函数更新后的策略。
(可选)查看更新后的策略
-
登录到 Amazon Web Services Management Console,然后通过以下网址打开 Amazon Lambda 控制台:https://console.aws.amazon.com/lambda/
。 -
选择您的 Lambda 函数。
-
选择权限。
您应该看到具有
Allow
子句的Condition
策略,其中AWS:SourceArn
是您 API 的GET
方法的 ARN。