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

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

InvalidResourceUrlFormat

エラー メッセージ

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

Error Deploying Revision revision_number to environment
Invalid resource url format. Resource url is invalid_URL.

エラー メッセージの例

Error Deploying Revision 1 to test
Invalid resource url format. Resource url is jsc:add_variables.js.

スクリーンショットの例

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

原因

JavaScript ポリシーの <ResourceURL> または <IncludeURL> 要素で指定されたリソース URL の形式が無効な場合、API プロキシのデプロイが失敗します。

リソース URL を指定する正しい形式は、次のとおりです。

<ResourceURL>jsc://<file_name>.js</ResourceURL>
<IncludeURL>jsc://<file_name>.js</IncludeURL>

たとえば、<ResourceURL> 要素が次のように指定されている場合、規定のパターンに従っていないため、API プロキシのデプロイは失敗します。

<ResourceURL>jsc:add_variables.js</ResourceURL>

診断

  1. JavaScript ポリシーで使用されている無効なリソース URL 形式を特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーでは無効なリソース URL 形式は jsc:add_variables.js です。

      Error Deploying Revision 1 to test
        Invalid resource url format. Resource url is jsc:add_variables.js.
    
  2. エラーが発生した特定の API プロキシで、すべての JavaScript ポリシーを調べます。<ResourceURL> 要素または <IncludeURL> 要素で指定されたリソース URL が上記の手順 1 で特定した無効なエントリに一致する JavaScript ポリシーがある場合、それがエラーの原因です。

    たとえば、次のポリシーではリソース URL を jsc:add_variables.js として指定しており、エラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
        <DisplayName>js-TotalVariable</DisplayName>
        <Properties/>
        <ResourceURL>jsc:add_variables.js</ResourceURL>
    </Javascript>
    

    リソース URL が無効な jsc:add_variables.js として指定されているため、API プロキシのデプロイは次のエラーで失敗します。

    Invalid resource url format. Resource url is jsc:add_variables.js.
    

解決策

JavaScript ポリシーの <ResourceURL> 要素または <IncludeURL> 要素で指定するリソース URL 形式を、有効な形にします。次に例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
    <DisplayName>js-TotalVariable</DisplayName>
    <Properties/>
    <ResourceURL>jsc://add_variables.js</ResourceURL>
</Javascript>

InvalidResourceUrlReference

エラー メッセージ

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

Error Deploying Revision revision_number to environment
Invalid resource url ref invalid_reference in policy policy_name in org_name

エラー メッセージの例

Error Deploying Revision 8 to test
Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval

スクリーンショットの例

テストへのリビジョン 8 のデプロイエラー。

原因

<ResourceURL> 要素と <IncludeURL> 要素が存在しない JavaScript ファイルを参照している場合、API プロキシのデプロイは失敗します。

ローカルマシンからプロキシ バンドルをデプロイする場合は、JavaScript ソースファイルを /apiproxy/resources/jsc に保存する必要があります。この場合、ソースファイルのスコープは API プロキシになります。

Apigee UI では、JavaScript ソースファイルは API プロキシ エディタの [Navigator] ペインの [Scripts] セクションにある jsc の下に表示されます。環境レベルのリポジトリにリソース ファイルを格納することもできます(org や env 内のすべてのプロキシで JavaScript コードを使用できるようにするためなど)。

ポリシーで指定されているリソース ファイルが、使用可能なスコープ(プロキシまたは環境)のいずれにも見つからない場合は、このエラーが発生します。

