本頁說明如何使用無伺服器虛擬私有雲存取,將 App Engine 標準環境應用程式直接連線至虛擬私有雲網路,以便存取 Compute Engine VM 執行個體、Memorystore 執行個體,以及任何其他具有內部 IP 位址的資源。
事前準備
- 如果專案中沒有虛擬私有雲網路,請建立一個。 
- 如果您使用共用虛擬私有雲,請參閱「連線至共用虛擬私有雲網路」。 
- 在 Google Cloud 控制台中,確認專案已啟用 Serverless VPC Access API。 
建立 Serverless VPC Access 連接器
如要將要求傳送至虛擬私有雲網路,並接收相應的回應,而不使用公開網際網路,可以採用無伺服器虛擬私有雲存取連接器。
如果連接器與虛擬私有雲網路位於同一專案,您可以透過現有子網路建立連接器,也可以建立連接器和新的子網路。
如果連接器位於服務專案中,並使用共用虛擬私有雲網路,則連接器和相關聯的虛擬私有雲網路會位於不同專案。如果連接器和虛擬私有雲網路位於不同專案中,共用虛擬私有雲網路管理員必須先在共用虛擬私有雲網路中建立連接器的子網路,您才能建立連接器,且必須使用現有子網路建立連接器。
如要進一步瞭解子網路需求,請參閱連接器子網路需求。
如要瞭解連接器輸送量 (包括機器類型和資源調度),請參閱「輸送量和資源調度」。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Terraform 建立連接器。
主控台
- 前往「Serverless VPC Access」(無伺服器虛擬私人雲端存取) 總覽頁面。 
- 按一下 [Create connector] (建立連接器)。 
- 在「Name」(名稱) 欄位中,輸入連接器的名稱,並符合 Compute Engine 命名慣例,且名稱長度不得超過 21 個字元,連字號 (-) 算兩個字元。 
- 在「Region」(區域) 欄位中,選取連接器的區域。這必須與無伺服器服務的地區相符。 - 如果服務或工作位於 - us-central或- europe-west區域,請使用- us-central1或- europe-west1。
- 在「Network」(網路) 欄位中,選取要附加連接器的虛擬私人雲端網路。 
- 在「Subnet」(子網路) 欄位中,選取下列其中一個選項: - 使用現有子網路建立連接器:在「子網路」欄位中選取現有子網路。 
- 建立連接器和新的子網路:在「子網路」欄位中選取「自訂 IP 範圍」。然後,在未使用的 - /28CIDR 中輸入第一個位址 (例如- 10.8.0.0/28),做為連接器虛擬私有雲網路中新建立子網路的主要 IPv4 位址範圍。 Google Cloud 請確保 IP 範圍不會與連接器虛擬私有雲網路中的任何現有路徑衝突。新子網路的名稱開頭為「aet-」前置字串。
 
- (選用) 如要設定縮放選項,進一步控管連接器,請按一下「顯示縮放設定」,顯示縮放表單。 - 設定連接器的執行個體數量下限和上限,或使用預設值 (下限為 2,上限為 10)。如果流量用量需要,連接器會擴充至指定上限,但流量減少時,連接器不會縮減。你必須使用介於 2和10之間的值。
- 在「Instance Type」(執行個體類型) 選單中,選擇要用於連接器的機器類型,或使用預設的 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 
- 使用下列任一選項建立連接器: - 如要瞭解詳情和選用引數,請參閱 - gcloud參考資料。- 使用現有子網路建立連接器: - gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET_NAME \ --subnet-project HOST_PROJECT_ID \ --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE - 更改下列內容: - CONNECTOR_NAME:連接器的名稱,須符合 Compute Engine 命名慣例,且長度不得超過 21 個字元,連字號 (-) 算兩個字元。
- REGION:連接器的區域,與無伺服器服務或作業的區域相符。如果您的服務或工作位於- us-central或- europe-west,請使用- us-central1或- europe-west1。
- SUBNET_NAME:現有子網路的名稱。
- HOST_PROJECT_ID:共用虛擬私有雲主專案 ID。如果連接器和現有子網路位於同一個專案,請省略- --subnet-project旗標。
- MIN:連接器使用的執行個體數量下限。請使用介於- 2(預設值) 和- 9之間的整數。
- MAX:連接器可使用的執行個體數量上限。請使用介於- 3至- 10之間的整數 (預設值)。 如果連接器擴充至執行個體數量上限,就不會縮減。
- MACHINE_TYPE:必須是下列其中一項:- f1-micro、- e2-micro或- e2-standard-4。
 
