Extract Variables ポリシーのデプロイエラーのトラブルシューティング

NothingToExtract

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    ExtractVariables [policy_name]: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory. Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
    

エラー メッセージの例

Error Saving Revision 2
    ExtractVariables EV-XML-Age: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory.
    

スクリーンショットの例

原因

Extract Variables ポリシーに、URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload の要素がいずれも含まれない場合、抽出するものがないため API プロキシのデプロイは失敗します。

エラー メッセージに示されているように、Extract Variables ポリシーは、URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload のうち少なくとも 1 つの要素をポリシーに含む必要があります。

診断

エラー メッセージで指定されている Extract Variables ポリシーを調べます。ポリシーに URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload の要素が 1 つも含まれていない場合、これがエラーの原因です。たとえば、次の Extract Variables ポリシーには、上記の要素はありません。

<ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Properties/>
    </ExtractVariables>
    

Extract Variables ポリシーに必須の要素がないため、API プロキシのデプロイは失敗します。

解決策

Extract Variables ポリシーに、必須の要素である URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload のうち少なくとも 1 つを含めるようにします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
      <DisplayName>EV-XML-Age</DisplayName>
      <Properties/>
      <Source>request</Source>
      <XMLPayload>
        <Namespaces/>
          <Variable name="age" type="integer">
              <XPath>/age</XPath>
          </Variable>
      </XMLPayload>
    </ExtractVariables>
    

NONEmptyPrefixMappedToEmptyURI

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    ExtractVariables [policy_name]: Non-empty prefix [prefix_name] cannot be mapped to empty uri.
    

エラー メッセージの例

Error Saving Revision 3
    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    

スクリーンショットの例

原因

このエラーは、Extract Variables ポリシーで <XMLPayload> 要素の下の <Namespace> 要素に接頭辞が定義されているが、URI が定義されていない場合に発生します。

診断

  1. エラーが発生した Extract Variables ポリシーと接頭辞の名前を特定します。これらの両方の項目は、エラー メッセージの中から見つけることができます。たとえば、次のエラーでは、ポリシー名は EV-XML-Age で、接頭辞は apigee です。

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
        
  2. 失敗した Extract Variables ポリシーの XML で、<XMLPayload> 要素の下の <Namespace> 要素に設定されている接頭辞の名前が、エラー メッセージ(上記のステップ 1)で識別された接頭辞の名前と一致することを確認します。たとえば、次のポリシーは、<Namespace> 要素に apigee という名前の接頭辞を指定しており、これはエラー メッセージ内の接頭辞と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
            <DisplayName>EV-XML-Age</DisplayName>
            <Source clearPayload="false">request</Source>
            <XMLPayload stopPayloadProcessing="false">
              <Namespaces>
                <Namespace prefix="apigee"></Namespace>
                <Namespace prefix="gmail">http://mail.google.com</Namespace>
              </Namespaces>
            <Variable name="legName" type="string">
            <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
                </Variable>
            </XMLPayload>
        </ExtractVariables>
        
  3. ステップ 2 で識別された特定の接頭辞を持つ <Namespace> 要素に有効な URI があるかどうかを確認します。URI がない場合は、それがエラーの原因です。

    上記の Extract Variables ポリシーの例では、接頭辞 apigee を持つ <Namespace> 要素に対応する URI が存在しないため、エラーが発生します。

    ExtractVariables EV-XML-Age: Non-empty prefix apigee cannot be mapped to empty uri.
    
        

解決策

Extract Variables ポリシー内で、接頭辞が定義されたすべての <Namespace> 要素に対応する URI が存在するようにします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Source clearPayload="false">request</Source>
        <XMLPayload stopPayloadProcessing="false">
        <Namespaces>
            <Namespace prefix="apigee">http://www.apigee.com</Namespace>
            <Namespace prefix="gmail">http://mail.google.com</Namespace>
         </Namespaces>
        <Variable name="legName" type="string">
            <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
        </Variable>
        </XMLPayload>
    </ExtractVariables>
    

DuplicatePrefix

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    ExtractVariables [policy_name]: Duplicate prefix [prefix_name].
    

エラー メッセージの例

Error Saving Revision 2
    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    

スクリーンショットの例

原因

このエラーは、Extract Variables ポリシーで <XMLPayload> 要素の下の <Namespace> 要素に同じ接頭辞が複数回定義されている場合に発生します。

