無伺服器虛擬私人雲端存取可讓您從 App Engine 應用程式直接連線至 Compute Engine VM 執行個體、Cloud Memorystore 執行個體、Cloud SQL 執行個體,以及任何其他具有內部 IP 位址的資源。 這對以下情況相當實用:
- 您在 Compute Engine 中的代管執行個體群組執行後端服務,且需要在不暴露至公共網際網路的情況下,讓應用程式與此項服務通訊。
- 您的應用程式使用在 Compute Engine VM 執行的第三方軟體。
- 您使用 Cloud Memorystore 儲存 App Engine 應用程式資料。
- 您的應用程式需要透過 Cloud VPN 從內部部署資料庫存取資料。
使用無伺服器虛擬私人雲端存取時,從應用程式傳送至內部 IP 位址的要求 (如 RFC 1918 所定義) 會透過無伺服器虛擬私人雲端存取連接器,轉送至虛擬私人雲端網路,而傳送至公開 IP 位址的要求則會透過網際網路來轉送。內部 IP 位址僅能由 Google Cloud Platform 服務存取,因此使用內部 IP 位址可避免讓內部資源暴露至公共網際網路,此外也能縮短服務之間的通訊延遲。
無伺服器虛擬私人雲端存取可支援透過 Cloud VPN 和虛擬私人雲端網路對等互連連線的虛擬私人雲端網路通訊。無伺服器虛擬私人雲端存取不支援舊版網路或共用虛擬私人雲端網路。無伺服器虛擬私人雲端存取連接器採用按月付費的計費方式。詳情請參閱無伺服器虛擬私人雲端存取定價。
連線至您的虛擬私人雲端網路
將 App Engine 應用程式連線至虛擬私人雲端網路包含兩個步驟:
無伺服器虛擬私人雲端存取連接器所在的專案及地區,必須與使用該連接器的應用程式相同,但連接器可將流量傳送至位於不同地區的資源。多個 App Engine 服務可使用相同連接器。如要進一步瞭解連接器,請參閱設定無伺服器虛擬私人雲端存取。
建立連接器
您可利用 GCP 主控台或 gcloud
指令列工具建立連接器。
主控台
前往「Serverless VPC Access」(無伺服器虛擬私人雲端存取) 總覽頁面。
按一下 [Create connector] (建立連接器)。
在「Name」(名稱) 欄位中,輸入連接器的名稱。
在「Region」(地區) 欄位中,選取應用程式所在的地區。
在「Network」(網路) 欄位中,選取要連線的虛擬私人雲端網路。
在「IP range」(IP 範圍) 欄位中,輸入未使用的 CIDR
/28
IP 範圍。這個範圍中的位址會用來當做透過連接器傳送的流量來源位址。這個 IP 範圍不得與虛擬私人雲端網路中的任何現有 IP 位址保留項目重疊。(選用) 您可在「Minimum throughput」(最小總處理量) 與「Maximum throughput」(總輸出量上限) 欄位設定值,以控制連接器的總處理量。
按一下 [Create] (建立)。
若連接器準備好可供使用,其名稱旁邊會顯示一個綠色勾號。
gcloud
使用下列指令為專案啟用無伺服器虛擬私人雲端存取 API:
gcloud services enable vpcaccess.googleapis.com
建立連接器:
gcloud beta compute networks vpc-access connectors create CONNECTOR_NAME \ --network VPC_NETWORK \ --region REGION \ --range IP_RANGE
其中:
CONNECTOR_NAME
為連接器名稱。VPC_NETWORK
為要連線的虛擬私人雲端網路。REGION
為應用程式的所在地區。IP_RANGE
為未使用的 CIDR/28
IP 範圍。這個範圍中的位址會用來當做透過連接器傳送的流量來源位址。這個 IP 範圍不得與虛擬私人雲端網路中的任何現有 IP 位址保留項目重疊。
先驗證您的連接器是否處於
READY
狀態,然後再使用:gcloud beta compute networks vpc-access connectors describe CONNECTOR_NAME --region REGION
輸出應包含
state: READY
指令列。
如果您在建立連接器時發生錯誤,請嘗試下列方式,然後重新建立連接器:
- 指定 IP 範圍時,確保該範圍未與虛擬私人雲端網路中任何目前受到保留的 IP 位址重疊。
- 授予專案權限,以便從 ID 為
serverless-vpc-access-images
的專案中使用 Compute Engine VM 映像檔。如要瞭解如何據此更新組織政策,請參閱設定映像檔存取限制一文。
將應用程式設定為使用連接器
建立無伺服器虛擬私人雲端存取連接器後,您就可以設定 App Engine 應用程式中的服務使用連接器。多個服務可使用相同連接器。
如要將連接器連線至應用程式中的服務:
將
<vpc-access-connector>
元素新增至服務的appengine-web.xml
檔案:<vpc-access-connector> <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name> </vpc-access-connector>
其中
PROJECT_ID
是 GCP 專案的 ID,而REGION
和CONNECTOR_NAME
是您建立連接器時選擇的地區和名稱。請注意,連接器與應用程式必須位於相同地區。部署服務:
gcloud beta app deploy WEB-INF/appengine-web.xml
您重新部署服務後,即可傳送要求至內部 IP 位址,以存取虛擬私人雲端網路中的資源。
中斷應用程式與連接器的連線
如果應用程式不再需要連線虛擬私人雲端網路,您就可以中斷與無伺服器虛擬私人雲端存取連接器的連線。
如要中斷服務與連接器的連線:
從服務的
appengine-web.xml
檔案移除<vpc-access-connector>
元素。重新部署服務:
gcloud app deploy WEB-INF/appengine-web.xml