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

現在、ApigeeApigee ハイブリッドのドキュメントを表示しています。
Apigee Edge のドキュメントを表示する

NothingToExtract

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

リビジョン 2 の保存エラー。

原因

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

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

診断

エラー メッセージで指定されている 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 のいずれかが含まれていることを確認します。次に例を示します。

<?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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

リビジョン 3 の保存エラー。

原因

このエラーは、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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

リビジョン 2 の保存エラー。

原因

このエラーは、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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

リビジョン 4 の保存エラー。

原因

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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

リビジョン 6 の保存エラー。

原因

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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

リビジョン 6 の保存エラー。

原因

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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

リビジョン 6 の保存エラー。

原因

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

エラー メッセージ

Apigee UI または 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

スクリーン ショットの例

リビジョン 6 の保存エラー。

原因

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

エラー メッセージ

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

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

エラー メッセージの例

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

スクリーン ショットの例

リビジョン 7 の保存エラー。

原因

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

診断

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

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

    3 つの <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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

テストするリビジョン 4 のデプロイエラー。

原因

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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

テストするリビジョン 18 のデプロイエラー。

原因

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

診断

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

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

    たとえば、<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

エラー メッセージ

Apigee UI または 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.

スクリーン ショットの例

テストするリビジョン 1 のデプロイエラー。

原因

<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>