たとえば、次のように接頭辞 apigee が 2 回定義されていると、このエラーが発生します。

<Namespace prefix="apigee">http://www.apigee.com</Namespace>
    <Namespace prefix="apigee">http://www.apigee.com</Namespace>
    

診断

  1. エラーが発生した Extract Variables ポリシーと接頭辞の名前を特定します。これらの両方の項目は、エラー メッセージの中から見つけることができます。たとえば、次のエラーでは、ポリシー名は EV-XML-Age で、接頭辞は apigee です。

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
        
  2. 失敗した Extract Variables ポリシーの XML で、<XMLPayload> 要素の下の <Namespace> 要素に設定されている接頭辞の名前が、エラー メッセージ(上記のステップ 1)で識別された接頭辞の名前と一致することを確認します。たとえば、次のポリシーは、<Namespace> 要素に apigee という名前の接頭辞を指定しており、これはエラー メッセージ内の接頭辞と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
            <DisplayName>EV-XML-Age</DisplayName>
            <Source clearPayload="false">request</Source>
            <XMLPayload stopPayloadProcessing="false">
              <Namespaces>
                  <Namespace prefix="gmail">http://mail.google.com</Namespace>
                  <Namespace prefix="apigee">http://www.apigee.com</Namespace>
                  <Namespace prefix="apigee">http://www.apigee.com</Namespace>
              </Namespaces>
              <Variable name="legName" type="string
                  <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
              </Variable>
            </XMLPayload>
          </ExtractVariables>
        
  3. ステップ 2 で識別された特定の接頭辞を持つ <Namespace> 要素が複数回定義されているかどうかを判別します。複数回定義されている場合は、それがエラーの原因になります。

    上記の Extract Variables ポリシーの例では、接頭辞 apigee を持つ <Namespace> 要素が 2 回定義されているため、エラーが発生します。

    ExtractVariables EV-XML-Age: Duplicate prefix apigee.
    
        

解決策

Extract Variables ポリシー内で、<Namespace> 要素内の接頭辞ごとに定義が 1 つのみとなるようにします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
        <DisplayName>EV-XML-Age</DisplayName>
        <Source clearPayload="false">request</Source>
        <XMLPayload stopPayloadProcessing="false">
          <Namespaces>
              <Namespace prefix="apigee">http://www.apigee.com</Namespace>
              <Namespace prefix="gmail">http://mail.google.com</Namespace>
          </Namespaces>
          <Variable name="legName" type="string">
              <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</Xpath>
          </Variable>
        </XMLPayload>
    </ExtractVariables>
    

NoXPathsToEvaluate

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    ExtractVariables [policy_name]:no xpaths to evaluate in variable name.
    

エラー メッセージの例

Error Saving Revision 4
    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
    

スクリーンショットの例

原因

Extract Variables ポリシーの <XMLPayload> 要素内に <XPath> 要素がない場合、API プロキシのデプロイは上記のエラーで失敗します。

診断

  1. エラー メッセージから、失敗した Extract Variables ポリシーを特定します。たとえば、次のエラーでは、ポリシー名は Extract-Variables-1 です。

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
        
  2. 失敗した Extract Variables ポリシーの XML で、<XPath> 子要素を持たない <XMLPayload> 要素があるかどうかを確認します。存在する場合、それがエラーの原因です。

    たとえば、<XMLPayload> 要素を持つ Extract Variables ポリシーを以下に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
            <DisplayName>Extract Variables-1</DisplayName>
            <Properties/>
            <Source clearPayload="false">request</Source>
            <VariablePrefix>apigee</VariablePrefix>
            <XMLPayload stopPayloadProcessing="false">
                <Namespaces/>
                <Variable name="HostReachable" type="boolean">
                </Variable>
            </XMLPayload>
        </ExtractVariables>
        

    <XPath> 要素がないため、API プロキシのデプロイは失敗します。

解決策

Extract Variables ポリシーの <XMLPayload> 要素の下に <XPath> 要素が定義されるようにします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="HostReachable" type="boolean">
                <XPath>/isReachable</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

EmptyXPathExpression

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    ExtractVariables [policy_name]: XPath expression is empty in variable name.
    

エラー メッセージの例

Error Saving Revision 6
    ExtractVariables Extract-Variables-1: XPath expression is empty in variable name.
    

