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

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

InvalidResourceUrlFormat

エラー メッセージ

Edge UI または Edge 管理 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.

スクリーンショットの例

原因

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

エラー メッセージ

Edge UI または Edge 管理 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

スクリーンショットの例

原因

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

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

また、組織レベルと環境レベルのリポジトリにリソース ファイルを保存することもできます(たとえば、組織または環境内のすべてのプロキシで 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. Edge 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
    

解決策

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

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