flow.*
flow.APITimedOut
504 Gateway Timeout
API timed out
發生這個錯誤的可能原因如下:
後端伺服器未在屬性
api.timeout
為特定 API Proxy 設定的逾時期間內回覆。
由於需要大量運算作業、負載過高或效能不佳,導致政策執行時間過長。
flow.SharedFlowNotFound
500 Internal Server Error
Shared Flow {shared_flow_name} Not Found
如果特定共用流程有下列情況,就會發生這個錯誤:
messaging.adaptors.http.flow
messaging.adaptors.http.flow.DecompressionFailureAtRequest
400 Bad Request
Decompression failure at request
CLIENT_READ_CONTENT_NOT_IN_GZIP_FORMAT
只有在下列情況下才會發生這個錯誤:
HTTP 要求標頭 Content-Encoding
中指定的編碼有效,且 Apigee 支援該編碼,
BUT
用戶端在 HTTP 要求中傳送的酬載格式,與 Content-Encoding
標頭中指定的編碼格式不符
messaging.adaptors.http.flow.DecompressionFailureAtResponse
502 Bad Gateway
Decompression failure at response
TARGET_READ_CONTENT_NOT_IN_GZIP_FORMAT
TARGET_READ_INCORRECT_HEADER_CHECK
只有在下列情況下才會發生這個錯誤:
後端/目標伺服器的 HTTP 回應標頭 Content-Encoding
中指定的編碼有效,且 Apigee 支援該編碼。
BUT
後端/目標伺服器傳送的 HTTP 回應負載格式,與 Content-Encoding
標頭中指定的編碼格式不符
注意: 在某些情況下,如果同時使用 deflate 壓縮演算法和 Content-Encoding: deflate
標頭,Apigee 仍可能會傳回 TARGET_READ_INCORRECT_HEADER_CHECK
錯誤。如果後端實作的 deflate 壓縮演算法不符合
RFC 1950 ,就可能發生這種情況。如要解決這個問題,請將目標伺服器上的壓縮演算法從 deflate 變更為 gzip,並在 HTTP 回應中使用 Content-Encoding: gzip
標頭,做為暫時解決方法。
messaging.adaptors.http.flow.ErrorResponseCode
500
錯誤訊息和格式可能因後端伺服器實作方式而異。
如果後端伺服器傳回狀態碼 500
給 Apigee,就會發生這個錯誤。
503
錯誤訊息和格式可能因後端伺服器實作方式而異。
如果後端伺服器傳回狀態碼 503
給 Apigee,就會發生這個錯誤。
504
錯誤訊息和格式可能因後端伺服器實作方式而異。
如果後端伺服器傳回狀態碼 504
給 Apigee,就會發生這個錯誤。
注意: 錯誤代碼 messaging.adaptors.http.flow.ErrorResponseCode
不會隨傳送至用戶端應用程式的錯誤訊息一併傳回。這是因為每當後端伺服器 傳回錯誤和任何 4XX
或 5XX
狀態碼時,Apigee 都會設定這個錯誤代碼。您可以在 API 監控或分析資料庫中查看這個錯誤代碼。
messaging.adaptors.http.flow.GatewayTimeout
504 Gateway Timeout
Gateway Timeout
TARGET_READ_TIMEOUT
如果後端伺服器未在訊息處理器上設定的 I/O 逾時期間內,回覆 Apigee 訊息處理器,就會發生這項錯誤。
messaging.adaptors.http.flow.InternalServerError
500 Internal Server Error
Internal server error at backend
SERVER_ERROR
發生這個錯誤的原因如下:
後端應用程式在處理 Apigee 的要求時,發生未處理的例外狀況或錯誤。這可能是因為應用程式程式碼中的邏輯有誤、輸入內容超出預期,或是發生其他執行階段問題。
後端伺服器可能無法連線至資料庫,或是資料庫查詢可能失敗。這可能是因為網路連線、資料庫憑證有誤、資料庫伺服器停機,或是資料庫結構定義或資料有問題。
如果後端伺服器依賴其他內部或外部服務 (例如 API、訊息佇列或快取系統),其中一項依附元件發生故障,可能會導致伺服器向 Apigee 回傳 500
錯誤。後端可能無法與依附服務通訊,或可能收到依附服務傳回的錯誤回應。
後端伺服器可能因流量過高、記憶體 (RAM) 不足、CPU 使用率過高或磁碟空間不足而過載。如果伺服器資源不足,就無法處理要求,並會傳回 500
錯誤。
後端伺服器設定不正確,可能會在處理要求時導致未預期的錯誤。包括伺服器設定、應用程式設定或部署設定的問題。
後端應用程式程式碼可能存在基本錯誤,而 Apigee 的特定要求會觸發這項錯誤。這些錯誤在正常情況下可能不會顯現,但會因特定要求模式或資料而暴露出來。
messaging.adaptors.http.flow.LengthRequired
411 Length Required
'Content-Length' is missing
CLIENT_REQUEST_CONTENT_LENGTH_REQUIRED
如果用戶端應用程式未將 Content-Length
標頭做為傳送至 Apigee 的 HTTP POST
和 PUT
要求的一部分傳遞,就會發生這項錯誤。
注意: 由於訊息處理器會在極早階段執行這項驗證,遠早於處理要求和在 API Proxy 中執行任何政策,因此 Trace 工具無法擷取因這個錯誤而失敗的要求。
RFC 第 3.3.2 節:Content-Length
修正
修正
如要解決這項錯誤,請按照下列步驟操作:
請確保用戶端應用程式一律將標頭 Content-Length
做為傳送至 Apigee 的 HTTP POST
和 PUT
要求的一部分。例如:
curl -X POST https://HOSTALIAS /PATH -d '{"name": "abc"}' -H "Content-Length: 15"
即使您是透過 POST
和 PUT
要求傳遞空白酬載,也請務必傳遞 Content-Length: 0
標頭。例如:
curl -X POST https://HOSTALIAS /PATH -H "Content-Length: 0"
關閉
messaging.adaptors.http.flow.NoActiveTargets
503 Service Unavailable
The Service is temporarily unavailable
TARGET_HEALTHCHECK_CONNECT_TIMEOUT
TARGET_HEALTHCHECK_CONNECTION_REFUSED
TARGET_HEALTHCHECK_HTTPS_REQUEST_OVER_HTTP
TARGET_HEALTHCHECK_UNEXPECTED_EOF
如果您在 Apigee 中使用
TargetServer ,則在下列情況下會發生這項錯誤:
自訂授權伺服器對後端伺服器主機的 DNS 解析錯誤,導致 IP 位址錯誤,進而發生連線錯誤。
連線逾時錯誤的原因:
後端伺服器的防火牆限制會導致 Apigee 無法連線至後端伺服器。
Apigee 與後端伺服器之間的網路連線問題。
TargetServer 中指定的主機不正確,或含有不必要的字元 (例如空格)。
如果設定用來監控目標伺服器健康狀態檢查的健康狀態檢查失敗,也可能發生這個錯誤。
messaging.adaptors.http.flow.RequestTimeOut
408 Request Timeout
Request timed out
CLIENT_READ_TIMEOUT
如果 Apigee Message Processor 在 Message Processor 元件上設定的 I/O 超時期間內,未收到來自用戶端應用程式的要求酬載,就會發生這個錯誤。
修正
修正
確認用戶端應用程式在 Apigee 的 Message Processor 元件上設定的 I/O 超時期間內,傳送要求酬載。
關閉
messaging.adaptors.http.flow.ServiceUnavailable
503 Service Unavailable
The Service is temporarily unavailable
TARGET_CONNECT_TIMEOUT
TARGET_WRITE_BROKEN_PIPE
TARGET_WRITE_CONNECTION_RESET_BY_PEER
TARGET_CONNECT_CONNECTION_REFUSED
發生這個錯誤的原因如下:
自訂授權伺服器對後端伺服器主機的 DNS 解析錯誤,導致 IP 位址錯誤,進而發生連線錯誤。
連線逾時錯誤的原因:
後端伺服器的防火牆限制會導致 Apigee 無法連線至後端伺服器。
Apigee 與後端伺服器之間的網路連線問題。
目標端點中指定的目標伺服器主機不正確,或含有不必要的字元 (例如空格)。
修正
如果訊息處理器仍在將要求酬載傳送至後端伺服器,但後端伺服器卻過早關閉連線,也可能發生這個錯誤。
messaging.adaptors.http.flow.SslHandshakeFailed
503 Service Unavailable
SSL Handshake failed {error_message}
如果發生下列情況,Apigee 的訊息處理器與後端伺服器之間的 SSL 交握程序就會發生這項錯誤:
Apigee 訊息處理器的信任儲存區:
包含的憑證鏈結與後端伺服器的完整憑證鏈結不符
或
未包含後端伺服器的完整憑證鏈結
後端伺服器提供的憑證鏈結:
包含與目標端點中指定主機名稱不符的完整網域名稱 (FQDN)
或
含有不正確/不完整的憑證鏈結
後端伺服器拒絕 Apigee 使用的 TLS 版本。
舉例來說,如果後端伺服器只接受 TLS 1.3 版,但 Apigee 端的目標伺服器在 TLS Protocol
欄位中設定了 TLS 1.2 版 (或完全未設定 TLS 版本,在這種情況下,Apigee 目前不會 預設使用 TLS 1.3 版),就會因通訊協定版本不符而導致連線失敗。
messaging.adaptors.http.flow.UnexpectedEOFAtTarget
502 Bad Gateway
Unexpected EOF at target
TARGET_READ_UNEXPECTED_EOF
發生這個錯誤的原因如下:
TargetServer 設定有誤,無法在 Apigee 中支援 TLS/SSL 連線。
Apigee 等待後端伺服器回應時,後端伺服器可能會突然關閉連線。
Apigee 和後端伺服器上設定的 Keep-Alive 超時時間有誤。
messaging.adaptors.http.flow.BadGateway
502 Bad Gateway
Bad Gateway
如果目標伺服器傳送格式錯誤的 HTTP 回應給 Apigee,就會發生這項錯誤。
messaging.runtime.*
messaging.runtime.RouteFailed
500 Internal Server Error
Unable to route the message to a TargetEndpoint
如果 Apigee 無法將要求路由至任何 TargetEndpoint,就會發生這個錯誤,原因如下:
Proxy 中沒有符合要求的路徑規則 (<RouteRule>
) 條件
且
ProxyEndpoint 中未定義預設路徑規則 (即 <RouteRule>
,無任何條件)
修正
修正
如要解決這項錯誤,請按照下列操作說明進行:
檢查 ProxyEndpoint 中定義的路徑規則,並進行修改,確保至少有一項路徑規則條件符合您的要求。
如果有多個 RouteRule,建議您定義沒有條件的預設 轉送規則。
請務必在條件式路徑清單中最後定義預設轉送規則,因為系統會在 ProxyEndpoint 中由上而下評估規則。
如要進一步瞭解如何在 ProxyEndpoint 中定義 <RouteRule>
條件,請參閱
條件式目標 。
關閉
protocol.http.* - Caused due to bad request
500 Internal Server Error
Bad Form Data
只有在符合下列所有條件時,才會發生這個錯誤:
用戶端傳送至 Apigee 的 HTTP 要求包含:
Content-Type: application/x-www-form-urlencoded
、
和
表單資料含有百分比符號 (%),或百分比符號 (%) 後接續無效的十六進位字元,這類字元不符合
表單 - 第 17.13.4.1 節 的規定。
Apigee 中的 API Proxy 會在要求流程中,使用 ExtractVariables 或 AssignMessage 政策,讀取含有任何不允許字元的特定表單參數。
400 Bad Request
Duplicate Header "{header_name}"
如果用戶端應用程式傳送至 Apigee 的 HTTP 要求中,出現 Apigee 不允許重複的特定 HTTP 標頭,且該標頭的值相同或不同,就會發生這項錯誤。
RFC 7230 的 3.2.2 節:欄位順序
400 Bad Request
Header name cannot be empty
如果用戶端應用程式傳送至 Apigee 的 HTTP 要求中,標頭名稱為空白,就會發生這項錯誤。
RFC 7230 的 3.2 節:標頭欄位
修正
修正
修正
protocol.http.InvalidPath
修正
protocol.http.MessageReadError
502 Bad Gateway
Unexpected I/O after message headers have been read.
MP 在非預期情況下收到管道上的 I/O 時,就會發生這種罕見錯誤。MP 正在讀取要求,已讀取所有標頭,並設定為讀取要求酬載。然後遇到似乎是相同標頭的 I/O 事件。
修正
修正
找出記錄訊息,進一步瞭解發生了什麼事。
logger.atSevere().log(
"Unexpected I/O after message headers have been read. Channel diagnostics=%s."
+ " HeartBeat=%s",
input.client().getDiagnostic(), message.getHeaders().isHeartBeat());
關閉
protocol.http.NoResolvedHost
503 Service Unavailable
Unable to resolve host {hostname}
其中:{hostname}
是動態值,其值會根據提供的主機名稱而異。
TARGET_CONNECT_HOST_NOT_REACHABLE
如果指定的目標伺服器主機不正確或含有不必要的字元 (例如空格),就會發生這個錯誤。
protocol.http.TooBigBody
413 Request Entity Too Large
Body buffer overflow
如果用戶端應用程式傳送至 Apigee 的 HTTP 要求酬載大小,超過 Apigee 允許的上限,就會發生這個錯誤。
Apigee 限制
protocol.http.TooBigLine
414 Request-URI Too Long
request line size exceeding {limit}
如果用戶端應用程式傳送至 Apigee 的 HTTP 要求中,要求行的長度超過 Apigee 允許的上限,就會發生這個錯誤。
Apigee 限制
protocol.http.UnsupportedEncoding
415 Unsupported Media
Unsupported Encoding "{encoding}"
如果用戶端傳送的 Content-Encoding
標頭 (屬於 HTTP 回應的一部分) 包含 Apigee 不支援的編碼/酬載格式,就會發生這個錯誤。
RFC 7231 第 6.5.13 節:415 不支援的媒體類型
protocol.http.* - Caused by target
protocol.http.BadPath
502 Bad Gateway
Duplicate Header "{header_name}"
如果後端伺服器傳送至 Apigee 的 HTTP 回應中,出現 Apigee 不允許重複的特定 HTTP 標頭,且值相同或不同,就會發生這項錯誤。
RFC 7230 的 3.2.2 節:欄位順序
502 Bad Gateway
Header name cannot be empty
如果後端伺服器傳送給 Apigee 的 HTTP 回應中含有空白標頭名稱,就會發生這項錯誤。
RFC 7230 的 3.2 節:標頭欄位
修正
protocol.http.EmptyPath
修正
修正
protocol.http.ProxyTunnelCreationFailed
503 Service Unavailable
Proxy refused to create tunnel with response status {status code}
由於防火牆、ACL (存取控管清單)、DNS 問題、後端伺服器可用性等因素,代理伺服器在 Apigee 與後端伺服器之間建立通道時,就會發生這個錯誤。
注意: 錯誤訊息中的狀態碼 (faultstring
) 會提供問題的高階原因。
protocol.http.Response306Reserved
502 Bad Gateway
Response Status code 306 is reserved, so can't be used.
如果後端伺服器以 306
狀態碼回應 Apigee,就會發生這個錯誤。
306
狀態碼是在舊版 HTTP 規格中定義,根據目前的 HTTP 規格,這個代碼為保留代碼,不應使用。
RFC 7231 的 6.3.5 節:306 保留
修正
修正
由於狀態碼 306
為保留狀態,請確保後端伺服器在傳送 Apigee 回應時,不會使用這個狀態碼。
關閉
protocol.http.ResponseWithBody
protocol.http.TooBigBody
502 Bad Gateway
Body buffer overflow
如果用戶端應用程式傳送至 Apigee 的 HTTP 要求酬載大小,超過 Apigee 允許的上限,就會發生這個錯誤。
Apigee 限制
502 Bad Gateway
response headers size exceeding {limit}
如果後端伺服器傳送給 Apigee 的 HTTP 回應中,所有回應標頭的總大小超過 Apigee 允許的上限,就會發生這個錯誤。
Apigee 限制
protocol.http.TooBigLine
502 Bad Gateway
response line size exceeding {limit}
如果後端伺服器傳送給 Apigee 的 HTTP 回應中,回應行的長度超過 Apigee Edge 允許的上限,就會發生這個錯誤。
Apigee 限制
protocol.http.UnsupportedEncoding
415 Unsupported Media
Unsupported Encoding "{encoding}"
如果後端伺服器在 HTTP 回應中傳送的 Content-Encoding
標頭包含 Apigee 不支援的編碼/酬載格式,就會發生這個錯誤。
RFC 7231 第 6.5.13 節:415 不支援的媒體類型
security.util.*
security.util.KeyAliasNotFound
500 Internal Server Error
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name}
如果 TargetEndpoint 或 TargetServer 中參照的特定 KeyAlias 未在特定 Keystore 中找到,就會發生這個錯誤。
修正
修正
確認 TargetEndpoint 或 TargetServer 中指定的 KeyAlias 存在,且屬於特定 Keystore。
關閉
security.util.TrustStoreWithNoCertificates
500 Internal Server Error
TrustStore {truststore_name} has no certificates
如果 TargetEndpoint 或 TargetServer 參照的特定 Truststore 不含任何憑證,就會發生這個錯誤。
修正
修正
如要驗證後端伺服器的憑證,並在 TargetEndpoint 或 TargetServer 中使用 Truststore,請確保 Truststore 包含後端伺服器的有效憑證。
關閉