スクリーンショットの例

原因

Extract Variables ポリシーの <XMLPayload> 要素内に空の <XPath> 要素がある場合、API プロキシのデプロイは失敗します。

診断

  1. エラー メッセージから、失敗した Extract Variables ポリシーを特定します。たとえば、次のエラーでは、ポリシー名は Extract-Variables-1 です。

    ExtractVariables Extract-Variables-1: no xpaths to evaluate in variable name.
        
  2. 失敗した Extract Variables ポリシーの XML で、空の <XPath> 子要素を持つ <XMLPayload> 要素があるかどうかを判別します。存在する場合、それがエラーの原因です。

    たとえば、<XMLPayload> 要素を持つ Extract Variables ポリシーを以下に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
            <DisplayName>Extract Variables-1</DisplayName>
            <Properties/>
            <Source clearPayload="false">request</Source>
            <VariablePrefix>apigee</VariablePrefix>
            <XMLPayload stopPayloadProcessing="false">
                <Namespaces/>
                <Variable name="address" type="string">
                    <XPath></XPath>
                </Variable>
            </XMLPayload>
        </ExtractVariables>
        

    <XMLPayload> 要素内に空の <XPath> 要素があるため、API プロキシのデプロイは失敗します。

解決策

Extract Variables ポリシーの <XMLPayload> 要素の下に、空でない有効な <XPath> 要素が定義されるようにします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="address" type="string">
                <XPath>/address</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

NoJSONPathsToEvaluate

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    ExtractVariables [policy_name]:no jsonpaths to evaluate in variable name.
    

エラー メッセージの例

Error Saving Revision 6
    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
    

スクリーンショットの例

原因

Extract Variables ポリシーの <JSONPayload> 要素内に <JSONPath> 要素がない場合、API プロキシのデプロイは上記のエラーで失敗します。

診断

  1. エラー メッセージから、失敗した Extract Variables ポリシーを特定します。たとえば、次のエラーでは、ポリシー名は Extract-Variables-1 です。

    ExtractVariables Extract-Variables-1: no jsonpaths to evaluate in variable name.
        
  2. 失敗した Extract Variables ポリシーの XML で、必須の <JSONPath> 子要素を持たない <JSONPayload> 要素があるかどうかを判別します。存在する場合、それがエラーの原因です。

    たとえば、<JSONPayload> 要素を持つ Extract Variables ポリシーを以下に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
            <DisplayName>Extract Variables-1</DisplayName>
            <Properties/>
            <JSONPayload>
                <Variable name="title">
                </Variable>
            </JSONPayload>
            <Source clearPayload="false">request</Source>
            <VariablePrefix>apigee</VariablePrefix>
        </ExtractVariables>
        

    <JSONPayload> 要素の下に <JSONPath> 子要素が定義されていないため、API プロキシのデプロイは失敗します。

解決策

Extract Variables ポリシーの <JSONPayload> 要素の下に <JSONPath> 要素が定義されるようにします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <JSONPayload>
            <Variable name="title">
                <JSONPath>$.book.title</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
    </ExtractVariables>
    

EmptyJSONPathExpression

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    ExtractVariables [policy_name]: JSONPath expression is empty in variable name.
    

エラー メッセージの例

Error Saving Revision 6
    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
    

スクリーンショットの例

原因

Extract Variables ポリシーの <JSONPayload> 要素内に空の <JSONPath> 要素がある場合、API プロキシのデプロイは失敗します。

診断

  1. エラー メッセージから、失敗した Extract Variables ポリシーを特定します。たとえば、次のエラーでは、ポリシー名は Extract-Variables-1 です。

    ExtractVariables Extract-Variables-1: JSONPath expression is empty in variable name.
        
  2. 失敗した Extract Variables ポリシーの XML で、空の <JSONPath> 子要素を持つ <JSONPayload> 要素があるかどうかを判別します。存在する場合、それがエラーの原因です。

    たとえば、<JSONPayload> 要素を持つ Extract Variables ポリシーを以下に示します。

        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
                <DisplayName>Extract Variables-1</DisplayName>
                <Properties/>
                <JSONPayload>
                    <Variable name="account_number" type="integer">
                        <JSONPath></JSONPath>
                    </Variable>
                </JSONPayload>
                <Source clearPayload="false">request</Source>
                <VariablePrefix>apigee</VariablePrefix>
            </ExtractVariables>
        

    <JSONPayload> 要素内に空の <JSONPath> 要素があるため、API プロキシのデプロイは失敗します。

