本頁適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
AccessControl 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
accesscontrol.IPDeniedAccess |
403 |
用戶端 IP 位址或 API 要求中傳遞的 IP 位址,與存取控制政策 <MatchRule> 元素中 <SourceAddress> 元素中指定的 IP 位址相符,且 <MatchRule> 元素的 action 屬性設為 DENY 。 |
build |
accesscontrol.InvalidIPAddressInVariable |
500 |
<ClientIPVariable> 中的流程變數含有無效的 IP 位址。 |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「政策錯誤專屬變數」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "IPDeniedAccess" |
acl.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | acl.AC-AllowAccess.failed = true |
錯誤回應範例
{ "fault":{ "faultstring":"Access Denied for client ip : 52.211.243.3" "detail":{ "errorcode":"steps.accesscontrol.IPDeniedAccess" } } }
錯誤規則範例
<FaultRule name="IPDeniedAccess"> <Step> <Name>AM-IPDeniedAccess</Name> <Condition>(fault.name Matches "IPDeniedAccess") </Condition> </Step> <Condition>(acl.failed = true) </Condition> </FaultRule>
AccessEntity 政策
執行階段錯誤
無。
部署錯誤
錯誤名稱 | 錯誤字串 | HTTP 狀態 | 發生時機 |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
不適用 | 使用的實體類型必須是支援的類型之一。 |
AssignMessage 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 |
政策無法設定變數。請參閱錯誤字串,瞭解未解決變數的名稱。 | |
steps.assignmessage.VariableOfNonMsgType |
500 |
如果 訊息類型變數代表整個 HTTP 要求和回應。內建的 Apigee 流程變數 |
build |
steps.assignmessage.UnresolvedVariable |
500 |
如果 AssignMessage 政策中指定的變數為下列任一情況,就會發生此錯誤:
|
build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidIndex |
如果 AssignMessage 政策的 <Copy> 和/或 <Remove> 元素中指定的索引為 0 或負數,則 API Proxy 的部署作業會失敗。 |
build |
InvalidVariableName |
如果子元素 <Name> 為空白,或未在 <AssignVariable> 元素中指定,則 API 代理程式無法部署,因為沒有有效的變數名稱可用來指派值。必須提供有效的變數名稱。
|
build |
InvalidPayload |
政策中指定的酬載無效。 |
錯誤變數
當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="FAULT_NAME" |
FAULT_NAME 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "UnresolvedVariable" |
assignmessage.POLICY_NAME.failed |
POLICY_NAME 是擲回錯誤的政策的使用者指定名稱。 | assignmessage.AM-SetResponse.failed = true |
錯誤回應範例
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
錯誤規則範例
<FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
BasicAuthentication 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理錯誤的錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.basicauthentication.InvalidBasicAuthenticationSource |
500 |
在解碼時,如果傳入的 Base64 編碼字串不含有效值,或標頭格式錯誤 (例如,不以 Basic 開頭)。 |
build |
steps.basicauthentication.UnresolvedVariable |
500 |
缺少解碼或編碼所需的來源變數。只有在 IgnoreUnresolvedVariables 為 false 時,才會發生這項錯誤。 |
build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 發生時機 | 修正 |
---|---|---|
UserNameRequired |
已命名作業必須包含 <User> 元素。 |
build |
PasswordRequired |
已命名作業必須包含 <Password> 元素。 |
build |
AssignToRequired |
命名作業必須包含 <AssignTo> 元素。 |
build |
SourceRequired |
已命名作業必須包含 <Source> 元素。 |
build |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "UnresolvedVariable" |
BasicAuthentication.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | BasicAuthentication.BA-Authenticate.failed = true |
錯誤回應範例
{ "fault":{ "detail":{ "errorcode":"steps.basicauthentication.UnresolvedVariable" }, "faultstring":"Unresolved variable : request.queryparam.password" } }
錯誤規則範例
<FaultRule name="Basic Authentication Faults"> <Step> <Name>AM-UnresolvedVariable</Name> <Condition>(fault.name Matches "UnresolvedVariable") </Condition> </Step> <Step> <Name>AM-AuthFailedResponse</Name> <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition> </Step> <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition> </FaultRule>
DecodeJWS 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 發生時機 |
---|---|---|
steps.jws.FailedToDecode |
401 |
政策無法解碼 JWS。JWS 可能已損毀。 |
steps.jws.FailedToResolveVariable |
401 |
當政策 <Source> 元素中指定的流程變數不存在時,就會發生這個錯誤。 |
steps.jws.InvalidClaim |
401 |
缺少聲明或聲明不相符,或是缺少標頭或標頭不相符。 |
steps.jws.InvalidJsonFormat |
401 |
JWS 標頭中發現無效的 JSON。 |
steps.jws.InvalidJws |
401 |
當 JWS 簽名驗證失敗時,就會發生此錯誤。 |
steps.jws.InvalidPayload |
401 |
JWS 酬載無效。 |
steps.jws.InvalidSignature |
401 |
<DetachedContent> 已省略,且 JWS 具有分離的內容酬載。 |
steps.jws.MissingPayload |
401 |
缺少 JWS 酬載。 |
steps.jws.NoAlgorithmFoundInHeader |
401 |
發生於 JWS 省略演算法標頭時。 |
steps.jws.UnknownException |
401 |
發生不明例外狀況。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 發生時機 |
---|---|
InvalidAlgorithm |
唯一有效的值為 RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512,
HS256, HS384, HS512 。 |
|
其他可能的部署錯誤。 |
錯誤變數
系統會在發生執行階段錯誤時設定這些變數。詳情請參閱重要須知 政策錯誤。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤的名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤程式碼的最後部分。 | fault.name Matches "TokenExpired" |
JWS.failed |
如果作業失敗,所有 JWS 政策都會設定相同的變數。 | jws.JWS-Policy.failed = true |
錯誤回應範例
針對錯誤處理,最佳做法是將錯誤的 errorcode
部分加以包裝
回應。請勿參考 faultstring
中的文字,因為可能會變動。
錯誤規則範例
<FaultRules> <FaultRule name="JWS Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWS.failed=true</Condition> </FaultRule> </FaultRules>
DecodeJWT 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.jwt.FailedToDecode |
401 |
當政策無法解碼 JWT 時,就會發生這個錯誤。JWT 可能格式錯誤、無效或無法解碼。 | build |
steps.jwt.FailedToResolveVariable |
401 |
當政策 <Source> 元素中指定的流程變數不存在時,就會發生這個錯誤。 |
|
steps.jwt.InvalidToken |
401 |
當政策 <Source> 元素中指定的流程變數超出範圍或無法解析時,就會發生此錯誤。 |
build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidEmptyElement |
當政策的 <Source> 元素未指定含有待解碼 JWT 的流程變數時,就會發生此錯誤。 |
build |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "InvalidToken" |
JWT.failed |
所有 JWT 政策在失敗的情況下都會設定相同的變數。 | JWT.failed = true |
錯誤回應範例
針對錯誤處理,最佳做法是擷取錯誤回應的 errorcode
部分。請勿依賴 faultstring
中的文字,因為該文字可能會變更。
錯誤規則範例
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "InvalidToken")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>
ExtractVariables 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.extractvariables.ExecutionFailed |
500 |
發生這個錯誤的原因如下:
|
build |
steps.extractvariables.ImmutableVariable |
500 |
政策中使用的變數是不可變動的。政策無法設定這個變數。 | 不適用 |
steps.extractvariables.InvalidJSONPath |
500 |
如果在政策的 JSONPath 元素中使用無效的 JSON 路徑,就會發生這個錯誤。舉例來說,如果 JSON 酬載沒有 Name 物件,但您在政策中將 Name 指定為路徑,就會發生這個錯誤。 |
build |
steps.extractvariables.JsonPathParsingFailure |
500 |
當政策無法剖析 JSON 路徑,並從 Source 元素中指定的流程變數中擷取資料時,就會發生這項錯誤。通常,如果 Source 元素中指定的流程變數不存在於目前流程中,就會發生這種情況。 |
build |
steps.extractvariables.SetVariableFailed |
500 |
如果政策無法將值設為變數,就會發生這項錯誤。一般來說,如果您嘗試將值指派給多個變數,且這些變數的名稱以同一個字詞開頭,且採用以點分隔的巢狀格式,就會發生此錯誤。 | build |
steps.extractvariables.SourceMessageNotAvailable |
500 |
如果政策的 Source 元素中指定的 message 變數為下列任一情況,就會發生這個錯誤:
|
build |
steps.extractvariables.UnableToCast |
500 |
如果政策無法將擷取的值轉換為變數,就會發生此錯誤。通常,如果您嘗試將某個資料類型的值設為另一個資料類型的變數,就會發生這種情況。 | build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
NothingToExtract |
如果政策沒有任何 URIPath 、QueryParam 、Header 、FormParam 、XMLPayload 或 JSONPayload 元素,則由於沒有任何可擷取的內容,因此 API Proxy 的部署作業會失敗。 |
build |
NONEmptyPrefixMappedToEmptyURI |
如果政策在 XMLPayload 元素下的 Namespace 元素中定義了前置字串,但未定義 URI,就會發生這個錯誤。 |
build |
DuplicatePrefix |
如果政策在 XMLPayload 元素下的 Namespace 元素中定義了相同的前置字串,就會發生這個錯誤。 |
build |
NoXPathsToEvaluate |
如果政策的 XMLPayload 元素中沒有 XPath 元素,API 代理程式會因這項錯誤而無法部署。 |
build |
EmptyXPathExpression |
如果政策在 XMLPayload 元素中包含空白的 XPath 運算式,API Proxy 的部署作業就會失敗。 |
build |
NoJSONPathsToEvaluate |
如果政策的 JSONPayload 元素中沒有 JSONPath 元素,API 代理程式會因這項錯誤而無法部署。 |
build |
EmptyJSONPathExpression |
如果政策在 XMLPayload 元素中包含空白的 XPath 運算式,API Proxy 的部署作業就會失敗。 |
build |
MissingName |
如果政策在任何需要 name 屬性的政策元素 (例如 QueryParam 、Header 、FormParam 或 Variable ) 中,都沒有 name 屬性,則 API 代理程式會部署失敗。 |
build |
PatternWithoutVariable |
如果政策在 Pattern 元素中未指定變數,API 代理程式就會部署失敗。Pattern 元素需要變數名稱,用於儲存擷取的資料。 |
build |
CannotBeConvertedToNodeset |
如果政策含有 XPath 運算式,其中 Variable 類型定義為 nodeset,但運算式無法轉換為 nodeset,則 API Proxy 的部署作業會失敗。 |
build |
JSONPathCompilationFailed |
政策無法編譯指定的 JSON 路徑。 | 不適用 |
InstantiationFailed |
無法將政策例項化。 | 不適用 |
XPathCompilationFailed |
如果 XPath 元素中使用的前置字串或值並非政策中宣告的任何命名空間的一部分,則 API 代理程式會無法部署。 |
build |
InvalidPattern |
如果 Pattern 元素定義在政策中的任何元素 (例如 URIPath 、QueryParam 、Header 、FormParam 、XMLPayload 或 JSONPayload ) 中無效,則 API 代理程式的部署作業會失敗。 |
build |
錯誤變數
當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name = "SourceMessageNotAvailable" |
extractvariables.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | extractvariables.EV-ParseJsonResponse.failed = true |
錯誤回應範例
{ "fault":{ "detail":{ "errorcode":"steps.extractvariables.SourceMessageNotAvailable" }, "faultstring":"request message is not available for ExtractVariable: EV-ParseJsonResponse" } }
錯誤規則範例
<FaultRule name="Extract Variable Faults"> <Step> <Name>AM-CustomErrorMessage</Name> <Condition>(fault.name = "SourceMessageNotAvailable") </Condition> </Step> <Condition>(extractvariables.EM-ParseJsonResponse.failed = true) </Condition> </FaultRule>
GenerateJWS 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 發生時機 |
---|---|---|
steps.jws.GenerationFailed |
401 |
政策無法產生 JWS。 |
steps.jws.InsufficientKeyLength |
401 |
針對 HS256 演算法,金鑰長度必須小於 32 位元組 |
steps.jws.InvalidClaim |
401 |
缺少聲明或聲明不相符,或是缺少標頭或標頭不相符。 |
steps.jws.InvalidCurve |
401 |
金鑰指定的曲線不適用於橢圓曲線演算法。 |
steps.jws.InvalidJsonFormat |
401 |
JWS 標頭中發現無效的 JSON。 |
steps.jws.InvalidPayload |
401 |
JWS 酬載無效。 |
steps.jws.InvalidSignature |
401 |
<DetachedContent> 已省略,且 JWS 具有分離的內容酬載。 |
steps.jws.KeyIdMissing |
401 |
驗證政策使用 JWKS 做為公開金鑰來源,但已簽署的 JWS 不會在標頭中加入 kid 屬性。 |
steps.jws.KeyParsingFailed |
401 |
無法從指定的金鑰資訊剖析公開金鑰。 |
steps.jws.MissingPayload |
401 |
缺少 JWS 酬載。 |
steps.jws.NoAlgorithmFoundInHeader |
401 |
發生於 JWS 省略演算法標頭時。 |
steps.jws.SigningFailed |
401 |
在 GenerateJWS 中,金鑰大小小於 HS384 或 HS512 演算法的最小大小 |
steps.jws.UnknownException |
401 |
發生不明例外狀況。 |
steps.jws.WrongKeyType |
401 |
指定的金鑰類型有誤。例如,如果您為橢圓曲線演算法指定 RSA 金鑰,或為 RSA 演算法指定曲線金鑰。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 發生時機 |
---|---|
InvalidAlgorithm |
唯一有效的值為 RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512,
HS256, HS384, HS512 。 |
|
其他可能的部署錯誤。 |
錯誤變數
系統會在發生執行階段錯誤時設定這些變數。詳情請參閱重要須知 政策錯誤。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤的名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤程式碼的最後部分。 | fault.name Matches "TokenExpired" |
JWS.failed |
如果作業失敗,所有 JWS 政策都會設定相同的變數。 | jws.JWS-Policy.failed = true |
錯誤回應範例
針對錯誤處理,最佳做法是將錯誤的 errorcode
部分加以包裝
回應。請勿參考 faultstring
中的文字,因為可能會變動。
錯誤規則範例
<FaultRules> <FaultRule name="JWS Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWS.failed=true</Condition> </FaultRule> </FaultRules>
GenerateJWT 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 發生時機 |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 |
驗證政策包含多個演算法時會發生。 |
steps.jwt.AlgorithmMismatch |
401 |
產生政策中指定的演算法與驗證政策中預期的演算法不符。指定的演算法必須相符。 |
steps.jwt.EncryptionFailed |
401 |
無法建立加密的 JWT,原因不明 |
steps.jwt.FailedToDecode |
401 |
政策無法解碼 JWT。JWT 可能已損毀。 |
steps.jwt.GenerationFailed |
401 |
政策無法產生 JWT。 |
steps.jwt.InsufficientKeyLength |
401 |
金鑰長度必須小於 HS256 演算法的 32 個位元組、HS386 演算法的 48 個位元組,以及 HS512 演算法的 64 個位元組。 |
steps.jwt.InvalidClaim |
401 |
缺少聲明或聲明不相符,或是缺少標頭或標頭不相符。 |
steps.jwt.InvalidConfiguration |
401 |
<Algorithm> 和 <Algorithms> 元素都存在。 |
steps.jwt.InvalidCurve |
401 |
金鑰指定的曲線不適用於橢圓曲線演算法。 |
steps.jwt.InvalidJsonFormat |
401 |
標頭或酬載中發現無效的 JSON。 |
steps.jwt.InvalidPasswordKey |
401 |
指定的鍵不符合規定。 |
steps.jwt.InvalidPrivateKey |
401 |
指定的鍵不符合規定。 |
steps.jwt.InvalidPublicKey |
401 |
指定的鍵不符合規定。 |
steps.jwt.InvalidSecretKey |
401 |
指定的鍵不符合規定。 |
steps.jwt.InvalidToken |
401 |
當 JWT 簽名驗證失敗時,就會發生此錯誤。 |
steps.jwt.JwtAudienceMismatch |
401 |
目標對象權利聲明在權杖驗證時失敗。 |
steps.jwt.JwtIssuerMismatch |
401 |
發出者權利聲明在權杖驗證時失敗。 |
steps.jwt.JwtSubjectMismatch |
401 |
主體宣告在權杖驗證時失敗。 |
steps.jwt.KeyIdMissing |
401 |
「驗證」政策會使用 JWKS 做為公開金鑰來源,但已簽署的 JWT 不會在標頭中加入 kid 屬性。 |
steps.jwt.KeyParsingFailed |
401 |
無法從指定的金鑰資訊剖析公開金鑰。 |
steps.jwt.NoAlgorithmFoundInHeader |
401 |
當 JWT 不含演算法標頭時,就會發生此錯誤。 |
steps.jwt.NoMatchingPublicKey |
401 |
驗證政策使用 JWKS 做為公開金鑰來源,但已簽署 JWT 中的 kid 並未列於 JWKS 中。 |
steps.jwt.SigningFailed |
401 |
在 GenerateJWT 中,金鑰小於 HS384 或 HS512 演算法的最小大小 |
steps.jwt.TokenExpired |
401 |
政策嘗試驗證已過期的權杖。 |
steps.jwt.TokenNotYetValid |
401 |
權杖尚未生效。 |
steps.jwt.UnhandledCriticalHeader |
401 |
crit 標頭中由「驗證 JWT」政策所找到的標頭,並未列在 KnownHeaders 中。 |
steps.jwt.UnknownException |
401 |
發生不明例外狀況。 |
steps.jwt.WrongKeyType |
401 |
指定的金鑰類型有誤。例如,如果您為橢圓曲線演算法指定 RSA 金鑰,或為 RSA 演算法指定曲線金鑰。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidNameForAdditionalClaim |
如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱是下列已註冊名稱之一:kid 、iss 、sub 、aud 、iat 、exp 、nbf 或 jti ,則部署作業會失敗。 |
build |
InvalidTypeForAdditionalClaim |
如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱不是 string 、number 、boolean 或 map 類型,則部署作業會失敗。 |
build |
MissingNameForAdditionalClaim |
如果在 <AdditionalClaims> 元素的子元素 <Claim> 中未指定權杖名稱,則部署作業會失敗。 |
build |
InvalidNameForAdditionalHeader |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的聲明名稱為 alg 或 typ ,就會發生此錯誤。 |
build |
InvalidTypeForAdditionalHeader |
如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱類型不是 string 、number 、boolean 或 map 類型,則部署作業會失敗。 |
build |
InvalidValueOfArrayAttribute |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中陣列屬性的值未設為 true 或 false ,就會發生這個錯誤。 |
build |
InvalidConfigurationForActionAndAlgorithm |
如果 <PrivateKey> 元素與 HS Family 演算法搭配使用,或是 <SecretKey> 元素與 RSA Family 演算法搭配使用,則部署作業會失敗。 |
build |
InvalidValueForElement |
如果 <Algorithm> 元素中指定的值不是支援的值,則部署作業會失敗。 |
build |
MissingConfigurationElement |
如果 <PrivateKey> 元素未與 RSA 系列演算法搭配使用,或 <SecretKey> 元素未與 HS 系列演算法搭配使用,就會發生這個錯誤。 |
build |
InvalidKeyConfiguration |
如果在 <PrivateKey> 或 <SecretKey> 元素中未定義子元素 <Value> ,則部署作業會失敗。 |
build |
EmptyElementForKeyConfiguration |
如果 <PrivateKey> 或 <SecretKey> 元素的子元素 <Value> 的 ref 屬性為空白或未指定,部署作業就會失敗。 |
build |
InvalidVariableNameForSecret |
如果 <PrivateKey> 或 <SecretKey> 元素的子元素 <Value> 在 ref 屬性中指定的資料流變數名稱不含私人前置字元 (private.) ,就會發生這個錯誤。 |
build |
InvalidSecretInConfig |
如果 <PrivateKey> 或 <SecretKey> 元素的子元素 <Value> 不含私人前置字串 (private.) ,就會發生這個錯誤。 |
build |
InvalidTimeFormat |
如果 <NotBefore> 元素中指定的值未使用支援的格式,則部署作業會失敗。 |
build |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "InvalidToken" |
JWT.failed |
所有 JWT 政策在失敗的情況下都會設定相同的變數。 | JWT.failed = true |
錯誤回應範例
針對錯誤處理,最佳做法是擷取錯誤回應的 errorcode
部分。請勿依賴 faultstring
中的文字,因為該文字可能會變更。
錯誤規則範例
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "InvalidToken")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>
JavaCallout 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.javacallout.ExecutionError |
500 |
發生於 Java 程式碼在執行 JavaCallout policy 時擲回例外狀況或傳回空值。 |
build |
部署錯誤
部署含有政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 錯誤字串 | HTTP 狀態 | 發生時機 |
---|---|---|---|
ResourceDoesNotExist |
Resource with name
[name] and type [type] does not exist |
不適用 | <ResourceURL> 元素中指定的檔案不存在。 |
JavaCalloutInstantiationFailed |
Failed to instantiate the JavaCallout Class [classname] |
不適用 | <ClassName> 元素中指定的類別檔案不在 JAR 中。 |
IncompatibleJavaVersion |
Failed to load java class [classname] definition due to - [reason] |
不適用 | 請參閱錯誤字串。支援的 Java 版本包括:Oracle JDK 7/8 和 OpenJDK 7/8 |
JavaClassNotFoundInJavaResource |
Failed to find the ClassName in java resource [jar_name] -
[class_name] |
不適用 | 請參閱錯誤字串。 |
JavaClassDefinitionNotFound |
Failed to load java class [class_name] definition due to - [reason] |
不適用 | 請參閱錯誤字串。 |
NoAppropriateConstructor |
No appropriate constructor found in JavaCallout class [class_name] |
不適用 | 請參閱錯誤字串。 |
NoResourceForURL |
Could not locate a resource with URL [string] |
不適用 | 請參閱錯誤字串。 |
錯誤變數
系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "ExecutionError" |
javacallout.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | javacallout.JC-GetUserData.failed = true |
錯誤回應範例
{ "fault":{ "faultstring":"Failed to execute JavaCallout. [policy_name]", "detail":{ "errorcode":"javacallout.ExecutionError" } } }
錯誤規則範例
<FaultRule name="JavaCalloutFailed"> <Step> <Name>AM-JavaCalloutError</Name> </Step> <Condition>(fault.name Matches "ExecutionError") </Condition> </FaultRule>
JavaScript 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.javascript.ScriptExecutionFailed |
500 |
JavaScript 政策可能會擲回多種不同類型的 ScriptExecutionFailed 錯誤。常見的錯誤類型包括 RangeError、ReferenceError、SyntaxError、TypeError 和 URIError。 |
build |
steps.javascript.ScriptExecutionFailedLineNumber |
500 |
JavaScript 程式碼中發生錯誤。詳情請參閱錯誤字串。 |
不適用 |
steps.javascript.ScriptSecurityError |
500 |
執行 JavaScript 時發生安全性錯誤。請參閱錯誤字串瞭解詳細資訊。 |
不適用 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidResourceUrlFormat |
如果 <ResourceURL> 中指定的資源網址格式或 JavaScript 政策的 <IncludeURL> 元素無效,API 代理程式就無法部署。 |
build |
InvalidResourceUrlReference |
如果 <ResourceURL> 或 <IncludeURL> 元素參照的 JavaScript 檔案不存在,API 代理程式就無法部署。參照的來源檔案必須位於 API 代理程式、環境或機構層級。 |
build |
WrongResourceType |
如果 JavaScript 政策的 <ResourceURL> 或 <IncludeURL> 元素參照 jsc (JavaScript 檔案) 以外的任何資源類型,就會在部署期間發生這個錯誤。 |
build |
NoResourceURLOrSource |
如果未宣告 <ResourceURL> 元素,或是未在該元素中定義資源網址,則 JavaScript 政策的部署作業可能會失敗,並顯示這項錯誤。<ResourceURL> 元素為必要元素。或者,您已宣告 <IncludeURL> 元素,但未在該元素中定義資源網址。<IncludeURL> 元素為選用元素,但如果已宣告,則必須在 <IncludeURL> 元素中指定資源網址。 |
build |
錯誤變數
當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "ScriptExecutionFailed" |
javascript.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | javascript.JavaScript-1.failed = true |
錯誤回應範例
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Javascript runtime error: "ReferenceError: "status" is not defined. (setresponse.js:6)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
錯誤規則範例
<FaultRule name="JavaScript Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition> </Step> <Condition>(javascript.JavaScript-1.failed = true) </Condition> </FaultRule>
JSONThreatProtection 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「 政策錯誤的相關資訊」和「 處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.jsonthreatprotection.ExecutionFailed |
500 |
JSONThreatProtection 政策可能會擲回多種不同類型的 ExecutionFailed 錯誤。大多數這類錯誤都是在政策中設定的特定門檻值超出時發生。這些錯誤類型包括:物件項目名稱長度、物件項目數量、陣列元素數量、容器深度、字串字串值長度。如果酬載包含無效的 JSON 物件,也會發生這個錯誤。 |
build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
如果 <Source> 元素中指定的 message 變數為下列任一情況,就會發生這個錯誤:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
如果 <Source> 元素設為非 message 類型的變數,就會發生這個錯誤。 |
build |
部署錯誤
無
錯誤變數
系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "SourceUnavailable" |
jsonattack.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | jsonattack.JTP-SecureRequest.failed = true |
錯誤回應範例
{ "fault": { "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
錯誤規則範例
<FaultRule name="JSONThreatProtection Policy Faults">
<Step>
<Name>AM-CustomErrorResponse</Name>
<Condition>(fault.name Matches "ExecutionFailed") </Condition>
</Step>
<Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>
JSONThreatProtection 政策類型定義了以下錯誤代碼:
JSONtoXML 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則來處理錯誤,就必須瞭解這項資訊。如需更多資訊,請參閱「 政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.jsontoxml.ExecutionFailed |
500 |
輸入酬載 (JSON) 為空白,或是傳遞至 JSON 至 XML 政策的輸入內容 (JSON) 無效或格式錯誤。 | build |
steps.jsontoxml.InCompatibleTypes |
500 |
如果 <Source> 元素和 <OutputVariable> 元素中定義的變數類型不一致,就會發生這項錯誤。<Source> 元素和 <OutputVariable> 元素中包含的變數類型必須一致。有效的類型為 message 和 string 。 |
build |
steps.jsontoxml.InvalidSourceType |
500 |
如果用來定義 <Source> 元素的變數類型無效,就會發生這個錯誤。有效的變數類型為 message 和 string 。 |
build |
steps.jsontoxml.OutputVariableIsNotAvailable |
500 |
如果 JSON 至 XML 政策的 <Source> 元素中指定的變數為字串類型,且未定義 <OutputVariable> 元素,就會發生這項錯誤。如果 <Source> 元素中定義的變數為字串類型,則必須使用 <OutputVariable> 元素。 |
build |
steps.jsontoxml.SourceUnavailable |
500 |
如果 JSON 到 XML 政策的 <Source> 元素中指定的 message 變數為下列任一情況,就會發生此錯誤:
|
build |
部署錯誤
無
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "SourceUnavailable" |
jsontoxml.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | jsontoxml.JSON-to-XML-1.failed = true |
錯誤回應範例
{ "fault": { "faultstring": "JSONToXML[JSON-to-XML-1]: Source xyz is not available", "detail": { "errorcode": "steps.json2xml.SourceUnavailable" } } }
錯誤規則範例
<FaultRule name="JSON To XML Faults"> <Step> <Name>AM-SourceUnavailableMessage</Name> <Condition>(fault.name Matches "SourceUnavailable") </Condition> </Step> <Step> <Name>AM-BadJSON</Name> <Condition>(fault.name = "ExecutionFailed")</Condition> </Step> <Condition>(jsontoxml.JSON-to-XML-1.failed = true) </Condition> </FaultRule>
KeyValueMapOperations 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則來處理錯誤,就必須瞭解這項資訊。如需更多資訊,請參閱「 政策錯誤的相關資訊」和「 處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.keyvaluemapoperations.UnsupportedOperationException |
500 |
如果在 |
build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidIndex |
如果 KeyValueMapOperations 政策的 <Get> 元素中指定的 index 屬性為零或負數,則 API Proxy 的部署作業會失敗。索引會從 1 開始,因此索引為零或負整數會視為無效。 |
build |
KeyIsMissing |
如果 <Key> 元素完全缺少,或是 <Parameter> 元素缺少 KeyValueMapOperations 政策 <InitialEntries> 元素 <Entry> 下方的 <Key> 元素,就會發生這個錯誤。 |
build |
ValueIsMissing |
如果 KeyValueMapOperations 政策的 <InitialEntries> 元素 <Entry> 元素下方缺少 <Value> 元素,就會發生這項錯誤。 |
build |
MessageLogging 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.messagelogging.StepDefinitionExecutionFailed |
500 |
請參閱錯誤字串。 |
steps.messagelogging.InvalidGoogleCloudLogName |
500 |
如果 LogName 的評估結果不是有效的格式 (projects/{project}/logs/{logid}),就會擲回此錯誤。 |
steps.messagelogging.InvalidJsonMessage |
500 |
如果您選擇將 contentType 屬性值設為 application/json ,但實際訊息值並非有效的 JSON 字串,系統就會擲回此錯誤。 |
steps.messagelogging.TooManyPendingLoggingRequest |
500 |
如果有超過 2500 個待處理的請求尚未寫入 Cloud Logging,系統就會擲回這個錯誤。每個 Apigee 執行階段 Pod 的限制為 2500。舉例來說,如果流量會分配至兩個 Apigee 執行階段 Pod 的執行個體,則有效限制為 5000 個要求。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidProtocol |
如果 <Protocol> 元素中指定的通訊協定無效,部署 MessageLogging 政策可能會失敗,並顯示這項錯誤。有效的通訊協定為 TCP 和 UDP。如要透過 TLS/SSL 傳送 Syslog 訊息,則僅支援 TCP。 |
build |
InvalidPort |
如果 <Port> 元素中未指定埠號碼,或該埠號碼無效,則部署 MessageLogging 政策可能會失敗,並顯示這項錯誤。通訊埠號碼必須是大於零的整數。 |
build |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "StepDefinitionExecutionFailed" |
messagelogging.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | messagelogging.ML-LogMessages.failed = true |
錯誤回應範例
{ "fault":{ "detail":{ "errorcode":"steps.messagelogging.StepDefinitionExecutionFailed" }, "faultstring":"Execution failed" } }
錯誤規則範例
<FaultRule name="MessageLogging"> <Step> <Name>ML-LogMessages</Name> <Condition>(fault.name Matches "StepDefinitionExecutionFailed") </Condition> </Step> <Condition>(messagelogging.ML-LogMessages.failed = true) </Condition> </FaultRule>
OASValidation 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.oasvalidation.Failed |
400 |
無法根據提供的 OpenAPI 規格驗證要求訊息主體。 |
steps.oasvalidation.Failed |
500 |
系統無法根據提供的 OpenAPI 規格驗證回應訊息主體。 |
steps.oasvalidation.SourceMessageNotAvailable |
500 |
政策的 |
steps.oasvalidation.NonMessageVariable |
500 |
|
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | |
---|---|---|
ResourceDoesNotExist |
<OASResource> 元素中參照的 OpenAPI 規範不存在。
|
|
ResourceCompileFailed |
部署中包含的 OpenAPI 規格含有錯誤,導致無法編譯。這通常表示規範並非正確格式的 OpenAPI 規格 3.0。 | |
BadResourceURL |
系統無法處理 <OASResource> 元素中參照的 OpenAPI 規格。如果檔案不是 JSON 或 YAML 檔案,或是未正確指定檔案網址,就可能發生這種情況。 |
錯誤變數
當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 說明 | 範例 |
---|---|---|
fault.category |
錯誤類別。當政策拒絕要求時,這項值一律會保留 Step 。 |
fault.category = "Step" |
fault.name |
錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "ResourceDoesNotExist" |
fault.reason |
錯誤的原因。這是使用者容易理解的字串,用來說明錯誤原因。 | OASValidation OAS-1 with resource "oas://my-spec1.yaml": failed with reason: "[ERROR - POST operation not allowed on path '/persons/13'.: []]" |
fault.subcategory |
錯誤的子類別。當政策拒絕要求時,這項值一律會保留 OASValidationFailure 。 |
fault.subcategory = "OASValidationFailure" |
OASValidation.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | OASValidation.myoaspolicy.failed = true |
PopulateCache 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 發生時機 |
---|---|---|
policies.populatecache.EntryCannotBeCached |
500 |
無法快取項目。快取的訊息物件並非可序列化的類別例項。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidCacheResourceReference |
如果 PopulateCache 政策中的 <CacheResource> 元素設為在部署 API Proxy 的環境中不存在的名稱,就會發生這個錯誤。 |
build |
CacheNotFound |
<CacheResource> 元素中指定的快取不存在。 |
build |
錯誤變數
系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name = "EntryCannotBeCached" |
populatecache.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | populatecache.POP-CACHE-1.failed = true |
錯誤回應範例
{ "fault": { "faultstring": "[entry] can not be cached. Only serializable entries are cached.", "detail": { "errorcode": "steps.populatecache.EntryCannotBeCached" } } }
錯誤規則範例
<FaultRule name="Populate Cache Fault"> <Step> <Name>AM-EntryCannotBeCached</Name> <Condition>(fault.name Matches "EntryCannotBeCached") </Condition> </Step> <Condition>(populatecache.POP-CACHE-1.failed = true) </Condition> </FaultRule>
LookupCache 政策
本節將說明在政策觸發錯誤時,系統會設定的錯誤訊息和流程變數。如果您要為 Proxy 開發錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
錯誤代碼前置字串
不適用
執行階段錯誤
這項政策不會擲回任何執行階段錯誤。
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidCacheResourceReference |
如果 <CacheResource> 元素設為在部署 API Proxy 的環境中不存在的名稱,就會發生這個錯誤。 |
build |
InvalidTimeout |
如果 <CacheLookupTimeoutInSeconds> 元素設為負數,API 代理程式就會部署失敗。 |
build |
CacheNotFound |
如果未在特定的 Message Processor 元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。 | build |
錯誤變數
不適用
錯誤回應範例
不適用
InvalidateCache 政策
本節將說明在政策觸發錯誤時,系統會設定的錯誤訊息和流程變數。如果您要為 Proxy 開發錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
錯誤代碼前置字串
不適用
執行階段錯誤
這項政策不會擲回任何執行階段錯誤。
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidCacheResourceReference |
如果 InvalidateCache 政策中的 <CacheResource> 元素設為在部署 API Proxy 的環境中不存在的名稱,就會發生這個錯誤。 |
build |
CacheNotFound |
如果未在特定的 Message Processor 元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。 | build |
錯誤變數
不適用
錯誤回應範例
不適用
ResponseCache 政策
本節將說明在政策觸發錯誤時,系統會設定的錯誤訊息和流程變數。如果您要為 Proxy 開發錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
錯誤代碼前置字串
不適用
執行階段錯誤
這項政策不會擲回任何執行階段錯誤。
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidTimeout |
如果 ResponseCache 政策的 <CacheLookupTimeoutInSeconds> 元素設為負數,API Proxy 的部署作業就會失敗。 |
build |
InvalidCacheResourceReference |
如果 ResponseCache 政策中的 <CacheResource> 元素設為在部署 API Proxy 的環境中不存在的名稱,就會發生這個錯誤。 |
build |
ResponseCacheStepAttachmentNotAllowedReq |
如果在 API Proxy 的任何流程中,將相同的 ResponseCache 政策附加至多個要求路徑,就會發生這個錯誤。 |
build |
ResponseCacheStepAttachmentNotAllowedResp |
如果在 API Proxy 的任何流程中,將相同的 ResponseCache 政策附加至多個回應路徑,就會發生這個錯誤。 |
build |
InvalidMessagePatternForErrorCode |
如果 ResponseCache 政策中的 <SkipCacheLookup> 或 <SkipCachePopulation> 元素含有無效條件,就會發生這個錯誤。 |
build |
CacheNotFound |
如果未在特定的 Message Processor 元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。 | build |
錯誤變數
不適用
錯誤回應範例
不適用
OAuthV2 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 由作業擲回 |
---|---|---|---|
steps.oauth.v2.access_token_expired |
401 |
存取權杖已過期。 |
|
steps.oauth.v2.access_token_not_approved |
401 |
已撤銷存取權杖。 | VerifyAccessToken |
steps.oauth.v2.apiproduct_doesnot_exist |
401 |
要求的 API 產品不在與存取權杖相關聯的任何 API 產品中。 | VerifyAccessToken |
steps.oauth.v2.FailedToResolveAccessToken |
500 |
政策預期在 <AccessToken> 元素中指定的變數中找到存取權存證,但無法解析該變數。 |
GenerateAccessToken |
steps.oauth.v2.FailedToResolveAuthorizationCode |
500 |
政策預期會在 <Code> 元素中指定的變數中找到授權碼,但無法解析該變數。 |
GenerateAuthorizationCode |
steps.oauth.v2.FailedToResolveClientId |
500 |
政策預期會在 <ClientId> 元素中指定的變數中找到用戶端 ID,但無法解析該變數。 |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
steps.oauth.v2.FailedToResolveRefreshToken |
500 |
政策預期會在 <RefreshToken> 元素中指定的變數中找到重新整理權杖,但無法解析該變數。 |
RefreshAccessToken |
steps.oauth.v2.FailedToResolveToken |
500 |
政策預期會在 <Tokens> 元素中指定的變數中找到符記,但無法解析該變數。 |
|
steps.oauth.v2.InsufficientScope |
403 | 要求中提供的存取權權杖範圍與驗證存取權權杖政策中指定的範圍不符。如要瞭解範圍,請參閱「使用 OAuth2 範圍」。 | VerifyAccessToken |
steps.oauth.v2.invalid_client |
401 |
當政策的 |
GenerateAccessToken RefreshAccessToken |
steps.oauth.v2.InvalidRequest |
400 | 這個錯誤名稱用於多種不同類型的錯誤,通常是指在要求中傳送的參數遺漏或錯誤。如果 <GenerateResponse> 設為 false ,請使用錯誤變數 (如下所述) 擷取錯誤的詳細資料,例如錯誤名稱和原因。 |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
steps.oauth.v2.InvalidAccessToken |
401 |
授權標頭中沒有 Bearer 字詞,但這是必要的。例如:Authorization: Bearer your_access_token |
VerifyAccessToken |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
目前執行的 API 代理程式或作業不在與存取權杖相關聯的產品中。 提示:請確認與存取權杖相關聯的產品已正確設定。舉例來說,如果您在資源路徑中使用萬用字元,請確認萬用字元使用正確。詳情請參閱「 管理 API 產品」。 如需有關此錯誤原因的更多指引,請參閱 OAuth 2.0 存取權憑證驗證會擲回「找不到相符的 API 產品,因此 API 呼叫無效」錯誤訊息。 |
VerifyAccessToken |
steps.oauth.v2.InvalidClientIdentifier |
500 |
如果政策的 |
|
steps.oauth.v2.InvalidParameter |
500 |
政策必須指定存取權存證或授權碼,但不能同時指定兩者。 | GenerateAuthorizationCode GenerateAccessTokenImplicitGrant |
steps.oauth.v2.InvalidTokenType |
500 |
<Tokens>/<Token> 元素需要您指定符記類型 (例如 refreshtoken )。如果用戶端傳遞的類型有誤,系統就會擲回這個錯誤。 |
ValidateToken InvalidateToken |
steps.oauth.v2.MissingParameter |
500 |
回應類型為 token ,但未指定授權類型。 |
GenerateAuthorizationCode GenerateAccessTokenImplicitGrant |
steps.oauth.v2.UnSupportedGrantType |
500 |
用戶端指定的授權類型不受政策支援 (未列於 |
GenerateAccessToken GenerateAuthorizationCode GenerateAccessTokenImplicitGrant RefreshAccessToken |
JWT 權杖專屬的執行階段錯誤
JWT 驗證權杖流程的執行階段錯誤代碼和說明取決於 OAuth2 流程內容:
- 如果流程內容是權杖產生或更新,請參閱下方的 JWT 權杖產生和更新流程的錯誤代碼。
- 如需瞭解權杖驗證流程,請參閱下方的「權杖驗證流程錯誤代碼」。
JWT 權杖產生和重新整理流程的錯誤代碼
對於產生或更新 JWT 權杖的 OAuth2 流程,錯誤回應會遵循 RFC6749 中指定的錯誤回應。詳情請參閱「第 5.2 節:錯誤回應」。
權杖驗證流程的錯誤代碼
下表列出的錯誤代碼僅適用於 VerifyAccessToken 作業。
錯誤代碼 | HTTP 狀態 | 原因 | 由作業擲回 |
---|---|---|---|
oauth.v2.JWTSigningFailed |
401 |
政策無法為 JWT 簽署。 |
|
oauth.v2.InvalidValueForJWTAlgorithm |
401 |
當 JWT 存取權杖中沒有演算法,或系統不支援該值時,就會發生這種情況。 |
|
oauth.v2.InsufficientKeyLength |
401 |
在產生 JWT 時,如果金鑰小於 HS384 或 HS512 演算法的最小大小 |
|
oauth.v2.JWTAlgorithmMismatch |
401 |
產生政策中指定的演算法與驗證政策中預期的演算法不符。指定的演算法必須相符。 |
|
oauth.v2.JWTDecodingFailed |
401 |
政策無法解碼 JWT。JWT 可能已損毀。 |
|
oauth.v2.MissingMandatoryClaimsInJWT |
401 |
當 Jwt 存取權杖中未提供必要的聲明時,就會發生 |
|
oauth.v2.InvalidJWTSignature |
401 |
當無法驗證 JWT 存取權杖的簽名,或簽名無效時,就會發生這種情況。 |
|
oauth.v2.InvalidTypeInJWTHeader |
401 |
當 JWT 類型不是 at+Jwt 時,就會發生 |
|
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 |
---|---|
InvalidValueForExpiresIn |
對於 |
InvalidValueForRefreshTokenExpiresIn |
對於 <RefreshTokenExpiresIn> 元素,有效值為正整數。 |
InvalidGrantType |
<SupportedGrantTypes> 元素中指定了無效的授權類型。如需有效類型的清單,請參閱政策參考資料。 |
ExpiresInNotApplicableForOperation |
請確認 <Operations> 元素中指定的作業支援到期日。例如,VerifyToken 運算不會。 |
RefreshTokenExpiresInNotApplicableForOperation |
請確認 <Operations> 元素中指定的作業支援權杖到期日更新功能。例如,VerifyToken 作業就沒有。 |
GrantTypesNotApplicableForOperation |
請確認 <SupportedGrantTypes> 中指定的授權類型支援指定的作業。 |
OperationRequired |
您必須使用 |
InvalidOperation |
您必須使用 |
TokenValueRequired |
您必須在 <Tokens> 元素中指定符記 <Token> 值。 |
JWT 權杖專屬部署錯誤
這些部署錯誤僅適用於使用 JWT 權杖運算的政策。
錯誤名稱 | 原因 |
---|---|
InvalidValueForAlgorithm |
<Algorithm> 元素中指定的演算法不在可用演算法清單中,或不存在。 |
MissingKeyConfiguration |
缺少必要的 <SecretKey> 、<PrivateKey> 或 <PublicKey> 元素,具體取決於使用的演算法。 |
EmptyValueElementForKeyConfiguration |
必要的子元素 <Value> 未在 <PrivateKey> 、<PublicKey> 或 <SecretKey> 元素中定義 |
InvalidKeyConfiguration |
<PrivateKey> 元素未與 RSA 家族演算法搭配使用,或 <SecretKey> 元素未與 HS 家族演算法搭配使用。 |
EmptyRefAttributeForKeyconfiguration |
<PrivateKey> 、<PublicKey> 或 <SecretKey> 元素的子元素 <Value> 的 ref 屬性為空白。 |
InvalidVariableNameForKey |
<PrivateKey> 、<PublicKey> 或 <SecretKey> 元素子項元素 <Value> 的 ref 屬性中指定的流程變數名稱不含 private 前置字元。 |
錯誤變數
當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name = "InvalidRequest" |
oauthV2.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.GenerateAccesstoken.failed = true |
oauthV2.policy_name.fault.name |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.GenerateAccesstoken.fault.name = InvalidRequest
|
oauthV2.policy_name.fault.cause |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.GenerateAccesstoken.cause = Required param : grant_type |
錯誤回應範例
如果 <GenerateResponse>
元素為 true,這些回應會傳回給用戶端。
如果 <GenerateResponse>
為 true,則政策會針對產生符記和代碼的作業,以此格式傳回錯誤。如需完整清單,請參閱 OAuth HTTP 錯誤回應參考資料。
{"ErrorCode" : "invalid_client", "Error" :"ClientId is Invalid"}
如果 <GenerateResponse>
為 true,政策會以此格式傳回錯誤,用於驗證和驗證作業。如需完整清單,請參閱 OAuth HTTP 錯誤回應參考資料。
{ { "fault":{ "faultstring":"Invalid Access Token", "detail":{ "errorcode":"keymanagement.service.invalid_access_token" } } }
錯誤規則範例
<FaultRule name="OAuthV2 Faults"> <Step> <Name>AM-InvalidClientResponse</Name> <Condition>(fault.name = "invalid_client") OR (fault.name = "InvalidClientIdentifier")</Condition> </Step> <Step> <Name>AM-InvalidTokenResponse</Name> <Condition>(fault.name = "invalid_access_token")</Condition> </Step> <Condition>(oauthV2.failed = true) </Condition> </FaultRule>
GetOAuthV2Info 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。下方顯示的錯誤名稱是發生錯誤時,指派給 fault.name
變數的字串。詳情請參閱下方的「錯誤變數」一節。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.oauth.v2.access_token_expired |
500 |
傳送至政策的存取權權杖已過期。 |
steps.oauth.v2.authorization_code_expired |
500 |
傳送至政策的授權碼已過期。 |
steps.oauth.v2.invalid_access_token |
500 |
傳送至政策的存取權杖無效。 |
steps.oauth.v2.invalid_client-invalid_client_id |
500 |
傳送至政策的客戶端 ID 無效。 |
steps.oauth.v2.invalid_refresh_token |
500 |
傳送至政策的更新權杖無效。 |
steps.oauth.v2.invalid_request-authorization_code_invalid |
500 |
傳送至政策的授權碼無效。 |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 | 如要瞭解如何排解此錯誤,請參閱「 Oauth2.0 存取權杖驗證會擲回「找不到相符的 apiproduct,因此 API 呼叫無效」錯誤」一文。 |
steps.oauth.v2.refresh_token_expired |
500 |
傳送至政策的更新權杖已過期。 |
部署錯誤
請參閱 UI 中回報的訊息,瞭解部署錯誤。
錯誤變數
當這項政策在執行階段觸發錯誤時,系統會設定這些變數。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "IPDeniedAccess" |
oauthV2.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.GetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.GetToKenInfo.fault.name = invalid_client-invalid_client_id |
oauthV2.policy_name.fault.cause |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.GetTokenInfo.cause = ClientID is Invalid |
錯誤回應範例
{ "fault":{ "faultstring":"ClientId is Invalid", "detail":{ "errorcode":"keymanagement.service.invalid_client-invalid_client_id" } } }
錯誤規則範例
<FaultRule name="OAuthV2 Faults"> <Step> <Name>AM-InvalidClientIdResponse</Name> </Step> <Condition>(fault.name = "invalid_client-invalid_client_id")</Condition> </FaultRule>
SetOAuthV2Info 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.oauth.v2.access_token_expired |
500 |
傳送至政策的存取權權杖已過期。 |
steps.oauth.v2.invalid_access_token |
500 |
傳送至政策的存取權杖無效。 |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
如要瞭解如何排解這項錯誤,請參閱 「Oauth2.0 存取權杖驗證會擲回『找不到相符的 apiproduct,因此 API 呼叫無效』錯誤」一文。 |
部署錯誤
請參閱 UI 中回報的訊息,瞭解部署錯誤。
錯誤變數
當這項政策在執行階段觸發錯誤時,系統會設定這些變數。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name = "invalid_access_token" |
oauthV2.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.SetTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.SetTokenInfo.fault.name = invalid_access_token |
oauthv2.policy_name.fault.cause |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.SetTokenInfo.cause = Invalid Access Token |
錯誤回應範例
{ "fault": { "faultstring": "Invalid Access Token", "detail": { "errorcode": "keymanagement.service.invalid_access_token" } } }
錯誤規則範例
<FaultRule name=SetOAuthV2Info Faults"> <Step> <Name>AM-InvalidTokenResponse</Name> <Condition>(fault.name = "invalid_access_token")</Condition> </Step> <Condition>(oauthV2.failed = true) </Condition> </FaultRule>
DeleteOAuthV2Info 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.oauth.v2.invalid_access_token |
401 |
傳送至政策的存取權杖無效。 |
steps.oauth.v2.invalid_request-authorization_code_invalid |
401 |
傳送至政策的授權碼無效。 |
steps.oauth.v2.InvalidAPICallAsNoApiProductMatchFound |
401 |
如要進一步瞭解如何排解這項錯誤,請參閱「 Oauth2.0 存取權杖驗證會擲回「找不到 apiproduct 相符項目,因此 API 呼叫無效」錯誤」。 |
部署錯誤
請參閱 UI 中回報的訊息,瞭解部署錯誤。
錯誤變數
當這項政策在執行階段觸發錯誤時,系統會設定這些變數。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name = "invalid_access_token" |
oauthV2.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.DeleteTokenInfo.failed = true |
oauthV2.policy_name.fault.name |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.DeleteTokenInfo.fault.name = invalid_access_token |
oauthv2.policy_name.fault.cause |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.DeleteTokenInfo.cause = Invalid Access Token |
錯誤回應範例
{ "fault": { "faultstring": "Invalid Access Token", "detail": { "errorcode": "keymanagement.service.invalid_access_token" } } }
錯誤規則範例
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="DeleteOAuthV2Info_Faults"> <Step> <Name>AM-InvalidTokenResponse</Name> </Step> <Condition>(fault.name = "invalid_access_token")</Condition> </FaultRule>
PythonScript 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.script.ScriptEvaluationFailed |
500 |
PythonScript 政策可能會擲回幾種不同類型的 ScriptExecutionFailed 錯誤。常見的錯誤類型包括 NameError 和 ZeroDivisionError。 | build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidResourceUrlFormat |
如果 <ResourceURL> 中指定的資源網址格式或 PythonScript 政策的 <IncludeURL> 元素無效,API Proxy 的部署作業就會失敗。 |
build |
InvalidResourceUrlReference |
如果 <ResourceURL> 或 <IncludeURL> 元素參照不存在的 PythonScript 檔案,API 代理程式會無法部署。參照的來源檔案必須位於 API 代理程式、環境或機構層級。 |
build |
錯誤變數
當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "ScriptExecutionFailed" |
pythonscript.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | pythonscript.PythonScript-1.failed = true |
錯誤回應範例
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Pythonscript runtime error: "ReferenceError: "status" is not defined.\"", "detail": { "errorcode": "steps.script.ScriptExecutionFailed" } } }
錯誤規則範例
<FaultRule name="PythonScript Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition> </Step> <Condition>(pythonscript.PythonScript-1.failed = true) </Condition> </FaultRule>
配額政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference |
500 |
如果 Quota 政策中未定義 <Interval> 元素,就會發生這個錯誤。此元素為必填項目,用於指定適用於配額的時間間隔。時間間隔可以是分鐘、小時、天、週或月,這取決於您使用 <TimeUnit> 元素定義的項目。 |
build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference |
500 |
如果 Quota 政策中未定義 <TimeUnit> 元素,就會發生這個錯誤。此元素為必填項目,用於指定適用於配額的時間單位。時間間隔可以以分鐘、小時、天、週或月為單位。 |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
如果透過流程變數指定的 <MessageWeight> 元素值無效 (非整數值),就會發生此錯誤。 |
build |
policies.ratelimit.QuotaViolation |
500 |
超過配額限制。 | 不適用 |
部署錯誤
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidQuotaInterval |
如果 <Interval> 元素中指定的配額間隔不是整數,API 代理程式就會部署失敗。舉例來說,如果在 <Interval> 元素中指定的配額間隔為 0.1,則 API 代理程式會部署失敗。 |
build |
InvalidQuotaTimeUnit |
如果 <TimeUnit> 元素中指定的時間單位不支援,API 代理程式就會部署失敗。支援的時間單位為 minute 、hour 、day 、week 和 month 。 |
build |
InvalidQuotaType |
如果 <Quota> 元素中 type 屬性指定的配額類型無效,API Proxy 的部署作業就會失敗。支援的配額類型為 default 、calendar 、flexi 和 rollingwindow 。 |
build |
InvalidStartTime |
如果 <StartTime> 元素中指定的時間格式無效,API Proxy 的部署作業就會失敗。有效格式為 yyyy-MM-dd HH:mm:ss ,也就是 ISO 8601 日期和時間格式。舉例來說,如果 <StartTime> 元素中指定的時間為 7-16-2017 12:00:00 ,則 API Proxy 的部署作業會失敗。 |
build |
StartTimeNotSupported |
如果指定的 <StartTime> 元素配額類型不是 calendar 類型,則 API Proxy 的部署作業會失敗。<StartTime> 元素僅支援 calendar 配額類型。舉例來說,如果 type 屬性在 <Quota> 元素中設為 flexi 或 rolling window ,則 API Proxy 的部署作業會失敗。 |
build |
InvalidTimeUnitForDistributedQuota |
如果 <Distributed> 元素設為 true ,而 <TimeUnit> 元素設為 second ,則 API Proxy 的部署作業會失敗。時間單位 second 不適用於分散配額。 |
build |
InvalidSynchronizeIntervalForAsyncConfiguration |
如果 Quota 政策中 <AsynchronousConfiguration> 元素內 <SyncIntervalInSeconds> 元素指定的值小於零,則 API Proxy 的部署作業會失敗。 |
build |
InvalidAsynchronizeConfigurationForSynchronousQuota |
如果 <AsynchronousConfiguration> 元素的值在 Quota 政策中設為 true ,且該政策也使用 <AsynchronousConfiguration> 元素定義非同步設定,則 API Proxy 的部署作業會失敗。 |
build |
錯誤變數
系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "QuotaViolation" |
ratelimit.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | ratelimit.QT-QuotaPolicy.failed = true |
錯誤回應範例
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.QuotaViolation" }, "faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default" } }
錯誤規則範例
<FaultRules> <FaultRule name="Quota Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "QuotaViolation") </Condition> </Step> <Condition>ratelimit.Quota-1.failed=true</Condition> </FaultRule> </FaultRules>
ResetQuota 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
policies.resetquota.InvalidRLPolicy |
500 |
ResetQuota 政策的 <Quota> 元素中指定的 Quota 政策並未在 API Proxy 中定義,因此在流程中無法使用。<Quota> 元素為必要元素,可識別目標 Quota 政策,其計數器應透過 ResetQuota 政策更新。 |
build |
policies.resetquota.FailedToResolveAllowCountRef |
不適用 | 政策 <Allow> 元素中含有允許計數的變數參照無法解析為值。此元素為必要元素,可指定減少配額計數器的金額。 |
build |
policies.resetquota.FailedToResolveRLPolicy |
500 |
無法解析 <Quota> 元素中 ref 屬性參照的變數。 |
build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidCount |
如果 ResetQuota 政策的 <Allow> 元素中指定的計數值不是整數,則 API 代理程式會部署失敗。 |
build |
RaiseFaultpolicy
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「 政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.raisefault.RaiseFault |
500 |
請參閱錯誤字串。 |
部署錯誤
無
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱 政策錯誤須知事項。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一部分。 | fault.name = "RaiseFault" |
raisefault.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | raisefault.RF-ThrowError.failed = true |
錯誤回應範例
{ "fault":{ "detail":{ "errorcode":"steps.raisefault.RaiseFault" }, "faultstring":"Raising fault. Fault name: [name]" } }
RegularExpressionProtection 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和訊息,以及設定的錯誤變數。如果您要開發錯誤處理規則來處理錯誤,就必須瞭解這項資訊。如果您想擷取錯誤並自行提出自訂錯誤,請在政策根元素上設定 continueOnError="true"
屬性。如需更多資訊,請參閱「
政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | 訊息 |
---|---|
ExecutionFailed |
Failed to execute the RegularExpressionProtection StepDefinition {0}. Reason: {1} |
InstantiationFailed |
Failed to instantiate the RegularExpressionProtection StepDefinition {0} |
NonMessageVariable |
Variable {0} does not resolve to a Message |
SourceMessageNotAvailable |
{0} message is not available for RegularExpressionProtection StepDefinition {1} |
ThreatDetected |
Regular Expression Threat Detected in {0}: regex: {1} input: {2} |
VariableResolutionFailed |
Failed to resolve variable {0} |
部署錯誤
錯誤代碼 | 訊息 | 修正 |
---|---|---|
CannotBeConvertedToNodeset |
RegularExpressionProtection {0}: Result of xpath {1} cannot be converted to nodeset.
Context {2} |
build |
DuplicatePrefix |
RegularExpressionProtection {0}: Duplicate prefix {1} |
build |
EmptyJSONPathExpression |
RegularExpressionProtection {0}: Empty JSONPath expression |
build |
EmptyXPathExpression |
RegularExpressionProtection {0}: Empty XPath expression |
build |
InvalidRegularExpression |
RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2} |
build |
JSONPathCompilationFailed |
RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2} |
build |
NONEmptyPrefixMappedToEmptyURI |
RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty
uri |
build |
NoPatternsToEnforce |
RegularExpressionProtection {0}: No patterns to enforce in {1} |
build |
NothingToEnforce |
RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header,
FormParam, XMLPayload, JSONPayload is mandatory |
build |
XPathCompilationFailed |
RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2} |
build |
錯誤變數
系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上表所列。 | fault.name Matches "ThreatDetected" |
regularexpressionprotection.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | regularexpressionprotection.Regular-Expressions-Protection-1.failed = true |
SAMLAssertion 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
SourceNotConfigured |
ValidateSAMLAssertion 政策中未定義或為空白的 <Source> 、<XPath> 、<Namespaces> 和 <Namespace> 等一或多個元素。 |
build |
TrustStoreNotConfigured |
如果 <TrustStore> 元素為空白,或是未在 ValidateSAMLAssertion 政策中指定,則 API 代理程式部署作業會失敗。必須提供有效的信任存放區。
|
build |
NullKeyStoreAlias |
如果子元素 <Alias> 為空白,或是未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,則 API 代理程式會部署失敗。必須提供有效的鍵庫別名。
|
build |
NullKeyStore |
如果子元素 <Name> 為空白,或是未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,則 API 代理程式會部署失敗。請提供有效的鍵值庫名稱。
|
build |
NullIssuer |
如果 <Issuer> 元素為空白,或是未在 GenerateSAMLAssertion 政策中指定,則 API 代理程式部署作業會失敗。必須提供有效的 <Issuer> 值。 |
build |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤的名稱。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name = "InvalidMediaTpe" |
GenerateSAMLAssertion.failed |
如果是有效的 SAML 斷言政策設定,錯誤前置字會是 ValidateSAMLAssertion 。 |
GenerateSAMLAssertion.failed = true |
錯誤回應範例
{ "fault": { "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type", "detail": { "errorcode": "steps.saml.generate.InvalidMediaTpe" } } }
錯誤規則範例
<FaultRules> <FaultRule name="invalid_saml_rule"> <Step> <Name>invalid-saml</Name> </Step> <Condition>(GenerateSAMLAssertion.failed = "true")</Condition> </FaultRule> </FaultRules>
ServiceCallout 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.servicecallout.ExecutionFailed |
500 |
發生這個錯誤的原因可能如下:
|
build |
steps.servicecallout.RequestVariableNotMessageType |
500 |
政策中指定的 Request 變數不是 Message 類型。舉例來說,如果是字串或其他非訊息類型,您就會看到這項錯誤。 |
build |
steps.servicecallout.RequestVariableNotRequestMessageType |
500 |
政策中指定的 Request 變數不是 RequestMessage 類型。舉例來說,如果是回應類型,您會看到這則錯誤訊息。 |
build |
googletoken.EmptyIDTokenAudience |
500 |
|
|
messaging.adaptors.http.filter.GoogleTokenGenerationFailure |
500 |
如果 API Proxy 是使用 <Authentication> 元素進行設定,就可能發生此錯誤。可能的原因包括:
<GoogleAccessToken> 元素,且提供一或多個無效範圍。例如,檢查是否有錯字或空白範圍。
僅限 Apigee hybrid:請檢查執行階段容器的記錄,並搜尋 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
URLMissing |
<HTTPTargetConnection> 內部缺少或空白 <URL> 元素。 |
build |
ConnectionInfoMissing |
如果政策沒有 <HTTPTargetConnection> 或 <LocalTargetConnection> 元素,就會發生這項錯誤。 |
build |
InvalidTimeoutValue |
如果 <Timeout> 值為負數或零,就會發生這個錯誤。 |
build |
FAILED_PRECONDITION |
如果使用 <Authentication> 標記設定 Proxy 時缺少服務帳戶,就會發生這個錯誤。 例如: Deployment of \"organizations/foo/apis/apiproxy/revisions/1\" requires a service account identity, but one was not provided with the request. |
|
PERMISSION_DENIED |
如果 Proxy 是使用 <Authentication> 標記設定,而服務帳戶有權限問題,就會發生這個錯誤。可能的原因:
|
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name = "RequestVariableNotMessageType" |
servicecallout.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | servicecallout.SC-GetUserData.failed = true |
錯誤回應範例
{ "fault":{ "detail":{ "errorcode":"steps.servicecallout.RequestVariableNotMessageType" }, "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]: request variable data_str value is not of type Message" } }
錯誤規則範例
<FaultRule name="RequestVariableNotMessageType"> <Step> <Name>AM-RequestVariableNotMessageType</Name> </Step> <Condition>(fault.name = "RequestVariableNotMessageType")</Condition> </FaultRule>
SOAPMessageValidation 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.messagevalidation.SourceMessageNotAvailable |
500 |
如果政策的
|
build |
steps.messagevalidation.NonMessageVariable |
500 |
如果 SOAPMessageValidation 政策中的 訊息類型變數代表整個 HTTP 要求和回應。內建的 Apigee 流程變數 |
build |
steps.messagevalidation.Failed |
500 | 如果 SOAPMessageValidation 政策無法根據 XSD 結構定義或 WSDL 定義驗證輸入訊息酬載,就會發生這項錯誤。如果酬載訊息中含有格式不正確的 JSON 或 XML,也會發生這個問題。 | build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidResourceType |
SOAPMessageValidation 政策中的 <ResourceURL> 元素設為政策不支援的資源類型。 |
build |
ResourceCompileFailed |
SOAPMessageValidation 政策的 <ResourceURL> 元素中參照的資源指令碼含有錯誤,導致無法編譯。 |
build |
RootElementNameUnspecified |
SOAPMessageValidation 政策中的 <Element> 元素不含根元素名稱。 |
build |
InvalidRootElementName |
SOAPMessageValidation 政策中的 <Element> 元素包含根元素名稱,但該名稱不符合有效元素命名方式的 XML 規則。 |
build |
SpikeArrest 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
policies.ratelimit.FailedToResolveSpikeArrestRate |
500 |
如果無法將 <Rate> 元素中含有費率設定的變數參照解析為 SpikeArrest 政策中的值,就會發生此錯誤。此元素為必填項目,用於以 intpm 或 intps 的形式指定尖峰偵測率。 |
build |
policies.ratelimit.InvalidMessageWeight |
500 |
如果透過流程變數為 <MessageWeight> 元素指定的值無效 (非整數值),就會發生這個錯誤。 |
build |
policies.ratelimit.SpikeArrestViolation |
429 |
超過頻率限制。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidAllowedRate |
如果 SpikeArrest 政策的 <Rate> 元素中指定的尖峰停止率不是整數,或是該率沒有使用 ps 或 pm 做為尾碼,則 API 代理程式會部署失敗。 |
build |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一部分。 | fault.name Matches "SpikeArrestViolation" |
ratelimit.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | ratelimit.SA-SpikeArrestPolicy.failed = true |
錯誤回應範例
以下是錯誤回應範例:
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.SpikeArrestViolation" }, "faultstring":"Spike arrest violation. Allowed rate : 10ps" } }
錯誤規則範例
以下是處理 SpikeArrestViolation
錯誤的示例錯誤規則:
<FaultRules> <FaultRule name="Spike Arrest Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "SpikeArrestViolation") </Condition> </Step> <Condition>ratelimit.Spike-Arrest-1.failed=true</Condition> </FaultRule> </FaultRules>
VerifyAPIKey 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
keymanagement.service.consumer_key_missing_api_product_association |
400 |
應用程式憑證缺少 API 產品關聯。請將金鑰的應用程式與 API 產品建立關聯。請注意,這項規定適用於所有應用程式類型,例如開發人員應用程式和 AppGroup 應用程式。 |
keymanagement.service.DeveloperStatusNotActive |
401 |
建立含有您使用的 API 金鑰的開發人員應用程式的開發人員處於停用狀態。當應用程式開發人員的狀態設為停用時,該開發人員所建立的任何開發人員應用程式都會停用。具備適當權限的管理員使用者 (例如機構管理員),可以透過下列方式變更開發人員的狀態:
|
keymanagement.service.invalid_client-app_not_approved |
401 |
與 API 金鑰相關聯的開發人員應用程式已遭到撤銷。已遭撤銷的應用程式無法存取任何 API 產品,也無法叫用任何由 Apigee 管理的 API。機構管理員可以使用 Apigee API 變更開發人員應用程式的狀態。請參閱「 產生金鑰組或更新開發人員應用程式狀態」一文。 |
oauth.v2.FailedToResolveAPIKey |
401 |
政策會在政策的 <APIKey> 元素中指定的變數中尋找 API 金鑰。 如果預期的變數不存在 (無法解析),就會發生此錯誤。 |
oauth.v2.InvalidApiKey |
401 |
Apigee 已收到 API 金鑰,但該金鑰無效。Apigee 在資料庫中查詢金鑰時,該金鑰必須與要求中傳送的金鑰完全相符。如果 API 先前運作正常,請確認金鑰並未重新產生。如果金鑰已重新產生,嘗試使用舊金鑰時就會看到這則錯誤訊息。詳情請參閱「 註冊應用程式來控管 API 存取權」。 |
oauth.v2.InvalidApiKeyForGivenResource |
401 |
Apigee 已收到有效的 API 金鑰,但該金鑰與透過產品與 API Proxy 相關聯的開發人員應用程式中核准的金鑰不符。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 |
---|---|
SpecifyValueOrRefApiKey |
<APIKey> 元素未指定值或鍵。 |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "FailedToResolveAPIKey" |
oauthV2.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | oauthV2.VK-VerifyAPIKey.failed = true |
錯誤回應範例
{ "fault":{ "faultstring":"Invalid ApiKey", "detail":{ "errorcode":"oauth.v2.InvalidApiKey" } } }
{ "fault":{ "detail":{ "errorcode":"keymanagement.service.DeveloperStatusNotActive" }, "faultstring":"Developer Status is not Active" } }
錯誤規則範例
<FaultRule name="FailedToResolveAPIKey"> <Step> <Name>AM-FailedToResolveAPIKey</Name> </Step> <Condition>(fault.name Matches "FailedToResolveAPIKey") </Condition> </FaultRule>
驗證 IAM 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。詳情請參閱「政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 |
---|---|---|
steps.verifyiam.CredentialSourceRefUnresolved |
400 |
無法解析憑證來源內提供的流程變數。 |
steps.verifyiam.CredentialValueNotProvided |
400 |
找不到憑證。如果未提供憑證來源參照,我們會查看預設位置,例如授權標頭。 |
steps.verifyiam.Forbidden |
403 |
因權限不足、缺少存取範圍或其他相關問題,無法轉送要求。 |
steps.verifyiam.MiscellaneousAuthorizationConfigurationError |
500 |
向 IAM 提出驗證要求時發生問題。API 製作者必須根據錯誤回應中的詳細資料修正這項錯誤。 |
steps.verifyiam.Unauthorized |
401 |
憑證有問題,例如值無效或已過期。 |
steps.verifyiam.UnexpectedAuthorizationInfrastructureError |
500 |
內部錯誤。 |
部署錯誤
這項政策不會傳回任何政策專屬的部署錯誤。
錯誤變數
當這項政策在執行階段觸發錯誤時,系統會設定這些變數。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name="Unauthorized" |
verifyiam.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | verifyiam.Verify-IAMToken.failed = true |
VerifyJWS 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 發生時機 |
---|---|---|
steps.jws.AlgorithmInTokenNotPresentInConfiguration |
401 |
驗證政策包含多個演算法時發生 |
steps.jws.AlgorithmMismatch |
401 |
Generate 政策在標頭中指定的演算法與 Verify 政策中預期的演算法不符。指定的演算法必須相符。 |
steps.jws.ContentIsNotDetached |
401 |
如果 JWS 不包含已分離的內容酬載,就會指定 <DetachedContent> 。 |
steps.jws.FailedToDecode |
401 |
政策無法解碼 JWS。JWS 可能已損毀。 |
steps.jws.InsufficientKeyLength |
401 |
針對 HS256 演算法,金鑰長度必須小於 32 位元組 |
steps.jws.InvalidClaim |
401 |
缺少聲明或聲明不相符,或是缺少標頭或標頭不相符。 |
steps.jws.InvalidCurve |
401 |
金鑰指定的曲線不適用於橢圓曲線演算法。 |
steps.jws.InvalidJsonFormat |
401 |
JWS 標頭中發現無效的 JSON。 |
steps.jws.InvalidJws |
401 |
當 JWS 簽名驗證失敗時,就會發生此錯誤。 |
steps.jws.InvalidPayload |
401 |
JWS 酬載無效。 |
steps.jws.InvalidSignature |
401 |
<DetachedContent> 已省略,且 JWS 具有分離的內容酬載。 |
steps.jws.KeyIdMissing |
401 |
Verify 政策會使用 JWKS 做為公開金鑰來源,但已簽署的 JWS 不會在標頭中加入 kid 屬性。 |
steps.jws.KeyParsingFailed |
401 |
無法從指定的金鑰資訊剖析公開金鑰。 |
steps.jws.MissingPayload |
401 |
缺少 JWS 酬載。 |
steps.jws.NoAlgorithmFoundInHeader |
401 |
發生於 JWS 省略演算法標頭時。 |
steps.jws.NoMatchingPublicKey |
401 |
Verify 政策使用 JWKS 做為公開金鑰來源,但已簽署的 JWS 中的 kid 並未列在 JWKS 中。 |
steps.jws.UnhandledCriticalHeader |
401 |
crit 標頭中由「驗證 JWS」政策所找到的標頭,並未列在 KnownHeaders 中。 |
steps.jws.UnknownException |
401 |
發生不明例外狀況。 |
steps.jws.WrongKeyType |
401 |
指定的金鑰類型有誤。例如,如果您為橢圓曲線演算法指定 RSA 金鑰,或為 RSA 演算法指定曲線金鑰。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 發生時機 |
---|---|
InvalidAlgorithm |
唯一有效的值為 RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512,
HS256, HS384, HS512 。 |
|
其他可能的部署錯誤。 |
錯誤變數
系統會在發生執行階段錯誤時設定這些變數。詳情請參閱重要須知 政策錯誤。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤的名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤程式碼的最後部分。 | fault.name Matches "TokenExpired" |
JWS.failed |
如果作業失敗,所有 JWS 政策都會設定相同的變數。 | jws.JWS-Policy.failed = true |
錯誤回應範例
針對錯誤處理,最佳做法是將錯誤的 errorcode
部分加以包裝
回應。請勿參考 faultstring
中的文字,因為可能會變動。
錯誤規則範例
<FaultRules> <FaultRule name="JWS Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "TokenExpired")</Condition> </Step> <Condition>JWS.failed=true</Condition> </FaultRule> </FaultRules>
VerifyJWT 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 發生時機 |
---|---|---|
steps.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 |
驗證政策包含多個演算法時會發生。 |
steps.jwt.AlgorithmMismatch |
401 |
Generate 政策中指定的演算法與 Verify 政策中預期的演算法不符。指定的演算法必須相符。 |
steps.jwt.FailedToDecode |
401 |
政策無法解碼 JWT。JWT 可能已損毀。 |
steps.jwt.GenerationFailed |
401 |
政策無法產生 JWT。 |
steps.jwt.InsufficientKeyLength |
401 |
金鑰長度必須小於 HS256 演算法的 32 個位元組、HS386 演算法的 48 個位元組,以及 HS512 演算法的 64 個位元組。 |
steps.jwt.InvalidClaim |
401 |
缺少聲明或聲明不相符,或是缺少標頭或標頭不相符。 |
steps.jwt.InvalidConfiguration |
401 |
<Algorithm> 和 <Algorithms> 元素都存在。 |
steps.jwt.InvalidCurve |
401 |
金鑰指定的曲線不適用於橢圓曲線演算法。 |
steps.jwt.InvalidIterationCount |
401 |
在加密 JWT 中使用的迭代計數不等於 VerifyJWT 政策設定中指定的迭代計數。這項規定僅適用於使用 <PasswordKey> 的 JWT。 |
steps.jwt.InvalidJsonFormat |
401 |
標頭或酬載中發現無效的 JSON。 |
steps.jwt.InvalidKeyConfiguration |
401 |
<PublicKey> 元素中的 JWKS 無效。原因可能是從 Apigee 執行個體無法存取 JWKS URI 端點。建立轉送 Proxy,並使用 JWKS 端點做為目標,測試端點的連線能力。 |
steps.jwt.InvalidSaltLength |
401 |
在加密 JWT 中使用的鹽值長度與 VerifyJWT 政策設定中指定的鹽值長度不符。這項規定僅適用於使用 <PasswordKey> 的 JWT。 |
steps.jwt.InvalidPasswordKey |
401 |
指定的鍵不符合規定。 |
steps.jwt.InvalidPrivateKey |
401 |
指定的鍵不符合規定。 |
steps.jwt.InvalidPublicKey |
401 |
指定的鍵不符合規定。 |
steps.jwt.InvalidSecretKey |
401 |
指定的鍵不符合規定。 |
steps.jwt.InvalidToken |
401 |
當 JWT 簽名驗證失敗時,就會發生此錯誤。 |
steps.jwt.JwtAudienceMismatch |
401 |
目標對象權利聲明在權杖驗證時失敗。 |
steps.jwt.JwtIssuerMismatch |
401 |
發出者權利聲明在權杖驗證時失敗。 |
steps.jwt.JwtSubjectMismatch |
401 |
主體宣告在權杖驗證時失敗。 |
steps.jwt.KeyIdMissing |
401 |
Verify 政策會使用 JWKS 做為公開金鑰來源,但已簽署的 JWT 不會在標頭中加入 kid 屬性。 |
steps.jwt.KeyParsingFailed |
401 |
無法從指定的金鑰資訊剖析公開金鑰。 |
steps.jwt.NoAlgorithmFoundInHeader |
401 |
當 JWT 不含演算法標頭時,就會發生此錯誤。 |
steps.jwt.NoMatchingPublicKey |
401 |
Verify 政策使用 JWKS 做為公開金鑰來源,但已簽署 JWT 中的 kid 並未列在 JWKS 中。 |
steps.jwt.SigningFailed |
401 |
在 GenerateJWT 中,如果金鑰小於 HS384 或 HS512 演算法的最小大小 |
steps.jwt.TokenExpired |
401 |
政策嘗試驗證已過期的權杖。 |
steps.jwt.TokenNotYetValid |
401 |
權杖尚未生效。 |
steps.jwt.UnhandledCriticalHeader |
401 |
crit 標頭中由「驗證 JWT」政策所找到的標頭,並未列在 KnownHeaders 中。 |
steps.jwt.UnknownException |
401 |
發生不明例外狀況。 |
steps.jwt.WrongKeyType |
401 |
指定的金鑰類型有誤。例如,如果您為橢圓曲線演算法指定 RSA 金鑰,或為 RSA 演算法指定曲線金鑰。 |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
InvalidNameForAdditionalClaim |
如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱是下列已註冊名稱之一:kid 、iss 、sub 、aud 、iat 、exp 、nbf 或 jti ,則部署作業會失敗。 |
build |
InvalidTypeForAdditionalClaim |
如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱不是 string 、number 、boolean 或 map 類型,則部署作業會失敗。 |
build |
MissingNameForAdditionalClaim |
如果在 <AdditionalClaims> 元素的子元素 <Claim> 中未指定權杖名稱,則部署作業會失敗。 |
build |
InvalidNameForAdditionalHeader |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的聲明名稱為 alg 或 typ ,就會發生此錯誤。 |
build |
InvalidTypeForAdditionalHeader |
如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱類型不是 string 、number 、boolean 或 map 類型,則部署作業會失敗。 |
build |
InvalidValueOfArrayAttribute |
如果 <AdditionalClaims> 元素的子元素 <Claim> 中陣列屬性的值未設為 true 或 false ,就會發生這個錯誤。 |
build |
InvalidValueForElement |
如果 <Algorithm> 元素中指定的值不是支援的值,則部署作業會失敗。 |
build |
MissingConfigurationElement |
如果 <PrivateKey> 元素未與 RSA 系列演算法搭配使用,或 <SecretKey> 元素未與 HS 系列演算法搭配使用,就會發生這個錯誤。 |
build |
InvalidKeyConfiguration |
如果在 <PrivateKey> 或 <SecretKey> 元素中未定義子元素 <Value> ,則部署作業會失敗。 |
build |
EmptyElementForKeyConfiguration |
如果 <PrivateKey> 或 <SecretKey> 元素的子元素 <Value> 的 ref 屬性為空白或未指定,部署作業就會失敗。 |
build |
InvalidConfigurationForVerify |
如果 <Id> 元素是在 <SecretKey> 元素中定義,就會發生這個錯誤。 |
build |
InvalidEmptyElement |
如果「驗證 JWT」政策的 <Source> 元素為空白,就會發生這個錯誤。如果有此值,則必須使用 Apigee 流程變數名稱定義。 |
build |
InvalidPublicKeyValue |
如果 <PublicKey> 元素子元素 <JWKS> 中使用的值並未採用 RFC 7517 中指定的有效格式,則部署作業會失敗。 |
build |
InvalidConfigurationForActionAndAlgorithm |
如果 <PrivateKey> 元素與 HS Family 演算法搭配使用,或是 <SecretKey> 元素與 RSA Family 演算法搭配使用,則部署作業會失敗。 |
build |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "InvalidToken" |
JWT.failed |
所有 JWT 政策在失敗的情況下都會設定相同的變數。 | JWT.failed = true |
錯誤回應範例
針對錯誤處理,最佳做法是擷取錯誤回應的 errorcode
部分。請勿依賴 faultstring
中的文字,因為該文字可能會變更。
錯誤規則範例
<FaultRules> <FaultRule name="JWT Policy Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "InvalidToken")</Condition> </Step> <Condition>JWT.failed=true</Condition> </FaultRule> </FaultRules>
XMLThreatProtection 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.xmlthreatprotection.ExecutionFailed |
500 |
XMLThreatProtection 政策可能會擲回多種不同類型的 ExecutionFailed 錯誤。大多數這類錯誤都是在政策中設定的特定門檻值超出時發生。這些錯誤類型包括:元素名稱長度、子項數量、節點深度、屬性數量、屬性名稱長度,以及其他許多類型。如需完整清單,請參閱「XMLThreatProtection 政策執行階段錯誤疑難排解」主題。 |
build |
steps.xmlthreatprotection.InvalidXMLPayload |
500 |
如果 XMLThreatProtection 政策的 <Source> 元素指定的輸入訊息酬載不是有效的 XML 文件,就會發生這項錯誤。 |
build |
steps.xmlthreatprotection.SourceUnavailable |
500 |
如果 <Source> 元素中指定的 message 變數為下列任一情況,就會發生這個錯誤:
|
build |
steps.xmlthreatprotection.NonMessageVariable |
500 |
如果 <Source> 元素設為非 message 類型的變數,就會發生這個錯誤。 |
build |
部署錯誤
無
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name Matches "SourceUnavailable" |
xmlattack.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | xmlattack.XPT-SecureRequest.failed = true |
錯誤回應範例
{ "fault": { "faultstring": "XMLThreatProtection[XPT-SecureRequest]: Execution failed. reason: XMLThreatProtection[XTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.xmlthreatprotection.ExecutionFailed" } } }
錯誤規則範例
<FaultRule name="XML Threat Protection Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ExecutionFailed") </Condition> </Step> <Condition>(xmlattack.XPT-SecureRequest.failed = true) </Condition> </FaultRule>
XMLtoJSON 政策
本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.xmltojson.ExecutionFailed |
ExecutionFailed |
當輸入酬載 (XML) 為空白,或輸入 XML 無效或格式錯誤時,就會發生這項錯誤。 | build |
steps.xmltojson.InCompatibleTypes |
ExecutionFailed |
如果 <Source> 元素和 <OutputVariable> 元素中定義的變數類型不一致,就會發生此錯誤。<Source> 元素和 <OutputVariable> 元素中包含的變數類型必須一致。 |
build |
steps.xmltojson.InvalidSourceType |
ExecutionFailed |
如果用來定義 <Source> 元素的變數類型無效,就會發生這項錯誤。有效的變數類型為訊息和字串。 |
build |
steps.xmltojson.OutputVariableIsNotAvailable |
ExecutionFailed |
如果 XML 到 JSON 政策的 <Source> 元素中指定的變數為字串類型,且未定義 <OutputVariable> 元素,就會發生這個錯誤。如果 <Source> 元素中定義的變數為字串類型,則必須使用 <OutputVariable> 元素。 |
build |
steps.xmltojson.SourceUnavailable |
ExecutionFailed |
如果 XML 到 JSON 政策的 <Source> 元素中指定的 message 變數為下列任一情況,就會發生此錯誤:
|
build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
EitherOptionOrFormat |
如果 XML 到 JSON 政策中未宣告其中一個 <Options> 或 <Format> 元素,則 API Proxy 的部署作業會失敗。 |
build |
UnknownFormat |
如果 XML 到 JSON 政策中的 <Format> 元素定義了不明格式,API 代理程式就會無法部署。預先定義的格式包括:xml.com 、yahoo 、google 和 badgerFish 。 |
build |
錯誤變數
這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。
變數 | 地點 | 範例 |
---|---|---|
fault.name="fault_name" |
fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 | fault.name = "SourceUnavailable" |
xmltojson.policy_name.failed |
policy_name 是擲回錯誤的政策的使用者指定名稱。 | xmltojson.XMLtoJSON-1.failed = true |
錯誤回應範例
{ "fault": { "faultstring": "XMLToJSON[XMLtoJSON-1]: Source xyz is not available", "detail": { "errorcode": "steps.xml2json.SourceUnavailable" } } }
錯誤規則範例
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="XML to JSON Faults"> <Step> <Name>AM-SourceUnavailableMessage</Name> <Condition>(fault.name Matches "SourceUnavailable") </Condition> </Step> <Step> <Name>AM-BadXML</Name> <Condition>(fault.name = "ExecutionFailed")</Condition> </Step> <Condition>(xmltojson.XMLtoJSON-1.failed = true) </Condition> </FaultRule>
XSLTransform 政策
執行階段錯誤
政策執行時可能會發生這些錯誤。
錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
如果 XSLTransform 政策的 <Source> 元素中指定的訊息或字串變數超出範圍 (在執行政策的特定流程中不可用),或是無法解析 (未定義),就會發生這項錯誤。 |
build |
steps.xsl.XSLEvaluationFailed |
500 |
如果輸入 XML 酬載無法使用/格式錯誤,或是 XSLTransform 政策無法根據 XSL 檔案提供的轉換規則轉換輸入 XML 檔案,就會發生這項錯誤。導致 XSLTransform 政策失敗的原因有很多。 錯誤訊息中的失敗原因會提供更多原因資訊。 | build |
部署錯誤
部署含有這項政策的 Proxy 時,可能會發生這些錯誤。
錯誤名稱 | 原因 | 修正 |
---|---|---|
XSLEmptyResourceUrl |
如果 XSLTransform 政策中的 <ResourceURL> 元素為空白,API Proxy 的部署作業就會失敗。 |
build |
XSLInvalidResourceType |
如果 XSLTransform 政策的 <ResourceURL> 元素中指定的資源類型不是 xsl 類型,則 API Proxy 的部署作業會失敗。 |
build |