本頁說明如何使用無伺服器虛擬私有雲存取,將 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 範圍」。然後,在未使用的
/28
CIDR 中輸入第一個位址 (例如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
:提供未使用的/28
CIDR (例如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 網址擷取服務。無伺服器虛擬私有雲存取不支援 URL 擷取,且使用 URL 擷取發出的要求會忽略無伺服器虛擬私有雲存取設定。請改用通訊端建立輸出連線。
在服務的
app.yaml
檔案中新增vpc_access_connector
欄位:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
其中
PROJECT_ID
是您的專案 ID, Google Cloud 是連接器所在的區域,REGION
則是連接器的名稱。CONNECTOR_NAME
部署服務:
gcloud app deploy
您重新部署服務後,即可傳送要求至內部 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 名稱的要求,會透過無伺服器虛擬私有雲存取連接器轉送。您可以在 app.yaml
檔案中指定服務的輸出設定。
輸出設定與網址擷取服務不相容。如果您尚未停用 URL Fetch 預設值,請停用,並停止明確使用 urlfetch
程式庫。使用 urlfetch
程式庫會忽略輸出設定,且要求不會透過無伺服器虛擬私有雲存取連接器傳送。
如要設定 App Engine 服務的出站流量行為,請按照下列步驟操作:
在服務的
app.yaml
檔案中,將egress_setting
屬性新增至vpc_access_connector
欄位:vpc_access_connector: name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME egress_setting: EGRESS_SETTING
取代:
- 將
PROJECT_ID
替換為您的 Google Cloud 專案 ID REGION
改成連接器所在的地區CONNECTOR_NAME
改為連接器名稱EGRESS_SETTING
,並搭配下列其中一個值:
- 將
部署服務:
gcloud app deploy
中斷服務與虛擬私有雲網路的連線
如要中斷服務與 VPC 網路的連線,請從 app.yaml
檔案中移除 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。