政策錯誤參考資料

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

AccessControl 政策

本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。

執行階段錯誤

政策執行時可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 修正
accesscontrol.IPDeniedAccess 403 用戶端 IP 位址或 API 要求中傳遞的 IP 位址,與存取控制政策 <MatchRule> 元素中 <SourceAddress> 元素中指定的 IP 位址相符,且 <MatchRule> 元素的 action 屬性設為 DENY
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

如果 <Copy> 元素中的 source 屬性設為非 message 類型的變數,就會發生這個錯誤。

訊息類型變數代表整個 HTTP 要求和回應。內建的 Apigee 流程變數 requestresponsemessage 的類型為訊息。如要進一步瞭解訊息變數,請參閱變數參考資料

steps.assignmessage.UnresolvedVariable 500

如果 AssignMessage 政策中指定的變數為下列任一情況,就會發生此錯誤:

  • 超出範圍 (無法在執行政策的特定流程中使用)
  • 無法解析 (未定義)

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidIndex 如果 AssignMessage 政策的 <Copy> 和/或 <Remove> 元素中指定的索引為 0 或負數,則 API Proxy 的部署作業會失敗。
InvalidVariableName 如果子元素 <Name> 為空白,或未在 <AssignVariable> 元素中指定,則 API 代理程式無法部署,因為沒有有效的變數名稱可用來指派值。必須提供有效的變數名稱。
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 開頭)。
steps.basicauthentication.UnresolvedVariable 500 缺少解碼或編碼所需的來源變數。只有在 IgnoreUnresolvedVariables 為 false 時,才會發生這項錯誤。

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 發生時機 修正
UserNameRequired 已命名作業必須包含 <User> 元素。
PasswordRequired 已命名作業必須包含 <Password> 元素。
AssignToRequired 命名作業必須包含 <AssignTo> 元素。
SourceRequired 已命名作業必須包含 <Source> 元素。

錯誤變數

這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

其他可能的部署錯誤。

錯誤變數

系統會在發生執行階段錯誤時設定這些變數。詳情請參閱重要須知 政策錯誤。

變數 地點 範例
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 可能格式錯誤、無效或無法解碼。
steps.jwt.FailedToResolveVariable 401 當政策 <Source> 元素中指定的流程變數不存在時,就會發生這個錯誤。
steps.jwt.InvalidToken 401 當政策 <Source> 元素中指定的流程變數超出範圍或無法解析時,就會發生此錯誤。

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidEmptyElement 當政策的 <Source> 元素未指定含有待解碼 JWT 的流程變數時,就會發生此錯誤。

錯誤變數

這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
fault.name="fault_name" fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 fault.name Matches "InvalidToken"
JWT.failed 所有 JWT 政策在失敗的情況下都會設定相同的變數。 JWT.failed = true

錯誤回應範例

JWT 政策錯誤代碼

針對錯誤處理,最佳做法是擷取錯誤回應的 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

發生這個錯誤的原因如下:

  • 輸入酬載 (JSON、XML) 為空白。
  • 傳遞至政策的輸入內容 (JSON、XML 等) 無效或格式錯誤。
steps.extractvariables.ImmutableVariable 500 政策中使用的變數是不可變動的。政策無法設定這個變數。 不適用
steps.extractvariables.InvalidJSONPath 500 如果在政策的 JSONPath 元素中使用無效的 JSON 路徑,就會發生這個錯誤。舉例來說,如果 JSON 酬載沒有 Name 物件,但您在政策中將 Name 指定為路徑,就會發生這個錯誤。
steps.extractvariables.JsonPathParsingFailure 500 當政策無法剖析 JSON 路徑,並從 Source 元素中指定的流程變數中擷取資料時,就會發生這項錯誤。通常,如果 Source 元素中指定的流程變數不存在於目前流程中,就會發生這種情況。
steps.extractvariables.SetVariableFailed 500 如果政策無法將值設為變數,就會發生這項錯誤。一般來說,如果您嘗試將值指派給多個變數,且這些變數的名稱以同一個字詞開頭,且採用以點分隔的巢狀格式,就會發生此錯誤。
steps.extractvariables.SourceMessageNotAvailable 500 如果政策的 Source 元素中指定的 message 變數為下列任一情況,就會發生這個錯誤:
  • 超出範圍 (無法在執行政策的特定流程中使用),或
  • 無法解析 (未定義)
