如果您的组织使用共享 VPC,则您可以在服务项目或宿主项目中设置无服务器 VPC 访问通道连接器。本指南介绍了如何在宿主项目中设置连接器。
如果您需要在服务项目中设置连接器,请参阅在服务项目中配置连接器。如需了解每种方法的优点,请参阅连接到共享 VPC 网络。
准备工作
- 检查您当前使用的账号的 Identity and Access Management (IAM) 角色。活跃账号必须在宿主项目上具有以下角色: 
- 选择您的首选环境中的宿主项目。 
控制台
- 前往 Google Cloud 控制台信息中心。 
- 在信息中心顶部的菜单栏中,点击项目下拉菜单,然后选择宿主项目。 
gcloud
通过在终端中运行以下命令,将 gcloud CLI 中的默认项目设置为宿主项目:
gcloud config set project HOST_PROJECT_ID
替换以下内容:
- HOST_PROJECT_ID:共享 VPC 宿主项目的 ID
创建 Serverless VPC Access 连接器
如需向您的 VPC 网络发送请求并接收相应的响应,您必须创建无服务器 VPC 访问通道连接器。您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 创建连接器:
控制台
- 为您的项目启用 Serverless VPC Access API。 
- 打开无服务器 VPC 访问通道概览页面。 
- 点击创建连接器。 
- 在名称字段中,为连接器输入名称。该名称必须遵循 Compute Engine 命名惯例,并且少于 21 个字符。连字符 ( - -) 计为两个字符。
- 在区域字段中,选择连接器的区域。此区域必须与您的无服务器服务的区域相匹配。 - 如果您的服务位于 - us-central或- europe-west区域,请使用- us-central1或- europe-west1。
- 在网络字段中,选择要将连接器连接到的 VPC 网络。 
- 点击子网下拉菜单: - 选择未使用的 - /28子网。- 子网必须专供连接器使用。其他资源(例如虚拟机、Private Service Connect 或负载均衡器)不能使用这些子网。
- 如需确认您的子网未用于 Private Service Connect 或 Cloud Load Balancing,请通过在 gcloud CLI 中运行以下命令来检查子网 purpose是否为PRIVATE:gcloud compute networks subnets describe SUBNET_NAME SUBNET_NAME替换为您的子网名称。
 
- (可选)如需设置扩缩选项以更好地控制连接器,请点击显示扩缩设置以显示扩缩表单。 - 设置连接器的实例数下限和上限,或使用默认值 2(下限)和 10(上限)。连接器会随着流量的增加而扩容到指定的最大值,但在流量减少时连接器不会缩容。必须使用介于 2到10之间的值,并且MIN值必须小于MAX值。
- 在“实例类型”下拉菜单中,选择要用于连接器的机器类型,或者使用默认的 e2-micro。当您选择实例类型时,请注意右侧的费用边栏,其中显示带宽和费用估算值:
 
- 设置连接器的实例数下限和上限,或使用默认值 2(下限)和 10(上限)。连接器会随着流量的增加而扩容到指定的最大值,但在流量减少时连接器不会缩容。必须使用介于 
- 点击创建。 
- 准备就绪后,连接器名称旁边会出现绿色的对勾标记。 
gcloud
- 将 - 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 \ --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 个字符。连字符 (- -) 计为两个字符。
- REGION:连接器的区域;此区域必须与无服务器服务的区域相匹配。如果您的服务位于- us-central或- europe-west区域,请使用- us-central1或- europe-west1。
- SUBNET:未使用的- /28子网的名称。- 子网必须专供连接器使用。其他资源(例如虚拟机、Private Service Connect 或负载均衡器)不能使用这些子网。
- 如需确认您的子网未用于 Private Service Connect 或 Cloud Load Balancing,请通过在 gcloud CLI 中运行以下命令来检查子网 purpose是否为PRIVATE:gcloud compute networks subnets describe SUBNET_NAME - SUBNET_NAME:您的子网的名称
 
 
- HOST_PROJECT_ID:宿主项目的 ID
- MIN:用于连接器的实例数下限。请使用介于- 2到- 9之间的整数。默认值为- 2。 如需了解连接器扩缩,请参阅吞吐量和扩缩。
- MAX:用于连接器的实例数上限。请使用介于- 3到- 10之间的整数。默认值为- 10。 如果流量需要,连接器会扩容到- [MAX]实例,但不会缩减。 如需了解连接器扩缩,请参阅吞吐量和扩缩。
- MACHINE_TYPE:- f1-micro、- e2-micro或- e2-standard-4。如需了解连接器吞吐量,包括机器类型和扩缩,请参阅吞吐量和扩缩。
 - 如需了解详情和可选的参数,请参阅 - 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 网络和子网,然后创建连接器。
