輸入設定

區域 ID

REGION_ID 是 Google 根據您在建立應用程式時選取的地區所指派的縮寫代碼。即使部分區域 ID 看似常用的國家/地區和省份代碼,但該代碼並不對應至國家/地區或省份。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是這段時間前建立的現有應用程式,網址可選擇是否包含區域 ID。

進一步瞭解區域 ID

本節說明如何使用 Ingress 設定,限制對 App Engine 應用程式的網路存取權。在網路層級,根據預設,網際網路上的任何資源都能透過 appspot 網址或在 App Engine 中設定的自訂網域存取 App Engine 應用程式。舉例來說,appspot.com 網址可採用下列格式:SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com

如要變更這項預設設定,請為 Ingress 指定其他設定。所有連入路徑 (包括預設 appspot.com 網址) 都會受到連入設定的限制。Ingress 是在服務層級設定。

可用的輸入設定

可用的設定如下:

設定 說明
內部 最嚴格的限制。允許來自專案虛擬私有雲網路所連資源的要求,例如:
即使這些來源透過 appspot.com URL 存取您的服務,要求仍會留在 Google 網路內。 來自其他來源 (包括網際網路) 的要求,無法透過 appspot.com URL 或自訂網域連線至您的服務。系統不支援多重租戶,也就是同一專案內有多個信任網域。
內部和 Cloud Load Balancing 允許來自下列資源的要求:
  • 限制較嚴格的內部設定允許的資源
  • 外部應用程式負載平衡器
使用「內部和 Cloud Load Balancing」設定,接受來自外部應用程式負載平衡器的要求,但不能直接接受來自網際網路的要求。對 appspot.com 網址的要求會略過外部應用程式負載平衡器,因此這項設定可防止外部要求連上 appspot.com 網址。
全部 最寬鬆的設定。允許所有要求,包括直接從網際網路傳送至 appspot.com 網址的要求。

存取內部服務

請注意下列事項:

  • 如果是來自 Shared VPC 的要求,只有在 App Engine 應用程式部署在 Shared VPC 主專案中時,流量才會視為內部流量。如果 App Engine 應用程式部署在 Shared VPC 服務專案中,只有來自應用程式所屬專案的網路流量屬於內部流量。所有其他流量 (包括來自其他 Shared VPC 的流量) 都是外部流量。

  • 存取內部服務時,請使用服務的公開網址 (預設 appspot.com 網址或在 App Engine 中設定的自訂網域),照常呼叫服務。

  • 如果要求來自 Compute Engine VM 執行個體,或在相同專案的虛擬私有雲網路中執行的其他資源,則無須進一步設定。

  • 即使資源具有公開 IP 位址,來自相同專案中虛擬私有雲網路內資源的要求,仍會歸類為內部要求。

  • 透過 Cloud VPN 連線至虛擬私有雲網路的地端部署資源發出的要求,會視為 internal

  • 如要處理來自其他 App Engine 服務,或來自相同專案中 Cloud Run 或 Cloud Run 函式的要求,請將服務或函式連線至虛擬私有雲網路,並透過連接器轉送所有輸出流量,詳情請參閱「連線至 Shared VPC 網路」。

查看輸入設定

控制台

  1. 前往「App Engine Services」(App Engine 服務) 頁面。

    前往「Services」(服務) 頁面

  2. 找出「Ingress」欄。針對每項服務,這個資料欄中的值會顯示 Ingress 設定,包括「全部」 (預設)、「內部 + 負載平衡」或「內部」

gcloud

如要使用 gcloud CLI 查看服務的輸入設定,請執行下列指令:

gcloud app services describe SERVICE

SERVICE 改為您的服務名稱。

舉例來說,如要查看預設服務執行的輸入設定和其他資訊,請執行下列操作:

gcloud app services describe default

編輯輸入設定

控制台

  1. 前往「App Engine Services」(App Engine 服務) 頁面。

    前往「Services」(服務) 頁面

  2. 選取要編輯的服務。

  3. 按一下「編輯 Ingress 設定」

  4. 從選單中選取所需的 Ingress 設定,然後按一下「儲存」

gcloud

如要使用 gcloud CLI 更新服務的輸入設定,請按照下列步驟操作:

gcloud app services update SERVICE --ingress=INGRESS

更改項目:

  • SERVICE:服務名稱。
  • INGRESS:要套用的輸入控管。可能的值為 allinternal-onlyinternal-and-cloud-load-balancing

例如:

  • 如要更新 App Engine 應用程式的預設服務,只接受來自 Cloud Load Balancing 和相同專案中 VPC 網路的流量,請按照下列步驟操作:

    gcloud app services update default --ingress=internal-and-cloud-load-balancing
  • 如要更新名為「internal-requests」的服務,只接受來自相同專案中虛擬私有雲網路的流量,請執行下列步驟:

    gcloud app services update internal-requests --ingress=internal-only

輸出設定

如果您使用無伺服器 VPC 存取,可以為 App Engine 服務指定輸出設定。

根據預設,只有傳送至內部 IP 位址和內部 DNS 名稱的要求,會透過無伺服器 VPC 存取連接器轉送。您可以在 app.yaml 檔案中指定服務的輸出設定。

輸出設定與網址擷取服務不相容。 使用 urlfetch 程式庫會忽略輸出設定,要求不會透過無伺服器 VPC 存取連接器路由傳送。

如要設定 App Engine 服務的出站流量行為,請按照下列步驟操作:

  1. 在服務的 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,並符合下列其中一項條件:
      • private-ranges-only預設值。只有對 RFC 1918RFC 6598 IP 位址範圍或內部 DNS 名稱的要求,才會轉送至您的 VPC 網路。所有其他要求都會直接轉送至網際網路。
      • all-traffic 服務的所有輸出要求都會轉送至虛擬私有雲網路。要求隨後會受到虛擬私有雲網路的防火牆、DNS 和路由規則限制。請注意,將所有輸出要求路由至您的虛擬私有雲網路,會增加無伺服器 VPC 存取連接器處理的輸出量,並可能產生費用
  2. 部署服務:

    gcloud app deploy