您目前查看的是 Apigee 和 Apigee Hybrid 說明文件。
這個主題沒有對應的
Apigee Edge 說明文件。
問題
Apigee 與透過 Private Service Connect (PSC) 連線的南向目標服務之間發生網路連線問題。
錯誤訊息
如果 Apigee 與目標服務之間發生網路連線問題或 TCP 逾時,就會顯示 503 錯誤回應。如果您建立偵錯工作階段,也會看到類似下方的錯誤:
{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable","reason":"TARGET_CONNECT_TIMEOUT"}}}可能原因
| 原因 | 說明 |
| 服務附件和 Apigee 執行個體位於不同區域 | Apigee 執行個體區域和服務附件區域不同。 |
| 目標專案中缺少 PSC 子網路的輸入防火牆規則 | 在目標專案中,確認有傳入防火牆規則,允許 PSC 子網路範圍的 IP 位址和通訊埠。 |
| 目標專案中的服務連結設定有誤 | 在目標專案中驗證「服務連結」。 |
| Apigee 中端點連結的狀態不正確 | 在 Apigee 上驗證端點附件。 |
| TargetEndpoint 中設定的通訊埠與 ILB 不符 | 確認 API 代理程式中的 TargetEndpoint 使用的通訊埠,與目標專案中內部負載平衡器 (ILB) 公開的通訊埠相同。 |
原因:服務附件和 Apigee 執行個體位於不同區域
診斷
-
使用下列任一方法檢查 Apigee 執行個體區域:

- 使用傳統版 Apigee UI:
- 登入 Apigee UI。
- 依序點選「管理」 >「執行個體」。
- 按一下執行個體。
- 查看「執行階段代管位置」,位於「執行個體詳細資料」窗格中。
- 在 Google Cloud 控制台中使用 Apigee UI:
-
前往 Google Cloud 控制台的「Apigee Instances」(Apigee 執行個體) 頁面。
- 按一下執行個體。
- 查看「執行階段代管位置」,位於「執行個體詳細資料」窗格中。
-
- 使用
API 呼叫:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances"
其中 ORG_NAME 是機構名稱。 例如:
example-apigee-support。系統會傳回類似以下的回應。「執行階段主機代管位置」是下方
location顯示的值。例如:asia-northeast1。"instances": [ { "name": "asia-northeast1", "location": "asia-northeast1", "host": "10.117.0.2", "port": "443", "createdAt": "1628150049760", "lastModifiedAt": "1682139265367", "diskEncryptionKeyName": "projects/apigee-x-support-apac-05/locations/asia-northeast1/keyRings/phanim-disk-key-1/cryptoKeys/phanim-disk-key-ring-1", "state": "ACTIVE", "peeringCidrRange": "SLASH_20", "runtimeVersion": "1-9-0-apigee-25", "consumerAcceptList": [ "example-apigee-support", "example-neg-project" ], "serviceAttachment": "projects/xb363132eb41cb643p-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-yp9o" }
- 使用傳統版 Apigee UI:
-
使用
API 呼叫,檢查「端點附件」區域:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
其中:
- ORG_NAME 是機構名稱。
例如:
example-apigee-support。 - ENDPOINT_ATTACHMENT_NAME 是端點附件的名稱。例如
example-ea。
系統會傳回類似以下的回應。「端點附件區域」是下方
location顯示的值。例如:asia-northeast1。{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
- ORG_NAME 是機構名稱。
例如:
-
使用 Cloud 控制台檢查服務連結區域:
-
前往 Google Cloud 控制台的「Private Service Connect」 頁面。
- 查看「區域」 欄中的位置。

-
解析度
確認 Apigee 執行個體、端點連結和服務連結區域相同。例如:asia-northeast1。
如「
限制」一節所述,系統不支援全域存取權。也就是說,服務附件和端點附件必須位於相同區域。舉例來說,如果 Apigee 執行個體位於 us-west1 地區,您就無法將服務連線至 us-east2 或任何其他地區。
如果區域不同,Apigee 和目標服務之間就會出現連線問題。
原因:目標專案中缺少 PSC 子網路的輸入防火牆規則
診斷
檢查目標專案中的防火牆規則,確認允許 PSC 子網路範圍的 IP 位址連線至目標服務:
-
前往 Google Cloud 控制台的「Firewall」(防火牆) 頁面。
-
在「虛擬私有雲防火牆規則」窗格中,確認有類似下列範例的規則:
- 方向:輸入
- 相符時執行的動作:允許
- 來源篩選器:IPv4/IPv6 範圍
- IP 範圍:PSC 子網路的 IP 位址範圍 (
ipCidrRange),您可以使用下列 gcloud 指令來描述 PSC 子網路:gcloud compute networks subnets describe PSC_SUBNET_NAME --region=REGION
其中:
-
PSC_SUBNET_NAME 是 PCS 子網路名稱。
例如:
pscsub。 -
REGION 是位置。例如:
asia-northeast1。
系統會傳回類似以下的回應:
creationTimestamp: '2023-04-19T03:33:29.371-07:00' fingerprint: 1JPKY66teTg= gatewayAddress: 10.10.0.1 id: '5645967773396008342' ipCidrRange: 10.10.0.0/24 kind: compute#subnetwork name: pscsub network: https://www.googleapis.com/compute/v1/projects/target-project/global/networks/default privateIpGoogleAccess: false privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS purpose: PRIVATE_SERVICE_CONNECT ....
-
PSC_SUBNET_NAME 是 PCS 子網路名稱。
例如:
- 通訊協定和通訊埠:這些項目應根據目標服務設定列出。
例如:
解析度
如果沒有防火牆規則,請按照「 建立服務連結」一文的步驟 2,建立 PSC 子網路。
原因:目標專案中的服務連結設定有誤
診斷
請使用下列其中一種方法,檢查「服務附件」區域:
- 使用 Cloud Console:
-
前往 Google Cloud 控制台的「Private Service Connect」 頁面。
- 按一下「已發布的服務」。
- 按一下服務。
- 查看位置的「區域」 列。

-
- 使用
gcloud command:gcloud compute service-attachments describe SERVICE_ATTACHMENT --region=REGION
其中:
-
SERVICE_ATTACHMENT 是服務連結名稱。
例如:
gkebackend。 -
REGION 是位置。例如:
asia-northeast1。
系統會傳回類似以下的回應:
connectedEndpoints: - endpoint: https://www.googleapis.com/compute/v1/projects/xb363132eb41cb643p-tp/regions/asia-northeast1/forwardingRules/example-ea pscConnectionId: '6816512648152066' status: ACCEPTED connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2023-04-19T05:09:09.941-07:00' description: '' enableProxyProtocol: false fingerprint: 0BZDAZ3zDCs= id: '4503680255626733322' kind: compute#serviceAttachment name: gkebackend natSubnets: - https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/subnetworks/pscsub pscServiceAttachmentId: high: '21570167574103266' low: '4503680255626733322' region: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1 selfLink: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend targetService: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/forwardingRules/k8s2-tcp-b65prv8v-default-ilb-svc-tv2s6klz
-
SERVICE_ATTACHMENT 是服務連結名稱。
例如:
解析度
-
確認
connectedEndpoints.endpoint值參照 Apigee 的租戶專案,並確認其狀態為ACCEPTED。您可以使用 Apigee Organizations API 找出租戶專案:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"
其中 ORG_NAME 是機構名稱。例如:
example-apigee-support。系統會傳回類似以下的回應。ID 位於名為
apigeeProjectId的欄位中。例如:xb363132eb41cb643p-tp。{ "name": "example-apigee-support", "createdAt": "1628148440954", "lastModifiedAt": "1650563608527", "environments": [ "dev" ], "properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, "analyticsRegion": "asia-northeast1", "authorizedNetwork": "default", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "CERTIFICATE_NUMBER", "runtimeDatabaseEncryptionKeyName": "projects/example-apigee-support/locations/asia-northeast1/keyRings/phanim-key-ring-1/cryptoKeys/phanim-app-key-1", "projectId": "example-apigee-support", "state": "ACTIVE", "billingType": "SUBSCRIPTION", "addonsConfig": { "advancedApiOpsConfig": {}, "integrationConfig": {}, "monetizationConfig": {} }, "apigeeProjectId": "xb363132eb41cb643p-tp" } -
如「南向網路模式」一文的「檢查及管理連結連線」一節所述,請確保服務連結與端點連結連線。在步驟 1 的 UI 中,請確認下列事項:
-
「子網路」列會參照 PSC 子網路。例如:
pscsub。 - 「目標」列會參照目標後端的正確內部負載平衡器。
-
「子網路」列會參照 PSC 子網路。例如:
原因:Apigee 中的端點連結狀態有誤
診斷
使用 API 呼叫在 Apigee 上查看端點附件:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
其中:
-
ORG_NAME 是機構名稱。例如:
example-apigee-support。 -
ENDPOINT_ATTACHMENT_NAME 是端點附件的名稱。例如:
example-ea。
系統會傳回類似以下的回應:
{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
解析度
請確認以下事項:
- 「
state」這個價格ACTIVE - 「
connectionState」這個價格ACCEPTED -
serviceAttachment是指正確的目標專案和服務連結名稱
原因:TargetEndpoint 中設定的通訊埠與 ILB 不符
診斷
- 在目標專案中,使用 Cloud 控制台找出轉送規則公開的連接埠:
-
前往 Google Cloud 控制台的「Private Service Connect」 頁面。
- 按一下「已發布的服務」。
- 按一下所需服務。如下列範例所示,通訊埠 80 會公開。
-
解析度
確認 API Proxy 中的通訊埠也是通訊埠 80。TargetEndpoint
如要檢查這點,請前往 API Proxy 並驗證 TargetEndpoint URL:
- 使用傳統版 Apigee UI:
- 登入 Apigee UI。
- 依序點選「開發」>「API Proxy」
- 按一下 Proxy。
- 按一下「開發」。
- 檢查 XML 窗格是否出現下列情況:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
- 在 Google Cloud 控制台中使用 Apigee UI:
-
前往 Google Cloud 控制台的「Apigee」頁面。
- 在「Proxy 開發」區域中,按一下「API Proxy」。
- 按一下 Proxy。
- 按一下「開發」。
- 檢查 XML 窗格是否有下列項目:
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
-
必須收集診斷資訊
如果按照上述操作說明後問題仍未解決,請收集下列診斷資訊,然後與 Google Cloud Customer Care 團隊聯絡:
- Apigee 組織
- 發生問題的環境和 API Proxy
- 下載的偵錯工作階段 (這會提供上述所有資訊)
- 使用的端點連結
- 目標專案和服務連結