- 建立連接器和新的子網路: - gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --network VPC_NETWORK \ --range IP_RANGE --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE - 更改下列內容: - CONNECTOR_NAME:連接器的名稱,須符合 Compute Engine 命名慣例,且長度不得超過 21 個字元,連字號 (-) 算兩個字元。
- REGION:連接器的區域,與無伺服器服務或作業的區域相符。如果您的服務或工作位於- us-central或- europe-west,請使用- us-central1或- europe-west1。
- VPC_NETWORK:要附加連接器的虛擬私有雲網路名稱。連接器和虛擬私有雲網路必須位於同一專案中。
- IP_RANGE:提供未使用的- /28CIDR (例如- 10.8.0.0/28),做為連接器虛擬私有雲網路中新子網路的主要 IPv4 位址範圍。 Google Cloud 請確保 IP 範圍不會與連接器虛擬私有雲網路中的任何現有路徑衝突。新子網路的名稱開頭為「aet-」前置字串。
- MIN:連接器使用的執行個體數量下限。請使用介於- 2(預設值) 和- 9之間的整數。
- MAX:連接器可使用的執行個體數量上限。請使用介於- 3至- 10之間的整數 (預設值)。 如果連接器擴充至執行個體數量上限,就不會縮減。
- MACHINE_TYPE:必須是下列其中一項:- f1-micro、- e2-micro或- e2-standard-4。
 
 
- 先驗證您的連接器是否處於 - READY狀態,然後再使用:- gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION - 更改下列內容: - CONNECTOR_NAME:連接器名稱,也就是您在上一個步驟中指定的名稱。
- REGION:連接器的區域,也就是您在上一個步驟中指定的區域。
 - 輸出內容應包含 - state: READY這一行。