steps.extractvariables.UnableToCast 500 如果政策無法將擷取的值轉換為變數,就會發生此錯誤。通常,如果您嘗試將某個資料類型的值設為另一個資料類型的變數,就會發生這種情況。

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
NothingToExtract 如果政策沒有任何 URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload 元素,則由於沒有任何可擷取的內容,因此 API Proxy 的部署作業會失敗。
NONEmptyPrefixMappedToEmptyURI 如果政策在 XMLPayload 元素下的 Namespace 元素中定義了前置字串,但未定義 URI,就會發生這個錯誤。
DuplicatePrefix 如果政策在 XMLPayload 元素下的 Namespace 元素中定義了相同的前置字串,就會發生這個錯誤。
NoXPathsToEvaluate 如果政策的 XMLPayload 元素中沒有 XPath 元素,API 代理程式會因這項錯誤而無法部署。
EmptyXPathExpression 如果政策在 XMLPayload 元素中包含空白的 XPath 運算式,API Proxy 的部署作業就會失敗。
NoJSONPathsToEvaluate 如果政策的 JSONPayload 元素中沒有 JSONPath 元素,API 代理程式會因這項錯誤而無法部署。
EmptyJSONPathExpression 如果政策在 XMLPayload 元素中包含空白的 XPath 運算式,API Proxy 的部署作業就會失敗。
MissingName 如果政策在任何需要 name 屬性的政策元素 (例如 QueryParamHeaderFormParamVariable) 中,都沒有 name 屬性,則 API 代理程式會部署失敗。
PatternWithoutVariable 如果政策在 Pattern 元素中未指定變數,API 代理程式就會部署失敗。Pattern 元素需要變數名稱,用於儲存擷取的資料。
CannotBeConvertedToNodeset 如果政策含有 XPath 運算式,其中 Variable 類型定義為 nodeset,但運算式無法轉換為 nodeset,則 API Proxy 的部署作業會失敗。
JSONPathCompilationFailed 政策無法編譯指定的 JSON 路徑。 不適用
InstantiationFailed 無法將政策例項化。 不適用
XPathCompilationFailed 如果 XPath 元素中使用的前置字串或值並非政策中宣告的任何命名空間的一部分,則 API 代理程式會無法部署。
InvalidPattern 如果 Pattern 元素定義在政策中的任何元素 (例如 URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload) 中無效,則 API 代理程式的部署作業會失敗。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

其他可能的部署錯誤。

錯誤變數

系統會在發生執行階段錯誤時設定這些變數。詳情請參閱重要須知 政策錯誤。

變數 地點 範例
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> 中使用的宣稱是下列已註冊名稱之一:kidisssubaudiatexpnbfjti,則部署作業會失敗。
InvalidTypeForAdditionalClaim 如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱不是 stringnumberbooleanmap 類型,則部署作業會失敗。
MissingNameForAdditionalClaim 如果在 <AdditionalClaims> 元素的子元素 <Claim> 中未指定權杖名稱,則部署作業會失敗。
InvalidNameForAdditionalHeader 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的聲明名稱為 algtyp,就會發生此錯誤。
InvalidTypeForAdditionalHeader 如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱類型不是 stringnumberbooleanmap 類型,則部署作業會失敗。
InvalidValueOfArrayAttribute 如果 <AdditionalClaims> 元素的子元素 <Claim> 中陣列屬性的值未設為 truefalse,就會發生這個錯誤。
InvalidConfigurationForActionAndAlgorithm 如果 <PrivateKey> 元素與 HS Family 演算法搭配使用,或是 <SecretKey> 元素與 RSA Family 演算法搭配使用,則部署作業會失敗。
InvalidValueForElement 如果 <Algorithm> 元素中指定的值不是支援的值,則部署作業會失敗。
MissingConfigurationElement 如果 <PrivateKey> 元素未與 RSA 系列演算法搭配使用,或 <SecretKey> 元素未與 HS 系列演算法搭配使用,就會發生這個錯誤。
InvalidKeyConfiguration 如果在 <PrivateKey><SecretKey> 元素中未定義子元素 <Value>,則部署作業會失敗。
EmptyElementForKeyConfiguration 如果 <PrivateKey><SecretKey> 元素的子元素 <Value> 的 ref 屬性為空白或未指定,部署作業就會失敗。
InvalidVariableNameForSecret 如果 <PrivateKey><SecretKey> 元素的子元素 <Value> 在 ref 屬性中指定的資料流變數名稱不含私人前置字元 (private.),就會發生這個錯誤。
InvalidSecretInConfig 如果 <PrivateKey><SecretKey> 元素的子元素 <Value> 不含私人前置字串 (private.),就會發生這個錯誤。
InvalidTimeFormat 如果 <NotBefore> 元素中指定的值未使用支援的格式,則部署作業會失敗。

錯誤變數

這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
fault.name="fault_name" fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 fault.name Matches "InvalidToken"
JWT.failed 所有 JWT 政策在失敗的情況下都會設定相同的變數。 JWT.failed = true

錯誤回應範例

JWT 政策錯誤代碼

針對錯誤處理,最佳做法是擷取錯誤回應的 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 時擲回例外狀況或傳回空值。

部署錯誤