提供对连接器的访问权限
通过将宿主项目上的 Serverless VPC Access User IAM 角色授予部署 App Engine 服务的主账号,提供对连接器的访问权限。
控制台
- 打开 IAM 页面。 
- 点击项目下拉菜单,然后选择宿主项目。 
- 点击添加。 
- 在新的主账号字段中,添加用于部署 App Engine 服务的主账号。 
- 在角色字段中,选择 。 
- 点击保存。 
gcloud
在终端中运行以下命令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.user
替换以下内容:
- HOST_PROJECT_ID:共享 VPC 宿主项目的 ID
- PRINCIPAL:用于部署您的 App Engine 服务的主账号详细了解- --member标志。
将连接器设置为可被发现
如需查看连接器,主账号需要同时具有宿主项目和服务项目的特定查看角色。当主账号在 Google Cloud 控制台或其终端中查看可用连接器时,如需显示您的连接器,请为部署 App Engine 服务的主账号添加 IAM 角色。
在宿主项目上授予 IAM 角色
在宿主项目上,向部署 App Engine 服务的主账号授予 Serverless VPC Access Viewer (vpcaccess.viewer) 角色。
控制台
- 打开 IAM 页面。 
- 点击项目下拉菜单,然后选择宿主项目。 
- 点击添加。 
- 在新的主账号字段中,输入应该能够从服务项目中查看连接器的主账号的电子邮件地址。您可以在此字段中输入多个电子邮件地址。 
- 在角色字段中,选择 Serverless VPC Access Viewer。 
- 点击保存。 
gcloud
在终端中运行以下命令:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/vpcaccess.viewer
替换以下内容:
- HOST_PROJECT_ID:共享 VPC 宿主项目的 ID
- PRINCIPAL:部署 App Engine 服务的主账号。详细了解- --member标志。
在服务项目上授予 IAM 角色
在服务项目上,向部署 App Engine 服务的主账号授予 Compute Network Viewer (compute.networkViewer) 角色。
控制台
- 打开 IAM 页面。 
- 点击项目下拉菜单,然后选择服务项目。 
- 点击添加。 
- 在新的主账号字段中,输入应该能够从服务项目中查看连接器的主账号的电子邮件地址。您可以在此字段中输入多个电子邮件地址。 
- 在角色字段中,选择 Compute Network Viewer。 
- 点击保存。 
gcloud
在终端中运行以下命令:
gcloud projects add-iam-policy-binding SERVICE_PROJECT_ID \ --member=PRINCIPAL \ --role=roles/compute.networkViewer
替换以下内容:
- SERVICE_PROJECT_ID:服务项目的 ID
- PRINCIPAL:部署 App Engine 服务的主账号。详细了解- --member标志。
配置服务以使用连接器
对于需要访问共享 VPC 的每个 App Engine 服务,您必须为该服务指定连接器。以下步骤显示了如何配置您的服务以使用连接器。
- 将 - vpc_access_connector添加到服务的- app.yaml文件中:- vpc_access_connector: name: projects/HOST_PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME - 替换以下内容: - HOST_PROJECT_ID:共享 VPC 宿主项目的 ID
- REGION:连接器的区域
- CONNECTOR_NAME:连接器的名称
 
- 部署该服务: - gcloud app deploy 
部署后,您的服务能够向共享 VPC 网络发送请求并接收相应的响应。
后续步骤
- 使用无服务器 VPC 访问通道审核日志记录监控管理员活动。
- 使用 VPC Service Controls 创建服务边界来保护资源和数据。
- 了解与无服务器 VPC 访问通道关联的 Identity and Access Management (IAM) 角色。如需获取与每个角色关联的权限列表,请参阅 IAM 文档中的无服务器 VPC 访问通道角色。
- 了解如何从 App Engine 标准环境连接到 Memorystore。