Terraform
您可以使用 Terraform 資源啟用 vpcaccess.googleapis.com API。
您可以使用 Terraform 模組建立虛擬私有雲網路和子網路,然後建立連接器。
將服務設定為使用連接器
建立 Serverless VPC Access 連接器後,您必須設定 App Engine 應用程式中要連線至虛擬私有雲網路的每個服務。
如要為應用程式中的服務指定連接器:
- 停止使用 App Engine 網址擷取服務 - URLFetchService。
- 將 - <vpc-access-connector>元素新增至服務的- appengine-web.xml檔案:- <vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> </vpc-access-connector> - 其中 - PROJECT_ID是您的專案 ID, Google Cloud 是連接器所在的區域,- REGION則是連接器的名稱。- CONNECTOR_NAME
- 部署服務: - gcloud app deploy WEB-INF/appengine-web.xml
您重新部署服務後,即可傳送要求至內部 IP 位址,以存取虛擬私人雲端網路中的資源。
限制虛擬私有雲資源的存取權
服務專案中連接器所需的防火牆規則
如果您在獨立的虛擬私有雲網路中,或在共用虛擬私有雲網路的主專案中建立連接器, Google Cloud 會為連接器的運作建立所有必要的防火牆規則。詳情請參閱獨立虛擬私有雲網路或共用虛擬私有雲主專案中的連線器防火牆規則。
不過,如果您在服務專案中建立連接器,且連接器以主專案中的共用虛擬私有雲網路為目標,則必須新增防火牆規則,允許連接器從下列範圍運作所需的流量:
- 無伺服器基礎架構 IP 範圍:35.199.224.0/19
- 健康狀態檢查探測 IP 範圍:
35.191.0.0/16、35.191.192.0/18和130.211.0.0/22
這些範圍是由 Cloud Run、Cloud Run 函式和 App Engine 標準環境的基礎 Google 基礎架構使用。來自這些 IP 位址的所有要求都源自 Google 基礎架構,確保每個無伺服器資源只會與所連線的連接器通訊。
您也必須允許從連接器子網路到虛擬私有雲網路中資源的流量。
如要執行這些步驟,您必須擁有主機專案的下列其中一個角色:
- 擁有者角色 (roles/owner)
- Compute 安全性管理員角色 (roles/compute.securityAdmin)
- 啟用compute.firewalls.create權限的自訂 Identity and Access Management (IAM) 角色
如要進行基本設定,請套用規則,允許連線至共用虛擬私有雲網路的任何服務專案中的無伺服器資源,向網路中的任何資源傳送要求。
如要套用這些規則,請在主機專案中執行下列指令:
- 建立防火牆規則,允許來自 Google 無伺服器基礎架構和健康狀態檢查探測器的要求,連線至網路中的所有連接器。在這些指令中,UDP 和 TCP 通訊埠分別用做 Proxy 和 HTTP 健康狀態檢查。請勿變更指定的通訊埠。 - gcloud compute firewall-rules create serverless-to-vpc-connector \ --allow tcp:667,udp:665-666,icmp \ --source-ranges=35.199.224.0/19 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK - gcloud compute firewall-rules create vpc-connector-to-serverless \ --allow tcp:667,udp:665-666,icmp \ --destination-ranges=35.199.224.0/19 \ --direction=EGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK - gcloud compute firewall-rules create vpc-connector-health-checks \ --allow tcp:667 \ --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK - 將 - VPC_NETWORK替換為要附加連接器的虛擬私有雲網路名稱。
- 在虛擬私有雲網路上建立輸入防火牆規則,允許來自以這個網路為目標的連接器要求: - gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK - 這項規則可讓連接器存取網路中的所有資源。如要限制無伺服器環境可透過無伺服器虛擬私有雲存取連線的資源,請參閱「限制連接器 VM 對虛擬私有雲網路資源的存取權」。 
為特定連接器建立防火牆規則
按照「服務專案中連接器的必要防火牆規則」一文中的程序操作,會產生適用於所有連接器的防火牆規則,包括目前的連接器和日後建立的連接器。如果不想這樣做,而是只想為特定連接器建立規則,可以設定規則的適用範圍,讓規則只套用至這些連接器。
如要將規則範圍限制為特定連接器,可以使用下列其中一種機制:
- 網路標記:每個連接器都有兩個網路標記:vpc-connector和vpc-connector-REGION-CONNECTOR_NAME。 使用後者格式,可將防火牆規則的範圍限制為特定連接器。
- IP 範圍:僅適用於輸出規則,不適用於輸入規則。您可以使用連接器子網路的 IP 範圍,將防火牆規則的範圍限制為單一虛擬私有雲連接器。
限制連接器 VM 存取虛擬私有雲網路資源
您可以使用虛擬私有雲防火牆規則或防火牆政策中的規則,限制連接器存取目標虛擬私有雲網路中的資源。您可以使用下列任一策略來達成這些限制:
- 建立輸入規則,目標代表您要限制連線 VM 存取的資源,來源則代表連線 VM。
- 建立輸出規則,目標代表連接器 VM,目的地代表您要限制連接器 VM 存取的資源。
以下範例說明每種策略。
使用輸入規則限制存取權
選擇網路標記或 CIDR 範圍,控管虛擬私有雲網路的傳入流量。
網路標記
下列步驟說明如何建立輸入規則,根據連接器網路標記限制連接器對虛擬私有雲網路的存取權。
- 確認您具備插入防火牆規則的必要權限。 您必須具備下列任一身分與存取權管理 (IAM) 角色: - Compute 安全管理員角色
- 啟用 compute.firewalls.create權限的自訂 IAM 角色
 