部署含有政策的 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 錯誤。常見的錯誤類型包括 RangeErrorReferenceErrorSyntaxErrorTypeErrorURIError
steps.javascript.ScriptExecutionFailedLineNumber 500 JavaScript 程式碼中發生錯誤。詳情請參閱錯誤字串。 不適用
steps.javascript.ScriptSecurityError 500 執行 JavaScript 時發生安全性錯誤。請參閱錯誤字串瞭解詳細資訊。 不適用

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidResourceUrlFormat 如果 <ResourceURL> 中指定的資源網址格式或 JavaScript 政策的 <IncludeURL> 元素無效,API 代理程式就無法部署。
InvalidResourceUrlReference 如果 <ResourceURL><IncludeURL> 元素參照的 JavaScript 檔案不存在,API 代理程式就無法部署。參照的來源檔案必須位於 API 代理程式、環境或機構層級。
WrongResourceType 如果 JavaScript 政策的 <ResourceURL><IncludeURL> 元素參照 jsc (JavaScript 檔案) 以外的任何資源類型,就會在部署期間發生這個錯誤。
NoResourceURLOrSource 如果未宣告 <ResourceURL> 元素,或是未在該元素中定義資源網址,則 JavaScript 政策的部署作業可能會失敗,並顯示這項錯誤。<ResourceURL> 元素為必要元素。或者,您已宣告 <IncludeURL> 元素,但未在該元素中定義資源網址。<IncludeURL> 元素為選用元素,但如果已宣告,則必須在 <IncludeURL> 元素中指定資源網址。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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 物件,也會發生這個錯誤。
steps.jsonthreatprotection.SourceUnavailable 500 如果 <Source> 元素中指定的 message 變數為下列任一情況,就會發生這個錯誤:
  • 超出範圍 (無法在執行政策的特定流程中使用)
  • 不是有效值 requestresponsemessage 中的其中一個
steps.jsonthreatprotection.NonMessageVariable 500 如果 <Source> 元素設為非 message 類型的變數,就會發生這個錯誤。

部署錯誤

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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) 無效或格式錯誤。
steps.jsontoxml.InCompatibleTypes 500 如果 <Source> 元素和 <OutputVariable> 元素中定義的變數類型不一致,就會發生這項錯誤。<Source> 元素和 <OutputVariable> 元素中包含的變數類型必須一致。有效的類型為 messagestring
steps.jsontoxml.InvalidSourceType 500 如果用來定義 <Source> 元素的變數類型無效,就會發生這個錯誤。有效的變數類型為 messagestring
steps.jsontoxml.OutputVariableIsNotAvailable 500 如果 JSON 至 XML 政策的 <Source> 元素中指定的變數為字串類型,且未定義 <OutputVariable> 元素,就會發生這項錯誤。如果 <Source> 元素中定義的變數為字串類型,則必須使用 <OutputVariable> 元素。
steps.jsontoxml.SourceUnavailable 500 如果 JSON 到 XML 政策的 <Source> 元素中指定的 message 變數為下列任一情況,就會發生此錯誤:
  • 超出範圍 (無法在執行政策的特定流程中使用),或
  • 無法解析 (未定義)

部署錯誤

錯誤變數

這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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

如果在 KeyValueMapOperations 政策中將 mapIdentifier 屬性設為空字串,就會發生這個錯誤。

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidIndex 如果 KeyValueMapOperations 政策的 <Get> 元素中指定的 index 屬性為零或負數,則 API Proxy 的部署作業會失敗。索引會從 1 開始,因此索引為零或負整數會視為無效。
KeyIsMissing 如果 <Key> 元素完全缺少,或是 <Parameter> 元素缺少 KeyValueMapOperations 政策 <InitialEntries> 元素 <Entry> 下方的 <Key> 元素,就會發生這個錯誤。
ValueIsMissing 如果 KeyValueMapOperations 政策的 <InitialEntries> 元素 <Entry> 元素下方缺少 <Value> 元素,就會發生這項錯誤。

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。
InvalidPort 如果 <Port> 元素中未指定埠號碼,或該埠號碼無效,則部署 MessageLogging 政策可能會失敗,並顯示這項錯誤。通訊埠號碼必須是大於零的整數。

錯誤變數

這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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

政策的 <Source> 元素中指定的變數超出範圍,或無法解析。

steps.oasvalidation.NonMessageVariable 500

<Source> 元素設為非 message 類型的變數。

部署錯誤

部署含有這項政策的 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 的環境中不存在的名稱,就會發生這個錯誤。
CacheNotFound <CacheResource> 元素中指定的快取不存在。

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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 的環境中不存在的名稱,就會發生這個錯誤。
InvalidTimeout 如果 <CacheLookupTimeoutInSeconds> 元素設為負數,API 代理程式就會部署失敗。
CacheNotFound 如果未在特定的 Message Processor 元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。

錯誤變數

不適用

錯誤回應範例

不適用

InvalidateCache 政策

本節將說明在政策觸發錯誤時,系統會設定的錯誤訊息和流程變數。如果您要為 Proxy 開發錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。

錯誤代碼前置字串

不適用

執行階段錯誤