解決策

Extract Variables ポリシーの <JSONPayload> 要素の下に、空でない有効な <JSONPath> 要素が定義されるようにします。次に例を示します。

<ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <JSONPayload>
            <Variable name="account_number" type="integer">
               <JSONPath>$.account.number</JSONPath>
            </Variable>
        </JSONPayload>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>apigee</VariablePrefix>
    </ExtractVariables>
    

MissingName

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    Error occurred while validation of bean [policy_name].xml Reason: - Required attribute name is missing in [element_name]
    

エラー メッセージの例

Error Saving Revision 6
    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
    

スクリーンショットの例

原因

Extract Variables ポリシーの、QueryParamHeaderFormParamVariable などのポリシー要素に、必須とされる name 属性が含まれない場合、API プロキシのデプロイは失敗します。

たとえば、Variable 要素に name 属性がない場合にこのエラーが発生します。

診断

  1. エラーが発生した Extract Variables ポリシーの名前と、name 属性がない要素を特定します。これらの項目は、エラー メッセージの中から見つけることができます。たとえば、次のエラーでは、ポリシー名は Extract-Variables-1 で、要素名は Variable です。

    Error occurred while validation of bean Extract-Variables-1.xml. Reason: - Required attribute name is missing in Variable
        
  2. 失敗した Extract Variables ポリシーの XML で、上記のステップ 1 で特定した名前を持つすべての要素に name 属性があることを確認します。name 属性がない要素があれば、それがエラーの原因になります。

    たとえば、次の Extract Variables ポリシーでは <Variable> 要素が定義されています。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
            <DisplayName>Extract Variables-1</DisplayName>
            <Properties/>
            <Variable type="boolean">
                <Pattern>{isAccountActive}</Pattern>
            </Variable>
        </ExtractVariables>
        

    Variable 要素に name 属性が指定されていないため、API プロキシのデプロイは失敗します。

解決策

Extract Variables ポリシーで、QueryParamHeaderFormParamVariable の要素に必須の name 属性が含まれるようにしてください。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Variable name="account_active" type="boolean">
            <Pattern>{isAccountActive}</Pattern>
        </Variable>
    </ExtractVariables>
    

PatternWithoutVariable

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Saving Revision [revision_number]
    Pattern [pattern] should have atleast one variable in ExtractVariables stepDefinition [policy_name]
    

エラー メッセージの例

Error Saving Revision 7
    Pattern /a/b/ should have atleast one variable in ExtractVariables stepDefinition ExtractVariables-1.
    

スクリーンショットの例

原因

Extract Variables ポリシーの <Pattern> 要素内に変数が指定されていない場合、API プロキシのデプロイは失敗します。<Pattern> 要素には、抽出されたデータが格納される変数の名前が必要です。

診断

  1. エラーが発生した Extract Variables ポリシーの名前と、変数が存在しないパターンを特定します。これらの項目は、エラー メッセージの中から見つけることができます。たとえば、次のエラーでは、ポリシー名は Extract-Variables-1 で、要素名は /a/b です。

    Pattern /a/b/ should have atleast one variable in ExtractVariables stepDefinition ExtractVariables-1.
        
  2. 失敗した Extract Variables ポリシーの XML で、<Pattern> 要素に設定されているパターンが、エラー メッセージ(上記のステップ 1)で識別されたパターンと一致することを確認します。たとえば、次のポリシーではパターン /a/b を指定し、これはエラー メッセージの内容と一致します。

    たとえば、<Pattern> 要素を持つ Extract Variables ポリシーを以下に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractVariables-1">
           <Source>request</Source>
           <URIPath>
              <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
              <Pattern ignoreCase="true">/a/b/</Pattern>
              <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
           </URIPath>
           <VariablePrefix>urirequest</VariablePrefix>
        </ExtractVariables>
        
  3. ステップ 2 で特定された <Pattern> 要素に変数がないかどうかを確認します。変数は中括弧で囲む必要があります。パターンに変数がない場合、それがエラーの原因になります。

    パターン /a/b を含む <Pattern> 要素に変数が含まれていないため、API プロキシのデプロイは失敗します

    <Pattern ignoreCase="true">/a/b/</Pattern>
    
        

