连接到 VPC 网络
本页面介绍了如何使用无服务器 VPC 访问通道将 Cloud Functions 直接连接到 VPC 网络,从而允许访问 Compute Engine 虚拟机实例、Memorystore 实例以及具有内部 IP 地址的任何其他资源。
准备工作
如果您的项目中还没有 VPC 网络,请创建一个 VPC 网络。
如果您使用共享 VPC,请提供对连接器的访问权限,并参阅连接到共享 VPC 网络。
在 Google Cloud 控制台中,确保已为您的项目启用 Serverless VPC Access API:
创建 Serverless VPC Access 连接器
如需在不使用公共互联网的情况下向您的 VPC 网络发送请求并接收相应的响应,您可以使用无服务器 VPC 访问通道连接器。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 创建连接器。
控制台
转到 Serverless VPC Access 概览页面。
点击创建连接器。
在名称字段中,为连接器输入名称。该名称必须符合 Compute Engine 命名惯例,但还需注意,长度不得超过 21 个字符,且连字符 (-) 计为 2 个字符。
在区域字段中,选择连接器的区域。此区域必须与您的无服务器服务的区域相匹配。
如果您的服务或作业位于
us-central
或europe-west
区域,请使用us-central1
或europe-west1
。在网络字段中,选择要将连接器连接到的 VPC 网络。
点击子网菜单。每个连接器都需要有自己的
/28
子网来放置连接器实例。其他资源(例如虚拟机、Private Service Connect 或负载均衡器)不能使用子网。如果您使用的是共享 VPC(需要使用您自己的子网),请选择未使用的
/28
子网。 如需确认您的子网未用于 Private Service Connect 或 Cloud Load Balancing,请通过在 gcloud CLI 中运行以下命令来检查子网purpose
是否为PRIVATE
: 您需要将其中的:gcloud compute networks subnets describe SUBNET
- SUBNET:您的子网的名称
如果您不使用共享 VPC,请为连接器创建子网,或者从菜单中选择自定义 IP 范围,让连接器创建子网。
在 IP 范围字段中,输入未预留的 CIDR
/28
内部 IP 范围中的第一个地址。此 IP 范围不得与 VPC 网络中预留的任何现有 IP 地址重叠。例如,10.8.0.0
(/28
) 将适用于大多数新项目。创建的子网处于隐藏状态,不能在防火墙规则和 NAT 配置中使用。
在 Google Cloud 控制台中查看当前预留的 IP 地址范围。
详细了解使用子网。
(可选)如需设置扩缩选项以更好地控制连接器,请点击显示扩缩设置以显示扩缩表单。
- 设置连接器的实例数下限和上限,或使用默认值 2(下限)和 10(上限)。如果流量需要,连接器会扩容到指定的上限,但流量下降时,连接器实例数量不会缩减回来。
您必须使用介于
2
和10
之间的值。 - 在实例类型菜单中,选择要用于连接器的机器类型,或者使用默认的
e2-micro
。当您选择实例类型时,请注意右侧的费用边栏,其中显示带宽和费用估算值。
- 设置连接器的实例数下限和上限,或使用默认值 2(下限)和 10(上限)。如果流量需要,连接器会扩容到指定的上限,但流量下降时,连接器实例数量不会缩减回来。
您必须使用介于
点击创建。
准备就绪后,连接器名称旁边会出现绿色的对勾标记。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
将
gcloud
组件更新到最新版本:gcloud components update
确保已为您的项目启用 Serverless VPC Access API:
gcloud services enable vpcaccess.googleapis.com
如果您使用的是共享 VPC(需要使用您自己的子网),请使用以下命令创建连接器:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET \ # If you are not using Shared VPC, omit the following line. --subnet-project HOST_PROJECT_ID \ # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max. --min-instances MIN \ --max-instances MAX \ # Optional: specify machine type, default is e2-micro --machine-type MACHINE_TYPE
替换以下内容:
CONNECTOR_NAME
:连接器的名称。该名称必须符合 Compute Engine 命名惯例,但还需注意,长度不得超过 21 个字符,且连字符 (-) 计为 2 个字符。REGION
:连接器的区域;此区域必须与无服务器服务或作业的区域相匹配。如果您的服务或作业位于us-central
或europe-west
区域,请使用us-central1
或europe-west1
。SUBNET
:未使用的/28
子网的名称。HOST_PROJECT_ID
:宿主项目的 ID;仅在您使用共享 VPC 时提供。MIN
:用于连接器的实例数下限。请使用介于2
到9
之间的整数。默认值为2
。如需了解连接器扩缩,请参阅吞吐量和扩缩。MAX
:用于连接器的实例数上限。请使用介于3
到10
之间的整数。默认值为10
。如果流量需要,连接器会扩容到[MAX]
个实例,但不会缩减。如需了解连接器扩缩,请参阅吞吐量和扩缩。MACHINE_TYPE
:f1-micro
、e2-micro
或e2-standard-4
。如需了解连接器吞吐量,包括机器类型和扩缩,请参阅吞吐量和扩缩。
如需了解详情和可选的参数,请参阅
gcloud
参考文档。如果您不使用共享 VPC,并且希望提供自定义 IP 范围而不是使用现有子网,请使用以下命令创建连接器:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --network VPC_NETWORK \ --region REGION \ --range IP_RANGE
请替换以下内容:
CONNECTOR_NAME
:连接器的名称。该名称必须符合 Compute Engine 命名惯例,但还需注意,长度不得超过 21 个字符,且连字符 (-
) 计为 2 个字符。VPC_NETWORK
:要将连接器附加到的 VPC 网络。REGION
:连接器的区域。此区域必须与您的无服务器服务或作业的区域相匹配。如果您的服务或作业位于us-central
或europe-west
区域,请使用us-central1
或europe-west1
。IP_RANGE
:未预留的内部 IP 网络,必须提供/28
的未分配空间。提供的值是采用 CIDR 表示法的网络 (10.8.0.0/28
)。此 IP 范围不得与 VPC 网络中预留的任何现有 IP 地址重叠。例如,10.8.0.0/28
适用于大多数新项目。 为此范围创建的子网处于隐藏状态,不能在防火墙规则和 NAT 配置中使用。
如需了解详情和可选的参数(例如吞吐量控制),请参阅
gcloud
参考文档。在使用之前,验证连接器处于
READY
状态:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
替换以下内容:
CONNECTOR_NAME
:连接器的名称;这是您在上一步中指定的名称。REGION
:连接器的区域;这是您在上一步中指定的区域。
输出应包含
state: READY
行。
Terraform
您可以使用 Terraform 资源启用 vpcaccess.googleapis.com
API。
您可以使用 Terraform 模块创建 VPC 网络和子网,然后创建连接器。
配置函数以连接到 VPC 网络
您必须将每个函数配置为使用无服务器 VPC 访问通道连接器来连接到 VPC 网络以发送出站流量。您可以通过 Google Cloud 控制台或 Google Cloud CLI 将函数配置为使用连接器:
控制台
如果要配置新函数,请点击创建函数。如果您要配置现有函数,请点击该函数,然后点击修改。
如果您要配置新函数,请根据需要填写初始函数设置页面,然后点击运行时、构建...展开函数配置页面。
点击连接标签页,然后在“出站流量设置”下,从 VPC 网络菜单中选择以下选项之一:
- 如需断开函数与 VPC 网络的连接,请选择无。
- 如需使用现有连接器,请从下拉列表中选择,或者选择自定义以使用下拉列表中未显示的现有连接器。
- 如需创建新的连接器,请选择添加新的 VPC 连接器。(预览版)
如需详细了解如何创建连接器,请参阅创建无服务器 VPC 访问通道连接器。
点击下一步。
gcloud
使用 gcloud functions deploy
命令部署该函数并指定 --vpc-connector
标志:
gcloud functions deploy FUNCTION_NAME \ --vpc-connector CONNECTOR_NAME \ FLAGS...
其中:
FUNCTION_NAME
是函数的名称。CONNECTOR_NAME
是连接器的名称。FLAGS...
是指在函数部署期间传递的其他标志。
使用 --clear-vpc-connector
标志断开函数与 VPC 网络的连接:
gcloud functions deploy FUNCTION_NAME \ --clear-vpc-connector \ FLAGS...
如需更好地控制通过连接器路由哪些请求,请参阅出站流量设置。
访问 VPC 资源
允许从无服务器基础架构到连接器的入站流量
您的连接器虚拟机必须能够从 Google Cloud 外部 IP 地址范围 35.199.224.0/19
接收数据包。此范围由底层 Google 无服务器基础架构使用,以确保 Cloud Run、Cloud Functions 和 App Engine 中的服务可以将数据包发送到连接器。
如果连接器与目标 VPC 网络位于同一项目中,则无服务器 VPC 访问通道通过允许来自 35.199.224.0/19
的数据包来创建适用于连接器虚拟机的入站流量允许防火墙规则。当连接器连接独立 VPC 网络或连接器连接共享 VPC 网络且连接器位于宿主项目中时,连接器及其目标 VPC 网络位于同一项目中。
如果您在共享 VPC 服务项目中创建连接器,则共享 VPC 宿主项目的 Security Admin 或 Project Owner 必须创建适用于允许来自 35.199.224.0/19
的数据包的连接器虚拟机的入站流量允许防火墙规则。以下是入站流量允许 VPC 防火墙规则示例:
gcloud compute firewall-rules create RULE_NAME \ --action=ALLOW \ --rules=TCP \ --source-ranges=35.199.224.0/19 \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY \ --project=PROJECT_ID
请替换以下内容:
- RULE_NAME:新防火墙规则的名称。例如
allow-vpc-connector-ingress
。 - VPC_CONNECTOR_NETWORK_TAG:通用连接器网络标记
vpc-connector
可用于将规则应用于 VPC 网络中的所有连接器。或者,您可以使用特定于连接器的网络标记。特定的网络标记采用以下格式:vpc-connector-
REGION-
CONNECTOR_NAME,其中 REGION 是连接器的 Google Cloud 区域,CONNECTOR_NAME 是其名称。 - VPC_NETWORK:连接器连接的 VPC 网络的名称。
- PRIORITY:介于 0 到 65535 之间的整数。例如,0 设置最高优先级。
- PROJECT_ID:连接器连接的 VPC 网络所属项目的 ID。
限制连接器虚拟机访问 VPC 网络资源
您可以使用 VPC 防火墙规则或防火墙政策中的规则来限制连接器对其目标 VPC 网络中的资源的访问权限。您可以使用以下策略之一实施这些限制:
- 创建入站流量规则,其目的地表示您要限制连接器虚拟机访问权限的资源,并且其来源表示连接器虚拟机。
- 创建出站流量规则,其目标表示连接器虚拟机,其目的地表示要限制连接器虚拟机访问权限的资源。
以下示例说明了每种策略。
使用入站规则限制访问权限
选择网络标记或 CIDR 范围来控制传入您的 VPC 网络的流量。
网络标记
以下步骤介绍了如何创建入站规则,以根据连接器网络标记限制对 VPC 网络的访问权限。
确保您拥有插入防火墙规则所需的权限。您必须拥有以下 Identity and Access Management (IAM) 角色之一:
- 计算安全管理员角色
- 启用了
compute.firewalls.create
权限的自定义 IAM 角色
拒绝您的 VPC 网络中的连接器流量。
在您的 VPC 网络上创建优先级低于 1000 的入站防火墙规则,以拒绝来自连接器网络标记的入站流量。这会替换无服务器 VPC 访问通道默认情况下在您的 VPC 网络中创建的隐式防火墙规则。
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
替换以下内容:
RULE_NAME:新防火墙规则的名称。例如
deny-vpc-connector
。PROTOCOL:您希望 VPC 连接器允许的一个或多个协议。支持的协议为
tcp
或udp
。例如,tcp:80,udp
允许流经端口 80 的 TCP 流量,以及 UDP 流量。如需了解详情,请参阅allow
标志的文档。出于安全和验证目的,您还可以配置拒绝规则来阻止以下不受支持的协议的流量:
ah
、all
、esp
、icmp
、ipip
和sctp
。VPC_CONNECTOR_NETWORK_TAG:通用连接器网络标记(如果要限制对所有连接器的访问,包括将来创建的任何连接器)或唯一网络标记(如果要限制对特定连接器的访问)。
- 通用网络标记:
vpc-connector
唯一网络标记:
vpc-connector-REGION-CONNECTOR_NAME
您需要进行如下替换:
- REGION:您要限制的连接器所在的区域
- CONNECTOR_NAME:您要限制的连接器的名称
如需详细了解连接器网络标记,请参阅网络标记。
- 通用网络标记:
VPC_NETWORK:您的 VPC 网络的名称
PRIORITY:介于 0 到 65535 之间的整数。例如,0 设置最高优先级。
允许应接收连接器流量的资源接收连接器流量。
使用
allow
和target-tags
标志创建一条入站防火墙规则,用于定位您的 VPC 网络中您希望 VPC 连接器访问的资源。将此规则的优先级设置为低于您在上一步中创建的规则的优先级值。gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
替换以下内容:
RULE_NAME:新防火墙规则的名称。例如
allow-vpc-connector-for-select-resources
。PROTOCOL:您希望 VPC 连接器允许的一个或多个协议。支持的协议为
tcp
或udp
。例如,tcp:80,udp
允许流经端口 80 的 TCP 流量,以及 UDP 流量。如需了解详情,请参阅allow
标志的文档。VPC_CONNECTOR_NETWORK_TAG:通用连接器网络标记(如果要限制对所有连接器的访问,包括将来创建的任何连接器)或唯一网络标记(如果要限制对特定连接器的访问)。必须与您在上一步中指定的网络标记相匹配。
- 通用网络标记:
vpc-connector
唯一网络标记:
vpc-connector-REGION-CONNECTOR_NAME
您需要进行如下替换:
- REGION:您要限制的连接器所在的区域
- CONNECTOR_NAME:您要限制的连接器的名称
如需详细了解连接器网络标记,请参阅网络标记。
- 通用网络标记:
VPC_NETWORK:您的 VPC 网络的名称
RESOURCE_TAG:您希望 VPC 连接器访问的 VPC 资源的网络标记
PRIORITY:小于您在上一步中设置的优先级值的整数。例如,如果您将在上一步中创建的规则的优先级设置为 990,请尝试 980。
如需详细了解用于创建防火墙规则的必需和可选标志,请参阅 gcloud compute firewall-rules create
的文档。
CIDR 范围
以下步骤介绍了如何创建入站规则,以根据连接器的 CIDR 范围限制对 VPC 网络的访问权限。
确保您拥有插入防火墙规则所需的权限。您必须拥有以下 Identity and Access Management (IAM) 角色之一:
- 计算安全管理员角色
- 启用了
compute.firewalls.create
权限的自定义 IAM 角色
拒绝您的 VPC 网络中的连接器流量。
在您的 VPC 网络上创建优先级低于 1000 的入站防火墙规则,以拒绝来自连接器的 CIDR 范围的入站流量。这会替换无服务器 VPC 访问通道默认情况下在您的 VPC 网络中创建的隐式防火墙规则。
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
替换以下内容:
RULE_NAME:新防火墙规则的名称。例如
deny-vpc-connector
。PROTOCOL:您希望 VPC 连接器允许的一个或多个协议。支持的协议为
tcp
或udp
。例如,tcp:80,udp
允许流经端口 80 的 TCP 流量,以及 UDP 流量。如需了解详情,请参阅allow
标志的文档。出于安全和验证目的,您还可以配置拒绝规则来阻止以下不受支持的协议的流量:
ah
、all
、esp
、icmp
、ipip
和sctp
。VPC_CONNECTOR_CIDR_RANGE:您要限制其访问权限的连接器的 CIDR 范围
VPC_NETWORK:您的 VPC 网络的名称
PRIORITY:介于 0 到 65535 之间的整数。例如,0 设置最高优先级。
允许应接收连接器流量的资源接收连接器流量。
使用
allow
和target-tags
标志创建一条入站防火墙规则,用于定位您的 VPC 网络中您希望 VPC 连接器访问的资源。将此规则的优先级设置为低于您在上一步中创建的规则的优先级值。gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
替换以下内容:
RULE_NAME:新防火墙规则的名称。例如
allow-vpc-connector-for-select-resources
。PROTOCOL:您希望 VPC 连接器允许的一个或多个协议。支持的协议为
tcp
或udp
。例如,tcp:80,udp
允许流经端口 80 的 TCP 流量,以及 UDP 流量。如需了解详情,请参阅allow
标志的文档。VPC_CONNECTOR_CIDR_RANGE:您要限制其访问权限的连接器的 CIDR 范围
VPC_NETWORK:您的 VPC 网络的名称
RESOURCE_TAG:您希望 VPC 连接器访问的 VPC 资源的网络标记
PRIORITY:小于您在上一步中设置的优先级值的整数。例如,如果您将在上一步中创建的规则的优先级设置为 990,请尝试 980。
如需详细了解用于创建防火墙规则的必需和可选标志,请参阅 gcloud compute firewall-rules create
的文档。
使用出站规则限制访问权限
以下步骤介绍了如何创建出站规则以限制连接器的访问权限。
确保您拥有插入防火墙规则所需的权限。您必须拥有以下 Identity and Access Management (IAM) 角色之一:
- 计算安全管理员角色
- 启用了
compute.firewalls.create
权限的自定义 IAM 角色
拒绝连接器的出站流量。
在无服务器 VPC 访问通道连接器上创建出站防火墙规则,以防止其将传出流量(已建立的响应除外)发送到任何目的地。
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --direction=EGRESS \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --network=VPC_NETWORK \ --priority=PRIORITY
请替换以下内容:
RULE_NAME:新防火墙规则的名称。例如
deny-vpc-connector
。PROTOCOL:您希望 VPC 连接器允许的一个或多个协议。支持的协议为
tcp
或udp
。例如,tcp:80,udp
允许流经端口 80 的 TCP 流量,以及 UDP 流量。如需了解详情,请参阅allow
标志的文档。出于安全和验证目的,您还可以配置拒绝规则来阻止以下不受支持的协议的流量:
ah
、all
、esp
、icmp
、ipip
和sctp
。VPC_CONNECTOR_NETWORK_TAG:通用 VPC 连接器网络标记 - 如果您希望将此规则应用于所有现有 VPC 连接器和未来的任何 VPC 连接器。或者,如果要控制特定连接器,则是唯一的 VPC 连接器网络标记。
VPC_NETWORK:您的 VPC 网络的名称
PRIORITY:介于 0 到 65535 之间的整数。例如,0 设置最高优先级。
当目的地位于您希望连接器访问的 CIDR 范围内时,允许出站流量。
使用
allow
和destination-ranges
标志可创建一条防火墙规则,以允许来自连接器的出站流量进入特定目的地范围。将目的地范围设置为您的 VPC 网络中您希望连接器访问的资源的 CIDR 范围。将此规则的优先级设置为低于您在上一步中创建的规则的优先级值。gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --destination-ranges=RESOURCE_CIDR_RANGE \ --direction=EGRESS \ --network=VPC_NETWORK \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --priority=PRIORITY
替换以下内容:
RULE_NAME:新防火墙规则的名称。例如
allow-vpc-connector-for-select-resources
。PROTOCOL:您希望 VPC 连接器允许的一个或多个协议。支持的协议为
tcp
或udp
。例如,tcp:80,udp
允许流经端口 80 的 TCP 流量,以及 UDP 流量。如需了解详情,请参阅allow
标志的文档。RESOURCE_CIDR_RANGE:您要限制其访问权限的连接器的 CIDR 范围
VPC_NETWORK:您的 VPC 网络的名称
VPC_CONNECTOR_NETWORK_TAG:通用 VPC 连接器网络标记 - 如果您希望将此规则应用于所有现有 VPC 连接器和未来的任何 VPC 连接器。或者,如果要控制特定连接器,则是唯一的 VPC 连接器网络标记。如果您在上一步中使用了唯一的网络标记,请使用该唯一的网络标记。
PRIORITY:小于您在上一步中设置的优先级值的整数。例如,如果您将在上一步中创建的规则的优先级设置为 990,请尝试 980。
如需详细了解用于创建防火墙规则的必需和可选标志,请参阅 gcloud compute firewall-rules create
的文档。
管理连接器
断开函数与 VPC 网络的连接
您可以使用 Google Cloud 控制台或 Google Cloud CLI 来断开函数与 VPC 网络的连接:
控制台
转到 Google Cloud 控制台中的 Cloud Functions 概览页面:
点击现有函数以转至其详情页面,然后点击修改。
点击运行时、构建...展开高级设置。
在“出站流量”设置下的连接标签页中,在 VPC 连接器字段中输入连接器的名称,或清除该字段以断开函数与 VPC 网络的连接。
gcloud
使用 --clear-vpc-connector
标志断开函数与 VPC 网络的连接:
gcloud functions deploy FUNCTION_NAME \ --clear-vpc-connector \ FLAGS...
其中:
FUNCTION_NAME
是函数的名称。CONNECTOR_NAME
是连接器的名称。FLAGS...
是指在函数部署期间传递的其他标志。
即使没有流量并断开连接,连接器也会继续产生费用。如需了解详情,请参阅价格。如果您不再需要连接器,请务必删除连接器,以避免继续计费。
更新连接器
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 API 更新和监控连接器的以下属性:
- 机器(实例)类型
- 实例数下限和上限
- 最近的吞吐量、实例数和 CPU 利用率
更新机器类型
控制台
转到 Serverless VPC Access 概览页面。
选择要修改的连接器,然后点击修改。
在实例类型列表中,选择所需的机器(实例)类型。如需了解可用的机器类型,请参阅有关吞吐量和扩缩的文档。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如需更新连接器机器类型,请在终端中运行以下命令:
请替换以下内容:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
CONNECTOR_NAME
:连接器的名称REGION
:连接器的区域名称MACHINE_TYPE
:所需的机器类型。如需了解可用的机器类型,请参阅有关吞吐量和扩缩的文档。
减少实例数下限和上限
如需减少实例数下限和上限,您必须执行以下操作:
- 使用所需值创建一个新连接器。
- 更新服务或函数以使用新的连接器。
- 在迁移流量后删除旧连接器。
如需了解详情,请参阅创建无服务器 VPC 访问通道连接器。
增加实例数下限和上限
控制台
转到 Serverless VPC Access 概览页面。
选择要修改的连接器,然后点击修改。
在实例数下限字段中,选择所需的实例数下限。
此字段的最小可能值为当前值。此字段的最大可能值是实例数上限字段中的当前值减去 1。例如,如果实例数上限字段的值为 8,则实例数下限字段的最大可能值为 7。
在实例数上限字段中,选择所需的实例数上限。
此字段的最小可能值为当前值。此字段的最大可能值为 10。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如需增加连接器的实例数下限或上限,请在终端中运行以下命令:
请替换以下内容:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
查找当前特性值
如需查找连接器的当前特性值,请在终端中运行以下命令:
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
CONNECTOR_NAME
:连接器的名称REGION
:连接器的区域名称PROJECT
:您的 Google Cloud 项目的名称
监控连接器使用情况
监控一段时间内的使用情况可帮助您确定何时调整连接器的设置。例如,如果 CPU 利用率出现峰值,您可以尝试增加实例数上限以获得更好的结果。或者,如果您要达到吞吐量上限,则可能需要改用更大的机器类型。
如需使用 Google Cloud 控制台显示连接器的吞吐量、实例数和 CPU 利用率指标随时间变化的图表,请执行以下操作:
打开无服务器 VPC 访问通道概览页面。
点击您要监控的连接器的名称。
选择您要显示的天数(1 到 90 天之间)。
在吞吐量图表中,将鼠标悬停在图表上以查看连接器的近期吞吐量。
在实例数图表中,将鼠标悬停在图表上以查看连接器最近使用的实例数。
在 CPU 利用率图表中,将鼠标悬停在图表上以查看连接器的近期 CPU 使用率。该图表显示了实例中第 50、第 95 和第 99 百分位的 CPU 使用率的分布情况。
删除连接器
在您删除连接器之前,请确保没有服务或作业仍与该连接器连接。
对于在共享 VPC 宿主项目中设置连接器的共享 VPC 用户,您可以使用 gcloud compute networks vpc-access connectors describe
命令列出其中存在使用给定连接器的服务或作业的项目。
如需删除连接器,请使用 Google Cloud 控制台或 Google Cloud CLI:
控制台
转到 Google Cloud 控制台中的无服务器 VPC 访问通道概览页面:
选择要删除的连接器。
点击删除。
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
使用以下
gcloud
命令删除连接器:gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
替换以下内容:
- 将 CONNECTOR_NAME 替换为要删除的连接器的名称
- 将 REGION 替换为连接器所在的区域
问题排查
服务账号权限
为了在 Google Cloud 项目中执行操作,无服务器 VPC 访问通道使用 Serverless VPC Access Service Agent 服务账号。此服务账号的电子邮件地址采用以下格式:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
默认情况下,此服务账号具有 Serverless VPC Access Service Agent 角色 (roles/vpcaccess.serviceAgent
)。如果您更改此账号的权限,则无服务器 VPC 访问通道操作可能会失败。
错误数
“服务账号需要 Service Agent 角色”错误
如果您使用限制资源服务使用组织政策限制条件来阻止 Cloud Deployment Manager (deploymentmanager.googleapis.com
),则您可能会看到以下错误消息:
Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.
设置组织政策,以将 Deployment Manager 从拒绝名单中移除,或将其添加到许可名单中。
连接器创建错误
如果创建连接器发生错误,请尝试以下操作:
- 指定与 VPC 网络中预留的任何现有 IP 地址均不重叠的 RFC 1918 内部 IP 地址范围。
- 向您的项目授予权限,让它能使用 ID 为
serverless-vpc-access-images
的项目中的 Compute Engine 虚拟机映像。如需详细了解如何相应地更新组织政策,请参阅设置映像访问限制条件。
无法访问资源
如果您指定了连接器,但仍无法访问 VPC 网络中的资源,请确保 VPC 网络上没有优先级低于 1000 的防火墙规则会拒绝来自连接器 IP 地址范围的入站流量。
如果您在共享 VPC 服务项目中配置连接器,请确保防火墙规则允许从无服务器基础设施到连接器的入站流量。
连接遭拒错误
如果您收到 connection refused
错误(这会降低网络性能),则连接在无服务器应用调用之间可能会不受限制地增长。如需限制每个实例使用的连接数上限,请使用支持连接池的客户端库。如需查看有关如何使用连接池的详细示例,请参阅管理数据库连接。
“找不到资源”错误
删除 VPC 网络或防火墙规则时,您可能会看到如下所示的消息:The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
如需了解此错误及其解决方案,请参阅 VPC 防火墙规则文档中的“找不到资源”错误。
缺少服务账号的必要权限 vpcaccess.connectors.use…
首先,确保将角色 roles/vpcaccess.user
分配给服务账号。
如果您在使用 VPC 连接器时仍然遇到权限问题,请检查它是否确实是共享 VPC。在这种情况下,需要在宿主项目上进行额外设置。
后续步骤
- 从 Cloud Functions 连接到 Memorystore。
- 为 Cloud Functions 配置网络设置。
- 使用无服务器 VPC 访问通道审核日志记录监控管理员活动。
- 使用 VPC Service Controls 创建服务边界来保护资源和数据。
- 了解与无服务器 VPC 访问通道关联的 Identity and Access Management (IAM) 角色。如需获取与每个角色关联的权限列表,请参阅 IAM 文档中的无服务器 VPC 访问通道角色。