這項政策不會擲回任何執行階段錯誤。

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidCacheResourceReference 如果 InvalidateCache 政策中的 <CacheResource> 元素設為在部署 API Proxy 的環境中不存在的名稱,就會發生這個錯誤。
CacheNotFound 如果未在特定的 Message Processor 元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。

錯誤變數

不適用

錯誤回應範例

不適用

ResponseCache 政策

本節將說明在政策觸發錯誤時,系統會設定的錯誤訊息和流程變數。如果您要為 Proxy 開發錯誤規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。

錯誤代碼前置字串

不適用

執行階段錯誤

這項政策不會擲回任何執行階段錯誤。

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidTimeout 如果 ResponseCache 政策的 <CacheLookupTimeoutInSeconds> 元素設為負數,API Proxy 的部署作業就會失敗。
InvalidCacheResourceReference 如果 ResponseCache 政策中的 <CacheResource> 元素設為在部署 API Proxy 的環境中不存在的名稱,就會發生這個錯誤。
ResponseCacheStepAttachmentNotAllowedReq 如果在 API Proxy 的任何流程中,將相同的 ResponseCache 政策附加至多個要求路徑,就會發生這個錯誤。
ResponseCacheStepAttachmentNotAllowedResp 如果在 API Proxy 的任何流程中,將相同的 ResponseCache 政策附加至多個回應路徑,就會發生這個錯誤。
InvalidMessagePatternForErrorCode 如果 ResponseCache 政策中的 <SkipCacheLookup><SkipCachePopulation> 元素含有無效條件,就會發生這個錯誤。
CacheNotFound 如果未在特定的 Message Processor 元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。

錯誤變數

不適用

錯誤回應範例

不適用

OAuthV2 政策

本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「關於政策錯誤的相關資訊」和「處理錯誤」。

執行階段錯誤

政策執行時可能會發生這些錯誤。

錯誤代碼 HTTP 狀態 原因 由作業擲回
steps.oauth.v2.access_token_expired 401 存取權杖已過期。

VerifyAccessToken
InvalidateToken

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> 元素中指定的變數中找到符記,但無法解析該變數。

ValidateToken
InvalidateToken

steps.oauth.v2.InsufficientScope 403 要求中提供的存取權權杖範圍與驗證存取權權杖政策中指定的範圍不符。如要瞭解範圍,請參閱「使用 OAuth2 範圍」。 VerifyAccessToken
steps.oauth.v2.invalid_client 401

當政策的 <GenerateResponse> 屬性設為 true,且要求中傳送的用戶端 ID 無效時,系統會傳回這個錯誤名稱。請確認您為與 Proxy 相關聯的開發人員應用程式使用正確的用戶端金鑰和密鑰值。通常,這些值會以 Base64 編碼的 Basic Authorization 標頭傳送。

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

如果政策的 <GenerateResponse> 屬性設為 false,且要求中傳送的用戶端 ID 無效,系統就會傳回這個錯誤名稱。請確認您為與 Proxy 相關聯的開發人員應用程式使用正確的用戶端金鑰和密鑰值。通常,這些值會以 Base64 編碼的 Basic Authorization 標頭傳送。

GenerateAccessToken
RefreshAccessToken

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

用戶端指定的授權類型不受政策支援 (未列於 <SupportedGrantTypes> 元素中)。

GenerateAccessToken
GenerateAuthorizationCode
GenerateAccessTokenImplicitGrant
RefreshAccessToken

JWT 權杖專屬的執行階段錯誤

JWT 驗證權杖流程的執行階段錯誤代碼和說明取決於 OAuth2 流程內容:

JWT 權杖產生和重新整理流程的錯誤代碼

對於產生或更新 JWT 權杖的 OAuth2 流程,錯誤回應會遵循 RFC6749 中指定的錯誤回應。詳情請參閱「第 5.2 節:錯誤回應」。

權杖驗證流程的錯誤代碼

下表列出的錯誤代碼僅適用於 VerifyAccessToken 作業。

錯誤代碼 HTTP 狀態 原因 由作業擲回
oauth.v2.JWTSigningFailed 401 政策無法為 JWT 簽署。

GenerateJWTAccessToken

oauth.v2.InvalidValueForJWTAlgorithm 401 當 JWT 存取權杖中沒有演算法,或系統不支援該值時,就會發生這種情況。

GenerateJWTAccessToken
VerifyJWTAccessToken

oauth.v2.InsufficientKeyLength 401 在產生 JWT 時,如果金鑰小於 HS384 或 HS512 演算法的最小大小

GenerateJWTAccessToken
VerifyJWTAccessToken

oauth.v2.JWTAlgorithmMismatch 401 產生政策中指定的演算法與驗證政策中預期的演算法不符。指定的演算法必須相符。

VerifyJWTAccessToken

oauth.v2.JWTDecodingFailed 401 政策無法解碼 JWT。JWT 可能已損毀。

VerifyJWTAccessToken

oauth.v2.MissingMandatoryClaimsInJWT 401 當 Jwt 存取權杖中未提供必要的聲明時,就會發生