- 拒絕虛擬私有雲網路的連接器流量。 - 在虛擬私有雲網路中建立優先順序低於 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:您要允許來自虛擬私有雲連接器的通訊協定。支援的通訊協定為 - tcp或- udp。舉例來說,- tcp:80,udp允許 TCP 流量通過連接埠 80 和 UDP 流量。詳情請參閱- allow旗標的說明文件。- 為確保安全和進行驗證,您也可以設定拒絕規則,封鎖下列不支援的通訊協定流量: - ah、- all、- esp、- icmp、- ipip和- sctp。
- VPC_CONNECTOR_NETWORK_TAG:通用連接器網路代碼,可限制所有連接器 (包括日後建立的連接器) 的存取權;或是專屬網路代碼,可限制特定連接器的存取權。 - 通用網路代碼: vpc-connector
- 專屬網路標記: - vpc-connector-REGION-CONNECTOR_NAME- 取代: - REGION:要限制的連接器區域
- CONNECTOR_NAME:要限制的連接器名稱
 
 - 如要進一步瞭解連接器網路標記,請參閱「網路標記」。 
- 通用網路代碼: 
- VPC_NETWORK:虛擬私有雲網路的名稱 
- PRIORITY:介於 0 到 65535 的整數。例如,0 代表最高優先順序。 
 
- 允許連接器流量傳送至應接收連接器流量的資源。 - 使用 - allow和- target-tags旗標建立輸入防火牆規則,以虛擬私有雲網路中要讓虛擬私有雲連接器存取的資源為目標。將這項規則的優先順序設為低於上一步建立的規則。- 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:您要允許來自虛擬私有雲連接器的通訊協定。支援的通訊協定為 - tcp或- udp。舉例來說,- tcp:80,udp允許 TCP 流量通過連接埠 80 和 UDP 流量。詳情請參閱- allow旗標的說明文件。
- VPC_CONNECTOR_NETWORK_TAG:如果您想限制所有連接器 (包括日後建立的連接器) 的存取權,請使用通用連接器網路代碼;如果您想限制特定連接器的存取權,請使用專屬網路代碼。這必須與您在上一個步驟中指定的網路標記相符。 - 通用網路代碼: vpc-connector
- 專屬網路標記: - vpc-connector-REGION-CONNECTOR_NAME- 取代: - REGION:要限制的連接器區域
- CONNECTOR_NAME:要限制的連接器名稱
 
 - 如要進一步瞭解連接器網路標記,請參閱「網路標記」。 
- 通用網路代碼: 
- VPC_NETWORK:虛擬私有雲網路的名稱 
- RESOURCE_TAG:您希望 VPC 連接器存取的 VPC 資源網路標記 
- PRIORITY:小於您在上一步設定優先順序的整數。舉例來說,如果您將上一個步驟中建立的規則優先順序設為 990,請嘗試設為 980。 
 
如要進一步瞭解建立防火牆規則時的必要和選用旗標,請參閱 gcloud compute firewall-rules create 說明文件。
CIDR 範圍
下列步驟說明如何建立輸入規則,根據連接器的 CIDR 範圍,限制連接器對虛擬私有雲網路的存取權。
- 確認您具備插入防火牆規則的必要權限。 您必須具備下列任一身分與存取權管理 (IAM) 角色: - Compute 安全管理員角色
- 啟用 compute.firewalls.create權限的自訂 IAM 角色
 
