

# 授予 Lambda 函数访问其他账户中 Amazon VPC 中资源的权限
<a name="configuration-vpc-cross-account"></a>

可以为 Amazon Lambda 函数提供权限来访问由其他账户管理的 Amazon Virtual Private Cloud 中 Amazon VPC 中的资源，而无需将任一 VPC 暴露在互联网中。此访问模式支持使用 Amazon 与其他组织共享数据。使用此访问模式，可以在 VPC 之间共享数据，安全性和性能都比通过互联网共享更高。将 Lambda 函数配置为使用 Amazon VPC 对等连接来访问这些资源。

**警告**  
如果您允许在账户或 VPC 之间进行访问，请检查您的计划是否符合管理这些账户的相应组织的安全要求。按照本文档中的说明进行操作，将影响资源的安全状况。

在本教程中，将使用 IPv4 通过对等连接将两个账户连接在一起。配置的 Lambda 函数尚未连接到 Amazon VPC。需配置 DNS 解析以将函数连接到不提供静态 IP 的资源。要使这些说明适应其他对等互连场景，请参阅《[VPC Peering Guide](https://docs.amazonaws.cn//vpc/latest/peering/what-is-vpc-peering.html)》。

## 先决条件
<a name="w2aac15c27c61b9"></a>

要让 Lambda 函数访问其他账户中的资源，您必须具有：
+ 一个 Lambda 函数，配置为使用您的资源进行身份验证，然后从中读取。
+ 其他账户中的资源，例如 Amazon RDS 集群，可通过 Amazon VPC 获得。
+ Lambda 函数账户和资源账户的凭证。如果您无权使用您的资源账户，请联系授权用户准备好该账户。
+ 用于创建和更新 VPC（以及支持的 Amazon VPC 资源）以与 Lambda 函数关联的权限。
+ 用于更新 Lambda 函数的执行角色和 VPC 配置的权限。
+ 用于在 Lambda 函数的账户中创建 VPC 对等连接的权限。
+ 用于在资源账户中接受 VPC 对等连接的权限。
+ 用于更新资源的 VPC（以及支持的 Amazon VPC 资源）的配置的权限。
+ 用于调用 Lambda 函数的权限。

## 在函数账户中创建 Amazon VPC
<a name="w2aac15c27c61c11"></a>

在 Lambda 函数账户中创建 Amazon VPC、子网、路由表和安全组。

**使用控制台创建 VPC、子网和其他 VPC 资源**

1. 通过以下网址打开 Amazon VPC 控制台：[https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 在控制面板上，选择**创建 VPC**。

1. 对于 **IPv4 CIDR 块**，请提供私有 CIDR 块。CIDR 块不得与资源 VPC 中的块重叠。不要选择资源 VPC 用于为资源分配 IP 的块，也不要选择资源 VPC 中已在路由表中定义的块。有关定义相应的 CIDR 块的更多信息，请参阅 [VPC CIDR 块](https://docs.amazonaws.cn/vpc/latest/userguide/vpc-cidr-blocks.html)。

1. 选择**自定义可用区**。

1. 选择与您的资源相同的可用区。

1. 对于**公有子网数量**，选择 **0**。

1. 对于 **VPC endpoints**（VPC 端点），选择 **None**（无）。

1. 选择**创建 VPC**。

## 将 VPC 权限授予函数的执行角色
<a name="w2aac15c27c61c13"></a>

将 [AWSLambdaVPCAccessExecutionRole](https://docs.amazonaws.cn/aws-managed-policy/latest/reference/AWSLambdaVPCAccessExecutionRole.html) 附加到函数的执行角色以允许其连接到 VPC。

**将 VPC 权限授予函数的执行角色**

1. 打开 Lamba 控制台的[函数](https://console.amazonaws.cn/lambda/home#/functions)页面。

1. 选择函数的名称。

1. 选择**配置**。

1. 选择**权限**。

1. 在**角色名称**下，选择执行角色。

1. 在**权限策略**部分中，选择**添加权限**。

1. 在下拉列表中选择**附加策略**。

1. 在搜索框中，输入 `AWSLambdaVPCAccessExecutionRole`。

1. 选中策略名称左侧的复选框。

1. 选择**添加权限**。

**将函数附加到 Amazon VPC**

1. 打开 Lamba 控制台的[函数](https://console.amazonaws.cn/lambda/home#/functions)页面。

1. 选择函数的名称。

1. 选择**配置**选项卡，然后选择 **VPC**。

1. 选择**编辑**。

1. 在 **VPC** 下方，选择您的 VPC。

1. 在**子网**下方，选择您的子网。

1. 在**安全组**下方，选择 VPC 的默认安全组。

1. 选择**保存**。

## 创建 VPC 对等连接请求
<a name="w2aac15c27c61c17"></a>

创建从函数 VPC（请求者 VPC）到资源 VPC（接受方 VPC）的 VPC 对等连接请求。

**请求从函数 VPC 进行 VPC 对等连接**

1. 打开 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 在导航窗格中，选择 **Peering Connections**（对等连接）。

1. 选择 **Create Peering Connection**（创建对等连接）。

1. 对于 **VPC ID（请求者）**，请选择函数的 VPC。

1. 对于 **账户 ID**，输入资源账户的 ID。

1. 对于 **VPC ID（接受者）**，输入资源的 VPC。

## 准备好资源账户
<a name="w2aac15c27c61c19"></a>

要创建对等连接并准备资源的 VPC 以使用该连接，请使用具有先决条件中列出的权限的角色登录资源账户。根据账户安全保障方式，登录步骤可能会有所不同。有关如何登录 Amazon 账户的更多信息，请参阅《[Amazon Sign-in User Guide](https://docs.amazonaws.cn//signin/latest/userguide/what-is-sign-in.html)》。在资源账户中，执行以下过程。

**接受 VPC 对等连接请求**

1. 打开 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 在导航窗格中，选择 **Peering Connections**（对等连接）。

1. 选择待处理的 VPC 对等连接（状态为“待接受”）。

1. 选择**操作**。

1. 从下拉列表中选择**接受请求**。

1. 当系统提示进行确认时，选择**接受请求**。

1. 选择**立即修改我的路由表**，以向 VPC 的主路由表添加路由，从而确保您可以通过对等连接收发流量。

检查路由表，了解资源的 VPC。根据资源 VPC 的设置方式，Amazon VPC 生成的路由可能无法建立连接。检查 VPC 的新路由和现有配置之间是否存在冲突。有关问题排查的更多信息，请参阅《Amazon Virtual Private Cloud VPC 对等连接指南》**中的[对 VPC 对等连接进行问题排查](https://docs.amazonaws.cn/vpc/latest/peering/troubleshoot-vpc-peering-connections.html)。

**更新资源的安全组**

1. 打开 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 在导航窗格中，选择**安全组**。

1. 为资源选择安全组。

1. 选择**操作**。

1. 从下拉列表中选择**编辑入站规则**。

1. 选择**添加规则**。

1. 对于**来源**，请输入函数的账户 ID 和安全组 ID，用正斜线分隔（例如 111122223333/sg-1a2b3c4d）。

1. 选择**编辑出站规则**。

1. 检查出站流量是否受到限制。默认 VPC 设置允许所有出站流量。如果出站流量受到限制，请继续执行下一步。

1. 选择**添加规则**。

1. 对于**目的地**，请输入函数的账户 ID 和安全组 ID，用正斜线分隔（例如 111122223333/sg-1a2b3c4d）。

1. 选择**保存规则**。

**实现对对等连接的 DNS 解析**

1. 打开 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 在导航窗格中，选择 **Peering Connections**（对等连接）。

1. 选择对等连接。

1. 选择**操作**。

1. 选择**编辑 DNS 设置**。

1. 在**接受方 DNS 解析**下方，选择**允许请求者 VPC 将接受方 VPC 主机的 DNS 解析为私有 IP**。

1. 选择**保存更改**。

## 更新函数账户中的 VPC 配置
<a name="w2aac15c27c61c21"></a>

登录函数账户，然后更新 VPC 配置。

**为 VPC 对等连接添加路由**

1. 打开 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 在导航窗格中，选择 **Route tables**（路由表）。

1. 选中与函数关联之子网的路由表名称旁边的复选框。

1. 选择**操作**。

1. 选择 **Edit routes (编辑路由)**。

1. 选择 **Add route**（添加路由）。

1. 对于**目的地**，输入资源 VPC 的 CIDR 块。

1. 对于**目标**，选择 VPC 对等连接。

1. 选择**保存更改**。

有关在更新路由表时可能遇到的注意事项的更多信息，请参阅[为 VPC 对等连接更新路由表](https://docs.amazonaws.cn//vpc/latest/peering/vpc-peering-routing.html)。

**更新 Lambda 函数的安全组**

1. 打开 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 在导航窗格中，选择**安全组**。

1. 选择**操作**。

1. 选择**编辑入站规则**。

1. 选择**添加规则**。

1. 对于**来源**，请输入资源的账户 ID 和安全组 ID，用正斜线分隔（例如 111122223333/sg-1a2b3c4d）。

1. 选择**保存规则**。

**实现对对等连接的 DNS 解析**

1. 打开 [https://console.aws.amazon.com/vpc/](https://console.amazonaws.cn/vpc/)。

1. 在导航窗格中，选择 **Peering Connections**（对等连接）。

1. 选择对等连接。

1. 选择**操作**。

1. 选择**编辑 DNS 设置**。

1. 在**请求者 DNS 解析**下方，选择**允许接受方 VPC 将请求者 VPC 主机的 DNS 解析为私有 IP**。

1. 选择**保存更改**。

## 测试函数
<a name="w2aac15c27c61c23"></a>

**创建测试事件并检查函数的输出**

1. 在**代码源**窗格中，选择**测试**。

1. 选择**创建新事件**。

1. 在**事件 JSON** 面板中，将默认值替换为适合 Lambda 函数的输入。

1. 选择 ** 调用**。

1. 在**执行结果**选项卡中，确认**响应**包含预期输出。

此外，可以检查函数的日志，以验证日志是否符合预期。

**在 CloudWatch Logs 中查看函数的调用记录**

1. 选择**监控**选项卡。

1. 选择**查看 CloudWatch 日志**。

1. 在**日志流**选项卡上，选择函数调用的日志流。

1. 确认日志符合预期。