VerifyJWTAccessToken

oauth.v2.InvalidJWTSignature 401 當無法驗證 JWT 存取權杖的簽名,或簽名無效時,就會發生這種情況。

VerifyJWTAccessToken

oauth.v2.InvalidTypeInJWTHeader 401 當 JWT 類型不是 at+Jwt 時,就會發生

VerifyJWTAccessToken

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因
InvalidValueForExpiresIn

對於 <ExpiresIn> 元素,有效值為正整數。

InvalidValueForRefreshTokenExpiresIn 對於 <RefreshTokenExpiresIn> 元素,有效值為正整數。
InvalidGrantType <SupportedGrantTypes> 元素中指定了無效的授權類型。如需有效類型的清單,請參閱政策參考資料。
ExpiresInNotApplicableForOperation 請確認 <Operations> 元素中指定的作業支援到期日。例如,VerifyToken 運算不會。
RefreshTokenExpiresInNotApplicableForOperation 請確認 <Operations> 元素中指定的作業支援權杖到期日更新功能。例如,VerifyToken 作業就沒有。
GrantTypesNotApplicableForOperation 請確認 <SupportedGrantTypes> 中指定的授權類型支援指定的作業。
OperationRequired

您必須使用 <Operation> 元素,在這項政策中指定作業。

InvalidOperation

您必須使用 <Operation> 元素,在這個政策中指定有效的作業。

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 錯誤。常見的錯誤類型包括 NameErrorZeroDivisionError

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidResourceUrlFormat 如果 <ResourceURL> 中指定的資源網址格式或 PythonScript 政策的 <IncludeURL> 元素無效,API Proxy 的部署作業就會失敗。
InvalidResourceUrlReference 如果 <ResourceURL><IncludeURL> 元素參照不存在的 PythonScript 檔案,API 代理程式會無法部署。參照的來源檔案必須位於 API 代理程式、環境或機構層級。

錯誤變數

當這項政策在執行階段觸發錯誤時,系統就會設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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> 元素定義的項目。
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 如果 Quota 政策中未定義 <TimeUnit> 元素,就會發生這個錯誤。此元素為必填項目,用於指定適用於配額的時間單位。時間間隔可以以分鐘、小時、天、週或月為單位。
policies.ratelimit.InvalidMessageWeight 500 如果透過流程變數指定的 <MessageWeight> 元素值無效 (非整數值),就會發生此錯誤。
policies.ratelimit.QuotaViolation 500 超過配額限制。 不適用

部署錯誤

錯誤名稱 原因 修正
InvalidQuotaInterval 如果 <Interval> 元素中指定的配額間隔不是整數,API 代理程式就會部署失敗。舉例來說,如果在 <Interval> 元素中指定的配額間隔為 0.1,則 API 代理程式會部署失敗。
InvalidQuotaTimeUnit 如果 <TimeUnit> 元素中指定的時間單位不支援,API 代理程式就會部署失敗。支援的時間單位為 minutehourdayweekmonth
InvalidQuotaType 如果 <Quota> 元素中 type 屬性指定的配額類型無效,API Proxy 的部署作業就會失敗。支援的配額類型為 defaultcalendarflexirollingwindow
InvalidStartTime 如果 <StartTime> 元素中指定的時間格式無效,API Proxy 的部署作業就會失敗。有效格式為 yyyy-MM-dd HH:mm:ss,也就是 ISO 8601 日期和時間格式。舉例來說,如果 <StartTime> 元素中指定的時間為 7-16-2017 12:00:00,則 API Proxy 的部署作業會失敗。
StartTimeNotSupported 如果指定的 <StartTime> 元素配額類型不是 calendar 類型,則 API Proxy 的部署作業會失敗。<StartTime> 元素僅支援 calendar 配額類型。舉例來說,如果 type 屬性在 <Quota> 元素中設為 flexirolling window,則 API Proxy 的部署作業會失敗。
InvalidTimeUnitForDistributedQuota 如果 <Distributed> 元素設為 true,而 <TimeUnit> 元素設為 second,則 API Proxy 的部署作業會失敗。時間單位 second 不適用於分散配額。
InvalidSynchronizeIntervalForAsyncConfiguration 如果 Quota 政策中 <AsynchronousConfiguration> 元素內 <SyncIntervalInSeconds> 元素指定的值小於零,則 API Proxy 的部署作業會失敗。
InvalidAsynchronizeConfigurationForSynchronousQuota 如果 <AsynchronousConfiguration> 元素的值在 Quota 政策中設為 true,且該政策也使用 <AsynchronousConfiguration> 元素定義非同步設定,則 API Proxy 的部署作業會失敗。

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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 政策更新。
policies.resetquota.FailedToResolveAllowCountRef 不適用 政策 <Allow> 元素中含有允許計數的變數參照無法解析為值。此元素為必要元素,可指定減少配額計數器的金額。
policies.resetquota.FailedToResolveRLPolicy 500 無法解析 <Quota> 元素中 ref 屬性參照的變數。