- 拒絕虛擬私有雲網路的連接器流量。 - 在虛擬私有雲網路中建立優先順序低於 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:您要允許來自虛擬私有雲連接器的通訊協定。支援的通訊協定為 - tcp或- udp。舉例來說,- tcp:80,udp允許 TCP 流量通過連接埠 80 和 UDP 流量。詳情請參閱- allow旗標的說明文件。- 為確保安全和進行驗證,您也可以設定拒絕規則,封鎖下列不支援的通訊協定流量: - ah、- all、- esp、- icmp、- ipip和- sctp。
- VPC_CONNECTOR_CIDR_RANGE:要限制存取的連接器 CIDR 範圍 
- VPC_NETWORK:虛擬私有雲網路的名稱 
- PRIORITY:介於 0 到 65535 的整數。例如,0 代表最高優先順序。 
 
- 允許連接器流量傳送至應接收連接器流量的資源。 - 使用 - allow和- target-tags旗標建立輸入防火牆規則,以虛擬私有雲網路中要讓虛擬私有雲連接器存取的資源為目標。將這項規則的優先順序設為低於上一步建立的規則。- 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:您要允許來自虛擬私有雲連接器的通訊協定。支援的通訊協定為 - tcp或- udp。舉例來說,- tcp:80,udp允許 TCP 流量通過連接埠 80 和 UDP 流量。詳情請參閱- allow旗標的說明文件。
- VPC_CONNECTOR_CIDR_RANGE:要限制存取權的連接器 CIDR 範圍 
- VPC_NETWORK:虛擬私有雲網路的名稱 
- RESOURCE_TAG:您希望 VPC 連接器存取的 VPC 資源網路標記 
- PRIORITY:小於您在上一步設定優先順序的整數。舉例來說,如果您將上一個步驟中建立的規則優先順序設為 990,請嘗試設為 980。 
 
如要進一步瞭解建立防火牆規則時的必要和選用旗標,請參閱 gcloud compute firewall-rules create 說明文件。
使用輸出規則限制存取權
下列步驟說明如何建立輸出規則,限制連接器存取權。
- 請確認您具備插入防火牆規則的必要權限。您必須具備下列其中一個身分與存取權管理 (IAM) 角色: - Compute 安全管理員角色
- 啟用 compute.firewalls.create權限的自訂 IAM 角色
 
- 拒絕連接器的輸出流量。 - 在 Serverless VPC Access 連接器上建立輸出防火牆規則,防止連接器將輸出流量傳送至任何目的地 (已建立的回應除外)。 - 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:您要允許來自虛擬私有雲連接器的通訊協定。支援的通訊協定為 - tcp或- udp。舉例來說,- tcp:80,udp允許 TCP 流量通過連接埠 80 和 UDP 流量。詳情請參閱- allow旗標的說明文件。- 為確保安全和進行驗證,您也可以設定拒絕規則,封鎖下列不支援的通訊協定流量: - ah、- all、- esp、- icmp、- ipip和- sctp。
- VPC_CONNECTOR_NETWORK_TAG:通用 VPC 連接器網路標記,適用於所有現有 VPC 連接器和日後建立的 VPC 連接器。如要控管特定連接器,請使用專屬的虛擬私有雲連接器網路標記。 
- VPC_NETWORK:虛擬私有雲網路的名稱 
- PRIORITY:介於 0 到 65535 的整數。例如,0 代表最高優先順序。 
 
- 如果目的地位於您希望連接器存取的 CIDR 範圍內,請允許輸出流量。 - 使用 - allow和- destination-ranges旗標建立防火牆規則,允許從連接器傳出流量至特定目的地範圍。將目的地範圍設為虛擬私有雲網路中資源的 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:您要允許來自虛擬私有雲連接器的通訊協定。支援的通訊協定為 - tcp或- udp。舉例來說,- tcp:80,udp允許 TCP 流量通過連接埠 80 和 UDP 流量。詳情請參閱- allow旗標的說明文件。
- RESOURCE_CIDR_RANGE:要限制存取的連接器 CIDR 範圍 
- VPC_NETWORK:虛擬私有雲網路的名稱 
- VPC_CONNECTOR_NETWORK_TAG:通用 VPC 連接器網路標記,適用於所有現有 VPC 連接器和日後建立的 VPC 連接器。或者,如果您想控管特定連接器,請使用專屬的虛擬私有雲連接器網路標記。如果您在上一個步驟中使用專屬的聯播網代碼,請使用專屬的聯播網代碼。 
- PRIORITY:小於您在上一步設定優先順序的整數。舉例來說,如果您將上一個步驟中建立的規則優先順序設為 990,請嘗試設為 980。 
 