解決策

すべての <Pattern> 要素に変数(中括弧で囲まれた名前)が含まれるようにします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractVariables-1">
       <Source>request</Source>
       <URIPath>
          <Pattern ignoreCase="true">/a/{pathSeg}</Pattern>
          <Pattern ignoreCase="true">/a/b/{pathSeg}</Pattern>
          <Pattern ignoreCase="true">/a/b/c/{pathSeg}</Pattern>
       </URIPath>
       <VariablePrefix>urirequest</VariablePrefix>
    </ExtractVariables>
    

CannotBeConvertedToNodeset

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Deploying Revision [revision_number]
    ExtractVariables [policy_name]: Result of xpath [policy_name] cannot be converted to nodeset. Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
    

エラー メッセージの例

Error Deploying Revision 4 to test
    ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
    

スクリーンショットの例

原因

Extract Variables ポリシーに、<Variable> タイプが nodeset として定義されている <XPath> 式があるが、式を nodeset に変換できない場合、API プロキシのデプロイは失敗します。

診断

  1. エラーが発生した Extract Variables ポリシーと、nodeset に変換できない XPath を特定します。これらの両方の項目は、エラー メッセージの中から見つけることができます。たとえば、次のエラーでは、ポリシー名は Extract-Variables-1 で、XPath は 123 です。

    ExtractVariables Extract-Variables-1: Result of xpath 123 cannot be converted to nodeset. Context Revision:4;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
        
  2. 失敗した Extract Variables ポリシーの XML で、<XPath> 要素に設定されている XPath が、エラー メッセージ(上記のステップ 1)で識別された XPath と一致することを確認します。たとえば、次のポリシーでは XPath を 123 として指定し、これはエラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
            <DisplayName>Extract Variables-1</DisplayName>
            <Properties/>
            <Source clearPayload="false">request</Source>
            <VariablePrefix>visitor</VariablePrefix>
            <XMLPayload stopPayloadProcessing="false">
                <Namespaces/>
                <Variable name="age" type="nodeset">
                    <XPath>123</XPath>
                </Variable>
            </XMLPayload>
        </ExtractVariables>
        
  3. 上記のステップ 2 で特定された <XPath> に対応する <Variable> 要素のタイプを調べます。<Variable> タイプが nodeset の場合、それがこのエラーの原因です。

    Extract Variables ポリシーの例では <XPath> 式が 123 であることに注意してください。

    <XPath>123</XPath>
        

    123 は nodeset に変換できません。したがって、API プロキシのデプロイは失敗します。

解決策

<Variable> タイプが nodeset として定義されている場合、Extract Variables ポリシーで使用される <XPath> 式を nodeset に変換できることを確認してください。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract-Variables-1">
        <DisplayName>Extract Variables-1</DisplayName>
        <Properties/>
        <Source clearPayload="false">request</Source>
        <VariablePrefix>visitor</VariablePrefix>
        <XMLPayload stopPayloadProcessing="false">
            <Namespaces/>
            <Variable name="age" type="nodeset">
                <XPath>/visitor/age</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

InvalidPattern

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

Error Deploying Revision [revision_number]
    Pattern [pattern] is invalid in ExtractVariables stepDefinition [policy_name]
    

エラー メッセージの例

Error Deploying Revision 18 to test
    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
    

スクリーンショットの例

原因

<Pattern> 要素の定義が、Extract Variables ポリシー内の URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload などのすべての要素で無効な場合、API プロキシのデプロイは失敗します。

診断

  1. エラー メッセージから、失敗した Extract Variables ポリシーを特定します。たとえば、次のエラーでは、ポリシー名は Extract-Variables-2 です。

    Pattern {*} is invalid in ExtractVariables stepDefinition ExtractVariables-2.
        
  2. 失敗した Extract Variables ポリシーの XML で、URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload のいずれかの要素が存在して <Pattern> 要素を含んでいるかどうかを確認します。

    たとえば、<QueryParam> 要素内に <Pattern> 要素を含む Extract Variables ポリシーの例を以下に示します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables name="ExtractVariables-2">
            <DisplayName>ExtractVariables-2</DisplayName>
            <Source>request</Source>
            <QueryParam name="code">
                <Pattern ignoreCase="true">{*}</Pattern>
            </QueryParam>
            <VariablePrefix>queryinfo</VariablePrefix>
        </ExtractVariables>
        
  3. <Pattern> 要素の定義を調べます。無効な定義を持つ <Pattern> 要素があれば、それがエラーの原因です。

    上記の Extract Variables ポリシーの例では、<QueryParam> 要素内の <Pattern> 定義が無効であるため、API プロキシのデプロイは失敗します。照合と変数の作成についてもご覧ください。

    <Pattern ignoreCase="true">{*}</Pattern>
    
        