部署錯誤

部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

錯誤名稱 原因 修正
InvalidCount 如果 ResetQuota 政策的 <Allow> 元素中指定的計數值不是整數,則 API 代理程式會部署失敗。

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}
DuplicatePrefix RegularExpressionProtection {0}: Duplicate prefix {1}
EmptyJSONPathExpression RegularExpressionProtection {0}: Empty JSONPath expression
EmptyXPathExpression RegularExpressionProtection {0}: Empty XPath expression
InvalidRegularExpression RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2}
JSONPathCompilationFailed RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2}
NONEmptyPrefixMappedToEmptyURI RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty uri
NoPatternsToEnforce RegularExpressionProtection {0}: No patterns to enforce in {1}
NothingToEnforce RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory
XPathCompilationFailed RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2}

錯誤變數

系統會在這項政策觸發錯誤時設定這些變數。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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> 等一或多個元素。
TrustStoreNotConfigured 如果 <TrustStore> 元素為空白,或是未在 ValidateSAMLAssertion 政策中指定,則 API 代理程式部署作業會失敗。必須提供有效的信任存放區。
NullKeyStoreAlias 如果子元素 <Alias> 為空白,或是未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,則 API 代理程式會部署失敗。必須提供有效的鍵庫別名。
NullKeyStore 如果子元素 <Name> 為空白,或是未在 GenerateSAMLAssertion 政策的 <Keystore> 元素中指定,則 API 代理程式會部署失敗。請提供有效的鍵值庫名稱。
NullIssuer 如果 <Issuer> 元素為空白,或是未在 GenerateSAMLAssertion 政策中指定,則 API 代理程式部署作業會失敗。必須提供有效的 <Issuer> 值。

錯誤變數

這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

變數 地點 範例
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

發生這個錯誤的原因可能如下:

  • 要求政策處理格式錯誤或無效的輸入內容。
  • 後端目標服務傳回錯誤狀態 (預設為 4xx5xx)。
steps.servicecallout.RequestVariableNotMessageType 500 政策中指定的 Request 變數不是 Message 類型。舉例來說,如果是字串或其他非訊息類型,您就會看到這項錯誤。
steps.servicecallout.RequestVariableNotRequestMessageType 500 政策中指定的 Request 變數不是 RequestMessage 類型。舉例來說,如果是回應類型,您會看到這則錯誤訊息。
googletoken.EmptyIDTokenAudience 500

<GoogleIDToken> 已啟用,但 useTargetUrl 設為 false,且在發生錯誤時,沒有直接或透過參照的方式將值提供給 <Audience>

