輸入設定

區域 ID

REGION_ID 是 Google 根據您在建立應用程式時選取的地區所指派的簡寫代碼。雖然某些區域 ID 可能看起來與常用的國家/地區代碼相似,但此代碼並非對應國家/地區或省份。如果是 2020 年 2 月後建立的應用程式,App Engine 網址會包含 REGION_ID.r。如果是在此日期之前建立的現有應用程式,網址中則可選擇加入地區 ID。

進一步瞭解區域 ID

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

您可以指定不同的入口設定來變更這項預設設定。所有入口路徑 (包括預設 appspot.com 網址) 都會受到入口設定的影響。Ingress 是在服務層級設定。

可用的輸入設定

可用的設定如下:

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

存取內部服務

請考量下列因素:

  • 對於共用虛擬私有雲的請求,只有在共用虛擬私有雲主機專案中部署 App Engine 應用程式時,流量才會視為內部流量。如果 App Engine 應用程式是部署在共用虛擬私有雲服務專案中,則只有應用程式專案擁有的網路流量才會歸類為內部流量。所有其他流量 (包括其他共用虛擬私有雲的流量) 都屬於外部流量。

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

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

  • 同一個專案中虛擬私人雲端網路中的資源發出的請求,即使來源資源有公開 IP 位址,也會歸類為內部。

  • 透過 Cloud VPN 連線至 VPC 網路的內部部署資源所提出的要求,會視為 internal

  • 如果是來自其他 App Engine 服務或同一專案中 Cloud Run 或 Cloud Run 函式的要求,請將服務或函式連線至虛擬私有雲網路,並透過連接器轉送所有傳出流量,如「連線至共用虛擬私有雲網路」一文所述。

查看 ingress 設定

控制台

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

    前往「Services」(服務) 頁面

  2. 找出「Ingress」欄。針對每項服務,這個欄中的值會顯示「所有」 (預設)、「內部 + 負載平衡」或「內部」等入口設定。

gcloud

如要使用 gcloud CLI 查看服務的入口設定,請按照下列步驟操作:

gcloud app services describe SERVICE

SERVICE 改為您的服務名稱。

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

gcloud app services describe default

編輯輸入設定

控制台

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

    前往「Services」(服務) 頁面

  2. 選取要編輯的服務。

  3. 按一下「編輯入站設定」

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

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

輸出設定

如果您使用無伺服器虛擬私有雲端存取,可以為 App Engine 服務指定出口設定。

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

出口設定與網址擷取服務不相容。使用 urlfetch 程式庫會忽略輸出設定,且要求不會透過無伺服器虛擬私有雲存取連接器路由。

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

  1. 在服務的 app.yaml 檔案 vpc_access_connector 欄位中新增 egress_setting 屬性:

    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 服務的所有外連要求都會轉送至虛擬私有雲網路。要求會受到 VPC 網路的防火牆、DNS 和路由規則限制。請注意,將所有傳出要求轉送至虛擬私有雲網路,會增加 Serverless VPC Access 連接器處理的輸出量,並可能產生費用
  2. 部署服務:

    gcloud app deploy