解決策

Extract Variables ポリシー内の URIPathQueryParamHeaderFormParamXMLPayloadJSONPayload 要素内の <Pattern> 要素の定義が有効であるようにしてください。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables name="ExtractVariables-2">
        <DisplayName>Extract a value from a query parameter</DisplayName>
        <Source>request</Source>
        <QueryParam name="code">
            <Pattern ignoreCase="true">{code}</Pattern>
        </QueryParam>
        <VariablePrefix>queryinfo</VariablePrefix>
    </ExtractVariables>
    

照合と変数の作成についてもご覧ください。

XPathCompilationFailed

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    Error Deploying Revision [revision_number]
    ExtractVariables [policy_name]: Failed to compile xpath [xpath] Context Revision:[revision_number]; APIProxy:[proxy_name]; Organization:[org_name]; Environment:[env_name].
    

エラー メッセージの例

Error Deploying Revision 1 to test
    ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
    

スクリーンショットの例

原因

<XPath> 要素で使用される接頭辞または値が Extract Variables ポリシー内の宣言された名前空間の一部でない場合、API プロキシのデプロイは失敗します。

名前空間、XPath、接頭辞の詳細については、XML Namespaces and How They Affect XPath and XSLT をご覧ください。

診断

  1. エラーが発生した Extract Variables ポリシーと、コンパイルできなかった XPath を特定します。これらの両方の項目は、エラー メッセージの中から見つけることができます。たとえば、次のエラーでは、ポリシー名は EV-XML-Age で、XPath は /apigee:Directions/apigee:route/apigee:leg/apigee:name です。

    ExtractVariables EV-XML-Age: Failed to compile xpath /apigee:Directions/apigee:route/apigee:leg/apigee:name. Context Revision:1;APIProxy:EV-XML;Organization:aprabhashankar-eval;Environment:test.
        
  2. 失敗した Extract Variables ポリシーの XML で、<XPath> 要素に設定されている XPath が、エラー メッセージ(上記のステップ 1)で識別された XPath と一致することを確認します。たとえば、次のポリシーは、XPath を /apigee:Directions/apigee:route/apigee:leg/apigee:name として指定し、これはエラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
          <DisplayName>EV-XML-Age</DisplayName>
          <Source clearPayload="false">request</Source>
          <XMLPayload stopPayloadProcessing="false">
            <Namespaces>
                <Namespace prefix="gmail">http://mail.google.com</Namespace>
            </Namespaces>
            <Variable name="legName" type="string">
            <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
                </Variable>
          </XMLPayload>
        </ExtractVariables>
        
  3. Extract Variables ポリシーの <Namespaces> および <XPath> 要素を調べます。エラー メッセージに示された特定の <XPath> が、Extract Variables ポリシーで宣言されている名前空間の一部ではない接頭辞または値を使用する場合、これがエラーの原因です。

    Extract Variables ポリシーの例では、特定の <XPath> が接頭辞 apigee を使用していることに注意してください。

    <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
        

    しかし、接頭辞 apigee はいずれの <Namespace> 要素にも定義されていないため、<XPath> のコンパイルに失敗してデプロイの失敗につながります。

解決策

<XPath> 要素で使用されているすべての名前空間が Extract Variables ポリシーで宣言されるようにします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="EV-XML-Age">
      <DisplayName>EV-XML-Age</DisplayName>
      <Source clearPayload="false">request</Source>
      <XMLPayload stopPayloadProcessing="false">
        <Namespaces>
            <Namespace prefix="apigee">http://www.apigee.com</Namespace>
            <Namespace prefix="gmail">http://mail.google.com</Namespace>
        </Namespaces>
        <Variable name="legName" type="string">
            <XPath>/apigee:Directions/apigee:route/apigee:leg/apigee:name</XPath>
        </Variable>
      </XMLPayload>
    </ExtractVariables>