如要進一步瞭解建立防火牆規則時的必要和選用標記,請參閱 gcloud compute firewall-rules create 的說明文件。
管理連接器
控管服務的輸出流量
根據預設,只有傳送至內部 IP 位址和內部 DNS 名稱的要求,會透過無伺服器虛擬私有雲存取連接器轉送。您可以在 appengine-web.xml 檔案中指定服務的輸出設定。
輸出設定與網址擷取服務不相容。如果尚未停止使用 URLFetchService,請立即停止。使用 urlfetch 程式庫會忽略輸出設定,且要求不會透過無伺服器虛擬私有雲存取連接器傳送。
如要設定 App Engine 服務的出站流量行為,請按照下列步驟操作:
- 在服務的 - appengine-web.xml檔案中,將- <egress-setting>元素新增至- <vpc-access-connector>元素:- <vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> <egress-setting>EGRESS_SETTING</egress-setting> </vpc-access-connector> - 取代: - 將 PROJECT_ID替換為您的 Google Cloud 專案 ID
- REGION改成連接器所在的地區
- CONNECTOR_NAME改為連接器名稱
- EGRESS_SETTING,並搭配下列其中一個值:
 
- 將 
- 部署服務: - gcloud app deploy WEB-INF/appengine-web.xml
中斷服務與虛擬私有雲網路的連線
如要中斷服務與 VPC 網路的連線,請從 appengine-web.xml 檔案中移除 <vpc-access-connector> 元素,然後重新部署服務。
即使連接器沒有流量且已中斷連線,仍會產生費用。詳情請參閱定價。 如果不再需要連結器,請務必刪除連結器,以免持續產生費用。
更新連接器
您可以使用 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:偏好的機器類型。如要瞭解可用的機器類型,請參閱輸送量和擴縮說明文件。
 
減少執行個體數量下限和上限
如要減少執行個體數量下限和上限,請按照下列步驟操作:
- 使用偏好的值建立新的連接器。
- 更新服務或函式,以使用新的連接器。
- 遷移流量後,請刪除舊的連接器。
提高執行個體數量下限和上限
主控台
- 前往「Serverless VPC Access」(無伺服器虛擬私人雲端存取) 總覽頁面。 
- 選取要編輯的連結器,然後按一下「編輯」。 
- 在「執行個體下限」欄位中,選取偏好的執行個體數量下限。 - 這個欄位的最小值是目前的值。這個欄位的最大可能值是「最多執行個體」欄位中的目前值減 1。舉例來說,如果「執行個體數量上限」欄位的值為 8,則「執行個體數量下限」欄位的值最多為 7。 
- 在「Maximum instances」(執行個體數量上限) 欄位中,選取所需的執行個體數量上限。 - 這個欄位的最小值是目前的值。這個欄位的最大可能值為 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 使用率指標圖表,請按照下列步驟操作:
- 前往「Serverless VPC Access」(無伺服器虛擬私人雲端存取) 總覽頁面。 
- 按一下要監控的連接器名稱。 
- 選取要顯示的天數,範圍介於 1 到 90 天。 
- 在「處理量」圖表中,將指標懸停在圖表上,即可查看連接器近期的處理量。 
- 在「執行個體數量」圖表中,將指標懸停在圖表上,即可查看連接器最近使用的執行個體數量。 
- 在「CPU Utilization」(CPU 使用率) 圖表中,將指標懸停在圖表上,即可查看連接器的近期 CPU 使用率。圖表會顯示第 50、第 95 和第 99 個百分位數的執行個體 CPU 使用率分布情形。 
刪除連接器
刪除連接器之前,請務必先從仍使用該連接器的無伺服器資源中移除連接器。如果先刪除連接器,再從無伺服器資源中移除,之後就無法刪除虛擬私有雲網路。
如果共用 VPC 使用者在共用 VPC 主專案中設定連接器,可以使用 gcloud compute networks vpc-access connectors describe 指令列出含有使用特定連接器的無伺服器資源的專案。
如要刪除連接器,請使用 Google Cloud 控制台或 Google Cloud CLI:
主控台
- 前往Google Cloud 控制台的「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指令刪除連接器:- gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION - 更改下列內容: - CONNECTOR_NAME,其中 CONNECTOR_NAME 是要刪除的連接器名稱
- 將 REGION 替換為連接器所在的地區
 
