連線至虛擬私人雲端網路中的內部資源

無伺服器虛擬私人雲端存取可讓您從 Cloud 函式直接連線至 Compute Engine VM 執行個體、Cloud Memorystore 執行個體、Cloud SQL 執行個體,以及任何其他具有內部 IP 位址的資源。這對以下情況相當實用:

  • 您在 Compute Engine 的代管執行個體群組中執行後端服務,且需要讓函式在不暴露至公開網際網路的情況下,與此項服務通訊。
  • 您的函式使用在 Compute Engine VM 執行的第三方軟體。
  • 您使用 Cloud Memorystore 儲存 Cloud 函式資料。
  • 您的函式需要透過 Cloud VPN 存取內部部署資料庫中的資料。

使用無伺服器虛擬私人雲端存取時,從函式傳送至內部 IP 位址的要求 (如 RFC 1918 所定義) 會透過無伺服器虛擬私人雲端存取連接器轉送到您的資源虛擬私人雲端網路,傳送至公開 IP 位址的要求則會透過網際網路轉送。內部 IP 位址只能透過 Google Cloud Platform 服務存取,因此使用內部 IP 位址可避免讓內部資源暴露至公開網際網路,同時縮短服務之間的通訊延遲。

如果您使用無伺服器虛擬私人雲端存取,即可與透過 Cloud VPN虛擬私人雲端網路對等互連連線的虛擬私人雲端網路通訊。不過,無伺服器虛擬私人雲端存取不支援舊版網路共用虛擬私人雲端網路。無伺服器虛擬私人雲端存取連接器採月費制,詳情請參閱無伺服器虛擬私人雲端存取定價一節。

連線至您的虛擬私人雲端網路

將 Cloud Functions 連線至虛擬私人雲端網路的流程包含三個步驟:

  1. 建立無伺服器虛擬私人雲端存取連接器
  2. 向 Cloud Functions 服務帳戶授予適當權限
  3. 設定函式以使用連接器

無伺服器虛擬私人雲端存取連接器所在的專案及地區,必須與使用該連接器的函式相同,但連接器可將流量傳送至位於不同地區的資源。多個函式可使用相同連接器。如要進一步瞭解連接器,請參閱虛擬私人雲端說明文件的設定無伺服器虛擬私人雲端存取一文。

建立連接器

您可以使用 GCP 主控台或 gcloud 指令列工具建立連接器。

主控台

  1. 前往「Serverless VPC Access」(無伺服器虛擬私人雲端存取) 總覽頁面:

    前往「Serverless VPC Access」(無伺服器虛擬私人雲端存取) 頁面

  2. 按一下 [Create connector] (建立連接器)

  3. 在「Name」(名稱) 欄位中,輸入連接器的名稱。

  4. 在「Region」(地區) 欄位中,選取函式所在的地區。

  5. 在「Network」(網路) 欄位中,選取要連線的虛擬私人雲端網路。

  6. 在「IP range」(IP 範圍) 欄位中,輸入未使用的 CIDR /28 IP 範圍。這個範圍中的位址會用來當做透過連接器傳送的流量來源位址。這個 IP 範圍不得與虛擬私人雲端網路中任何目前受到保留的 IP 位址重疊。

  7. (選用) 您可在「Minimum throughput」(最小總處理量) 與「Maximum throughput」(總輸出量上限) 欄位設定值,控制連接器的總處理量。

  8. 按一下 [Create] (建立)。

若連接器可供使用,其名稱旁邊會顯示一個綠色勾號。

gcloud

  1. 使用下列指令,為專案啟用 Serverless VPC Access API:

    gcloud services enable vpcaccess.googleapis.com
    
  2. 建立連接器:

    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 位址重疊。
  3. 使用連接器前,先確認其是否處於 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 映像檔。如要瞭解如何據此更新組織政策,請參閱設定映像檔存取限制一文。

設定權限