診断

  1. エラーが発生した JavaScript ポリシーのうち、無効なリソース URL 参照を含むものを特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーではポリシー名は js-TotalVariable で、無効なリソース URL 参照は jsc://dependent_js.js です。

    Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval
    
  2. 失敗した JavaScript ポリシーで指定されたリソース URL 参照が、エラー メッセージで特定された値(上記の手順 1)と一致することを確認します。たとえば、次のポリシーではリソース URL を jsc://dependent_js.js として指定しており、エラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
      <DisplayName>js-TotalVariable</DisplayName>
      <Properties/>
      <ResourceURL>jsc://add_variables.js</ResourceURL>
      <IncludeURL>jsc://dependent_js.js</IncludeURL>
    </Javascript>
    
  3. 手順 1 のファイルで指定しているソースファイルが、特定の API プロキシ バンドルに含まれているか、または環境スコープに存在するかどうかを確認します。

    1. ファイルが特定の API プロキシ バンドルの一部であるかどうかを確認するには、以下の手順のいずれかを行います。
      1. Apigee UI で、API プロキシの [Scripts] セクションにこのファイルがあるかどうか確認する。
      2. API プロキシ バンドルをダウンロードし、このファイルが存在するかどうか検索する。
    2. ファイルが特定の API プロキシ バンドルの一部でない場合は、環境レベルにそのファイルが存在するかどうかを確認します。この調査には、リソース ファイル API を使用できます。

    ファイルが API プロキシまたは環境レベルに存在しない場合、それがエラーの原因です。

    上記の例では、無効な JavaScript ファイル名が dependent_js.js です。以下のスクリーンショットでは、ポリシー内のリソース URL として指定されたファイルが [Scripts] セクションに表示されていないことに注意してください。したがって、ファイルは API プロキシの一部ではありません。ファイルが環境レベルで存在しない場合も、API プロキシのデプロイは次のエラーで失敗します。

    Invalid resource url ref jsc://dependent_js.js in policy js-TotalVariable in aprabhashankar-eval
    

    無効なリソース URL エラー。

解決策

<ResourceURL> 要素と <IncludeURL> 要素で指定される JavaScript ファイルが、API プロキシレベルまたは環境レベルに存在する有効なファイルを参照するようにします。

上記の JavaScript ポリシーの例を修正するには、dependent_js.js ファイルを API プロキシ バンドルに追加します。以下のスクリーンショットでは、<ResourceURL> 要素と <IncludeURL> 要素で指定された JavaScript ファイルが、API プロキシ バンドルの [Scripts] セクションに表示されていることが確認できます。

修正された例。

WrongResourceType

エラー メッセージ

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

Error Deploying Revision revision_number to environment
Resource JavaScript_file is the wrong type. It is invalid_type: but JavaScript steps use type jsc:.

エラー メッセージの例

Error Deploying Revision 2 to test
Resource js_checkType.js is the wrong type. It is node: but JavaScript steps use type jsc:.

スクリーンショットの例

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

原因

このエラーは、デプロイ中に JavaScript ポリシーの <ResourceURL> 要素と <IncludeURL> 要素が jsc(JavaScript ファイル)以外のリソースタイプを参照する場合に発生します。

たとえば、<IncludeURL> 要素が次のように宣言されていると、API プロキシのデプロイが失敗します。

<IncludeURL>node://javascript-dependency.js</IncludeURL>

これは、誤った node リソースタイプを参照しているためです。

診断

  1. JavaScript ポリシーで使用されている無効なリソースタイプを特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーでは無効なリソースタイプは node です。

    Resource js_checkType.js is the wrong type. It is node: but JavaScript steps use type jsc:.
    
  2. エラーが発生した特定の API プロキシで、すべての JavaScript ポリシーを調べます。<ResourceURL> 要素または <IncludeURL> 要素で指定されたリソースが、上記のステップ 1 で特定した無効なリソースタイプと一致する JavaScript ポリシーがある場合、それがエラーの原因です。

    たとえば、次のポリシーではリソースタイプが node として指定されており、エラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
        <DisplayName>js-TotalVariable</DisplayName>
        <Properties/>
        <ResourceURL>node://js_checkType.js</ResourceURL>
        <IncludeURL>jsc://javascript-dependency.js</IncludeURL>
    </Javascript>
    

    リソースタイプが無効な node として指定されているため、API プロキシのデプロイは次のエラーで失敗します。

    Resource js_checkType.js is the wrong type. It is node: but JavaScript steps use type jsc:.
    