疑難排解
服務帳戶權限
如要在 Google Cloud 專案中執行作業,無伺服器虛擬私有雲存取會使用無伺服器虛擬私有雲存取服務代理人服務帳戶。這個服務帳戶的電子郵件地址格式如下:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
根據預設,這個服務帳戶具有「無伺服器虛擬私有雲存取服務代理」角色 (roles/vpcaccess.serviceAgent)。如果變更這個帳戶的權限,無伺服器虛擬私有雲存取作業可能會失敗。
網路效能不佳或閒置 CPU 使用率偏高
為數千個執行個體使用單一連接器,可能會導致效能降低,並提高閒置 CPU 使用率。如要修正這個問題,請在多個連接器之間分片服務。
自訂 MTU 相關問題
如果自訂 MTU 發生問題,請確認您使用 Cloud Run 的預設 MTU 設定。
錯誤
服務帳戶需要服務代理人角色錯誤
如果您使用「限制資源服務用量」機構政策限制封鎖 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,或將其新增至允許清單。
建立連接器時發生錯誤
如果您在建立連接器時發生錯誤,請嘗試下列方式:
- 指定 RFC 1918 內部 IP 範圍時,請確保該範圍並未與虛擬私人雲端網路中已保留的 IP 位址重疊。
- 授予專案權限,以從 ID 為 serverless-vpc-access-images的專案中使用 Compute Engine VM 映像檔。如要進一步瞭解如何據此更新組織政策,請參閱「設定映像檔存取限制」一文。
無法存取資源
如果您已指定連接器,但仍無法存取虛擬私有雲網路中的資源,請確認虛擬私有雲網路中沒有優先順序低於 1000 的防火牆規則,會拒絕來自連接器 IP 位址範圍的輸入流量。
如果您在共用虛擬私有雲服務專案中設定連接器,請確保防火牆規則允許從無伺服器基礎架構連入連接器。
連線遭拒錯誤
如果收到 connection refused 或 connection timeout 錯誤,導致網路效能降低,可能是因為無伺服器應用程式的呼叫次數不受限制,連線數也隨之增加。如要限制每個執行個體使用的連線數上限,請使用支援連線集區的用戶端程式庫。如需如何使用連線集區的詳細範例,請參閱「管理資料庫連線」。
找不到資源錯誤
刪除虛擬私有雲網路或防火牆規則時,您可能會看到類似下列訊息:The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
如要瞭解這項錯誤和解決方法,請參閱虛擬私有雲防火牆規則說明文件中的「找不到資源錯誤」。
後續步驟
- 使用無伺服器虛擬私有雲存取稽核記錄監控管理員活動。
- 使用 VPC Service Controls 建立服務範圍,保護資源和資料。
- 瞭解與無伺服器虛擬私有雲存取相關聯的 Identity and Access Management (IAM) 角色。如要查看與各角色相關聯的權限清單,請參閱 IAM 說明文件中的「無伺服器虛擬私有雲存取角色」。
- 瞭解如何從 App Engine 標準環境連線至 Memorystore。