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

現在、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 2 to prod
Invalid resource url format. Resource url is py:myscript.py.

スクリーンショットの例

リビジョン 2 を本番環境にデプロイ中にエラーが発生しました。

原因

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

正しい形式は以下のとおりです。

<ResourceURL>py://file_name.py</ResourceURL>
<IncludeURL>py://file_name.py</IncludeURL>

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

<ResourceURL>py:myscript.py</ResourceURL>

診断

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

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

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

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

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

    Invalid resource url format. Resource url is py:myscript.py.

解決策

PythonScript ポリシーの <ResourceURL> 要素で指定されたリソース URL 形式が有効であることを確認します。次に例を示します。

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

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 2 to prod
Invalid resource url ref py://myscript.py in policy Python_script in myorg

スクリーンショットの例

リビジョン 2 を本番環境にデプロイ中にエラーが発生しました。

原因

<ResourceURL> 要素と <IncludeURL> 要素が存在しない PythonScript ファイルを参照している場合、API プロキシのデプロイは失敗します。ローカルマシンからプロキシ バンドルをデプロイする場合は、PythonScript ソースファイルを /apiproxy/resources/py に(API プロキシ スコープで)保存する必要があります。

Apigee UI では、PythonScript ソースファイルは、次のように、API プロキシ エディタで [Navigator] ペインの [Scripts] セクションの py の下に表示されます。

[API Proxy Editor] ナビゲーション パネルの [Scripts] セクション。

環境レベルのリポジトリにリソース ファイルを格納することもできます(たとえば、環境内のすべてのプロキシで PythonScript コードを使用できるようにします)。ポリシーで指定されたリソース ファイルが見つからなかった場合、このエラーが発生します。

診断

  1. エラーが発生した PythonScript ポリシーと、無効なリソース URL 参照を特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーでは、ポリシー名は Python_script で、無効なリソース URL 参照は py://myscript.py です。

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

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

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

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

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

    Invalid resource url ref py://myscript.py in policy Python_script in myorg

無効なリソース URL。

解決策

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

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

API プロキシ バンドルの Scripts セクション。