專案的 Cloud Functions 服務帳戶需要適當權限,才能讓函式使用無伺服器虛擬私人雲端存取連接器。您只需要對每個專案授予一次權限即可。如何設定權限:

主控台

  1. 前往 Google Cloud Platform 主控台的「IAM」(身分與存取權管理) 頁面:

    前往「IAM」(身分與存取權管理) 頁面

  2. 尋找「Cloud Functions Service Agent」(Cloud Functions 服務代理程式) 項目。

  3. 按一下鉛筆圖示編輯權限。

  4. 按一下 [Add another role] (新增其他角色)

  5. 依序選取 [Project] (專案) > [Viewer] (檢視者)。

  6. 按一下 [Add another role] (新增其他角色)

  7. 依序選取 [Compute Engine] > [Compute Network User] (Compute 網路使用者)。

  8. 按一下 [Save] (儲存)

gcloud

  1. 執行以下指令尋找您的專案編號,其中 PROJECT_ID 要改成您的 GCP 專案 ID:

    gcloud projects describe PROJECT_ID --format="value(projectNumber)"
    
  2. 為 Cloud Functions 服務代理程式 (service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com) 授予 viewer 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/viewer
    

    其中 PROJECT_NUM 是在步驟 1 中取得的專案編號。

  3. 為 Cloud Functions 服務代理程式授予 compute.networkUser 角色:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUM@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/compute.networkUser
    

設定函式以使用連接器

建立無伺服器虛擬私人雲端存取連接器,並設定適當權限後,您就可以設定函式以使用連接器。多個函式可使用同一連接器連線至相同的虛擬私人雲端網路,前提是這些函式要位於相同地區。

如要將函式連線至連接器,請在部署函式時指定連接器名稱:

主控台

  1. 前往 GCP 主控台的 Cloud Functions 總覽頁面:

    前往 Cloud Functions 頁面

  2. 按一下 [Create function] (建立函式)

  3. 為函式填寫必填欄位。

  4. 按一下 [More] (更多) 展開進階設定。

  5. 在「VPC connector」(虛擬私人雲端連接器) 欄位中,按以下格式輸入連接器的完整名稱:

    projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    其中:

    • PROJECT_ID 是您的 GCP 專案 ID。
    • REGION 是您為連接器選擇的地區。請注意,連接器與函式必須位於相同地區。
    • CONNECTOR_NAME 是連接器名稱。
  6. 按一下 [Create] (建立)。

gcloud

使用 gcloud beta functions deploy 指令部署函式,並指定 --vpc-connector 標記:

gcloud beta functions deploy FUNCTION_NAME \
--vpc-connector projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME \
FLAGS...

其中:

  • FUNCTION_NAME 是函式名稱。
  • PROJECT_ID 是您的 GCP 專案 ID。
  • REGION 是您為連接器選擇的地區。請注意,連接器與函式必須位於相同地區。
  • CONNECTOR_NAME 是連接器名稱。
  • FLAGS... 是您在函式部署期間傳送的其他標記。

函式經部署後,就可以傳送要求至內部 IP 位址,以存取虛擬私人雲端網路中的資源。

中斷函式與連接器的連線

如果函式不再需要連線至虛擬私人雲端網路,您可以中斷與無伺服器虛擬私人雲端存取連接器的連線。

如要中斷函式與連接器的連線,請從函式的設定中移除連接器:

主控台

  1. 前往 GCP 主控台的 Cloud Functions 總覽頁面:

    前往 Cloud Functions 頁面

  2. 按一下現有函式的名稱,前往其詳細資料頁面。

  3. 按一下 [Edit] (編輯)

  4. 按一下 [More] (更多) 展開進階設定。

  5. 清除「VPC connector」(虛擬私人雲端連接器) 欄位。

  6. 按一下 [Deploy] (部署)

gcloud

使用 gcloud beta functions deploy 指令更新函式,並指定 --clear-vpc-connector 標記:

gcloud beta functions deploy FUNCTION_NAME --clear-vpc-connector

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Functions Documentation