解決策

JavaScript ポリシーの <ResourceURL> 要素と <IncludeURL> 要素が、必ず jsc リソースタイプを参照するようにします。

上記の例を修正するには、<ResourceURL> 要素を変更して、jsc リソースタイプを指定します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-TotalVariable">
    <DisplayName>js-TotalVariable</DisplayName>
    <Properties/>
    <ResourceURL>jsc://js_checkType.js</ResourceURL>
    <IncludeURL>jsc://javascript-dependency.js</IncludeURL>
</Javascript>

NoResourceURLOrSource

エラー メッセージ

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

Error Saving Revision revision_number
Bundle is invalid. Errors:[Entity : Policy-policy_name, No ResourceURL or Source;].

エラー メッセージの例

Error Saving Revision 10
Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].

スクリーンショットの例

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

原因

次のシナリオでは、JavaScript ポリシーのデプロイがこのエラーで失敗することがあります。

  1. <ResourceURL> 要素が宣言されていない場合、またはこの要素内にリソース URL が定義されていない場合。<ResourceURL> 要素は必須の要素です。
  2. <IncludeURL> 要素が宣言されていて、この要素内にリソース URL が定義されていない場合にも発生することがあります。<IncludeURL> 要素は省略可能ですが、宣言した場合は、リソース URL を <IncludeURL> 要素内に指定する必要があります。

たとえば、<IncludeURL> 要素が次のように宣言されていると、API プロキシのデプロイが失敗します。

<IncludeURL></IncludeURL>

診断

  1. エラーが発生した JavaScript ポリシーを特定します。この情報はエラー メッセージで確認できます。たとえば次のエラーでは、ポリシー名は Policy-js-example です。

    Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].
    
  2. 失敗した JavaScript ポリシーの XML ファイルで、次のチェックを行います。

    1. <ResourceURL> 要素を宣言し、要素にリソース URL を定義する必要があります。
    2. <IncludeURL> 要素が宣言されている場合は、その中でリソース URL を指定する必要があります。<IncludeURL> 要素の宣言は省略できます。

    上記チェックが 1 つでも不合格の場合、それがエラーの原因です。

    例 1: 次のポリシーでは <ResourceURL> 要素が宣言されていません。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
    </Javascript>
    

    <ResourceURL> 要素が宣言されていないため、API プロキシのデプロイは失敗し、次のエラーが返されます。

    Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].
    

    例 2: 次のポリシーには、空の <IncludeURL> 要素があります。

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
      <DisplayName>js-example</DisplayName>
      <Properties/>
      <ResourceURL>jsc://check_var.js</ResourceURL>
      <IncludeURL></IncludeURL>
  </Javascript>

<IncludeURL> 要素にリソース URL が含まれていないため、API プロキシのデプロイは失敗し、次のエラーが返されます。

  Bundle is invalid. Errors:[Entity : Policy-js-example, No ResourceURL or Source;].

解決策

JavaScript ポリシーで次のことを確実に行います。

  1. <ResourceURL> 要素を宣言し、この要素内でリソース URL を定義します。<ResourceURL> 要素は必須の要素です。
  2. <IncludeURL> 要素が宣言されている場合、インクルード リソース URL をこの要素内に定義する必要があります。<IncludeURL> 要素は省略できますが、宣言した場合は、リソース URL を <IncludeURL> 要素内に指定する必要があります。

    上記の例 1 を修正するには、<ResourceURL> 要素に有効な JavaScript ファイルを指定します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
        <ResourceURL>jsc://check_var.js</ResourceURL>
    </Javascript>
    

    上記の例 2 を修正するには、<IncludeURL> 要素に有効な JavaScript ファイルを指定します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="js-example">
        <DisplayName>js-example</DisplayName>
        <Properties/>
        <ResourceURL>jsc://check_var.js</ResourceURL>
        <IncludeURL>jsc://js_dependency.js</IncludeURL>
    </Javascript>