messaging.adaptors.http.filter.GoogleTokenGenerationFailure 500 如果 API Proxy 是使用 <Authentication> 元素進行設定,就可能發生此錯誤。可能的原因包括:
  • 透過 Proxy 部署的服務帳戶:
    • 不存在於專案中
    • 已停用
    • (僅限 Apigee hybrid) 未將 roles/iam.serviceAccountTokenCreator 角色授予 apigee-runtime 服務帳戶。
  • apigee-runtime 服務帳戶的來源專案已停用 IAMCredentials API。
  • 使用 <GoogleAccessToken> 元素,且提供一或多個無效範圍。例如,檢查是否有錯字或空白範圍。
  • 僅限 Apigee hybrid:請檢查執行階段容器的記錄,並搜尋 GoogleTokenGenerationFailure,找出可能有助於偵錯的問題的詳細錯誤訊息。

    部署錯誤

    部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

    錯誤名稱 原因 修正
    URLMissing <HTTPTargetConnection> 內部缺少或空白 <URL> 元素。
    ConnectionInfoMissing 如果政策沒有 <HTTPTargetConnection><LocalTargetConnection> 元素,就會發生這項錯誤。
    InvalidTimeoutValue 如果 <Timeout> 值為負數或零,就會發生這個錯誤。
    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> 標記設定,而服務帳戶有權限問題,就會發生這個錯誤。可能的原因:
    • 服務帳戶不存在。
    • 服務帳戶並未在 Apigee 機構所屬的 Google Cloud 專案中建立。
    • 部署者確實具備服務帳戶的 iam.serviceAccounts.actAs 權限。詳情請參閱「關於服務帳戶權限」。

    錯誤變數

    這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

    變數 地點 範例
    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

    如果政策的 <Source> 元素中指定的變數為下列任一情況,就會發生此錯誤:

    • 超出範圍 (在執行政策的特定流程中不可用)
    • 無法解析 (未定義)
    steps.messagevalidation.NonMessageVariable 500

    如果 SOAPMessageValidation 政策中的 <Source> 元素設為非 message 類型的變數,就會發生這項錯誤。

    訊息類型變數代表整個 HTTP 要求和回應。內建的 Apigee 流程變數 requestresponsemessage 的類型為訊息。如要進一步瞭解訊息變數,請參閱變數參考資料

    steps.messagevalidation.Failed 500 如果 SOAPMessageValidation 政策無法根據 XSD 結構定義或 WSDL 定義驗證輸入訊息酬載,就會發生這項錯誤。如果酬載訊息中含有格式不正確的 JSON 或 XML,也會發生這個問題。

    部署錯誤

    部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

    錯誤名稱 原因 修正
    InvalidResourceType SOAPMessageValidation 政策中的 <ResourceURL> 元素設為政策不支援的資源類型。
    ResourceCompileFailed SOAPMessageValidation 政策的 <ResourceURL> 元素中參照的資源指令碼含有錯誤,導致無法編譯。
    RootElementNameUnspecified SOAPMessageValidation 政策中的 <Element> 元素不含根元素名稱。
    InvalidRootElementName SOAPMessageValidation 政策中的 <Element> 元素包含根元素名稱,但該名稱不符合有效元素命名方式的 XML 規則。

    SpikeArrest 政策

    本節說明這項政策觸發錯誤時,Apigee 傳回的錯誤代碼和錯誤訊息,以及 Apigee 設定的錯誤變數。如果您要開發錯誤處理規則,就必須瞭解這項資訊。如需更多資訊,請參閱「政策錯誤的相關資訊」和「處理錯誤」。

    執行階段錯誤

    政策執行時可能會發生這些錯誤。

    錯誤代碼 HTTP 狀態 原因 修正
    policies.ratelimit.FailedToResolveSpikeArrestRate 500 如果無法將 <Rate> 元素中含有費率設定的變數參照解析為 SpikeArrest 政策中的值,就會發生此錯誤。此元素為必填項目,用於以 intpmintps 的形式指定尖峰偵測率。
    policies.ratelimit.InvalidMessageWeight 500 如果透過流程變數為 <MessageWeight> 元素指定的值無效 (非整數值),就會發生這個錯誤。
    policies.ratelimit.SpikeArrestViolation 429 超過頻率限制。

    部署錯誤

    部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

    錯誤名稱 原因 修正
    InvalidAllowedRate 如果 SpikeArrest 政策的 <Rate> 元素中指定的尖峰停止率不是整數,或是該率沒有使用 pspm 做為尾碼,則 API 代理程式會部署失敗。

    錯誤變數

    這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

    變數 地點 範例
    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

    EmptyElementForKeyConfiguration

    FailedToResolveVariable

    InvalidConfigurationForActionAndAlgorithmFamily

    InvalidConfigurationForVerify

    InvalidEmptyElement

    InvalidFamiliesForAlgorithm

    InvalidKeyConfiguration

    InvalidNameForAdditionalClaim

    InvalidNameForAdditionalHeader

    InvalidPublicKeyId

    InvalidPublicKeyValue

    InvalidSecretInConfig

    InvalidTypeForAdditionalClaim

    InvalidTypeForAdditionalHeader

    InvalidValueForElement

    InvalidValueOfArrayAttribute

    InvalidVariableNameForSecret

    MissingConfigurationElement

    MissingElementForKeyConfiguration

    MissingNameForAdditionalClaim

    MissingNameForAdditionalHeader

    其他可能的部署錯誤。

    錯誤變數

    系統會在發生執行階段錯誤時設定這些變數。詳情請參閱重要須知 政策錯誤。

    變數 地點 範例
    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> 中使用的宣稱是下列已註冊名稱之一:kidisssubaudiatexpnbfjti,則部署作業會失敗。
    InvalidTypeForAdditionalClaim 如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱不是 stringnumberbooleanmap 類型,則部署作業會失敗。
    MissingNameForAdditionalClaim 如果在 <AdditionalClaims> 元素的子元素 <Claim> 中未指定權杖名稱,則部署作業會失敗。
    InvalidNameForAdditionalHeader 如果 <AdditionalClaims> 元素的子元素 <Claim> 中使用的聲明名稱為 algtyp,就會發生此錯誤。
    InvalidTypeForAdditionalHeader 如果 <AdditionalClaims> 元素子元素 <Claim> 中使用的宣稱類型不是 stringnumberbooleanmap 類型,則部署作業會失敗。
    InvalidValueOfArrayAttribute 如果 <AdditionalClaims> 元素的子元素 <Claim> 中陣列屬性的值未設為 truefalse,就會發生這個錯誤。
    InvalidValueForElement 如果 <Algorithm> 元素中指定的值不是支援的值,則部署作業會失敗。
    MissingConfigurationElement 如果 <PrivateKey> 元素未與 RSA 系列演算法搭配使用,或 <SecretKey> 元素未與 HS 系列演算法搭配使用,就會發生這個錯誤。
    InvalidKeyConfiguration 如果在 <PrivateKey><SecretKey> 元素中未定義子元素 <Value>,則部署作業會失敗。
    EmptyElementForKeyConfiguration 如果 <PrivateKey><SecretKey> 元素的子元素 <Value> 的 ref 屬性為空白或未指定,部署作業就會失敗。
    InvalidConfigurationForVerify 如果 <Id> 元素是在 <SecretKey> 元素中定義,就會發生這個錯誤。
    InvalidEmptyElement 如果「驗證 JWT」政策的 <Source> 元素為空白,就會發生這個錯誤。如果有此值,則必須使用 Apigee 流程變數名稱定義。
    InvalidPublicKeyValue 如果 <PublicKey> 元素子元素 <JWKS> 中使用的值並未採用 RFC 7517 中指定的有效格式,則部署作業會失敗。
    InvalidConfigurationForActionAndAlgorithm 如果 <PrivateKey> 元素與 HS Family 演算法搭配使用,或是 <SecretKey> 元素與 RSA Family 演算法搭配使用,則部署作業會失敗。

    錯誤變數

    這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

    變數 地點 範例
    fault.name="fault_name" fault_name 是錯誤名稱,如上方「執行階段錯誤」表格所列。錯誤名稱是錯誤代碼的最後一個部分。 fault.name Matches "InvalidToken"
    JWT.failed 所有 JWT 政策在失敗的情況下都會設定相同的變數。 JWT.failed = true

    錯誤回應範例

    JWT 政策錯誤代碼

    針對錯誤處理,最佳做法是擷取錯誤回應的 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 政策執行階段錯誤疑難排解」主題。
    steps.xmlthreatprotection.InvalidXMLPayload 500 如果 XMLThreatProtection 政策的 <Source> 元素指定的輸入訊息酬載不是有效的 XML 文件,就會發生這項錯誤。
    steps.xmlthreatprotection.SourceUnavailable 500 如果 <Source> 元素中指定的 message 變數為下列任一情況,就會發生這個錯誤:
    • 超出範圍 (無法在執行政策的特定流程中使用)
    • 不是有效值 requestresponsemessage 中的其中一個
    steps.xmlthreatprotection.NonMessageVariable 500 如果 <Source> 元素設為非 message 類型的變數,就會發生這個錯誤。

    部署錯誤

    錯誤變數

    這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

    變數 地點 範例
    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 無效或格式錯誤時,就會發生這項錯誤。
    steps.xmltojson.InCompatibleTypes ExecutionFailed 如果 <Source> 元素和 <OutputVariable> 元素中定義的變數類型不一致,就會發生此錯誤。<Source> 元素和 <OutputVariable> 元素中包含的變數類型必須一致。
    steps.xmltojson.InvalidSourceType ExecutionFailed 如果用來定義 <Source> 元素的變數類型無效,就會發生這項錯誤。有效的變數類型為訊息和字串。
    steps.xmltojson.OutputVariableIsNotAvailable ExecutionFailed 如果 XML 到 JSON 政策的 <Source> 元素中指定的變數為字串類型,且未定義 <OutputVariable> 元素,就會發生這個錯誤。如果 <Source> 元素中定義的變數為字串類型,則必須使用 <OutputVariable> 元素。
    steps.xmltojson.SourceUnavailable ExecutionFailed 如果 XML 到 JSON 政策的 <Source> 元素中指定的 message 變數為下列任一情況,就會發生此錯誤:
    • 超出範圍 (無法在執行政策的特定流程中使用),或
    • 無法解析 (未定義)

    部署錯誤

    部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

    錯誤名稱 原因 修正
    EitherOptionOrFormat 如果 XML 到 JSON 政策中未宣告其中一個 <Options><Format> 元素,則 API Proxy 的部署作業會失敗。
    UnknownFormat 如果 XML 到 JSON 政策中的 <Format> 元素定義了不明格式,API 代理程式就會無法部署。預先定義的格式包括:xml.comyahoogooglebadgerFish

    錯誤變數

    這些變數會在發生執行階段錯誤時設定。詳情請參閱「關於政策錯誤的相關資訊」。

    變數 地點 範例
    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> 元素中指定的訊息或字串變數超出範圍 (在執行政策的特定流程中不可用),或是無法解析 (未定義),就會發生這項錯誤。
    steps.xsl.XSLEvaluationFailed 500 如果輸入 XML 酬載無法使用/格式錯誤,或是 XSLTransform 政策無法根據 XSL 檔案提供的轉換規則轉換輸入 XML 檔案,就會發生這項錯誤。導致 XSLTransform 政策失敗的原因有很多。 錯誤訊息中的失敗原因會提供更多原因資訊。

    部署錯誤

    部署含有這項政策的 Proxy 時,可能會發生這些錯誤。

    錯誤名稱 原因 修正
    XSLEmptyResourceUrl 如果 XSLTransform 政策中的 <ResourceURL> 元素為空白,API Proxy 的部署作業就會失敗。
    XSLInvalidResourceType 如果 XSLTransform 政策的 <ResourceURL> 元素中指定的資源類型不是 xsl 類型,則 API Proxy 的部署作業會失敗。