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

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 では、PythonScript ソースファイルは、API プロキシ エディタの [Navigator] ペインの [Scripts] セクションにある py の下に表示されます(以下を参照)。

組織レベルと環境レベルのリポジトリにリソース ファイルを格納することもできます(org や env 内のすべてのプロキシで 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 セクションに表示されていることが確認できます。