Pemecahan masalah error deployment kebijakan PythonScript

Anda sedang melihat dokumentasi Apigee Edge.
Buka Dokumentasi Apigee X.
info

ini.

InvalidResourceUrlFormat

Pesan error

Penyebaran proxy API melalui UI Edge atau API pengelolaan Edge gagal dengan pesan kesalahan ini:

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

Contoh pesan error

Error Deploying Revision 2 to prod
Invalid resource url format. Resource url is py:myscript.py.

Screenshot contoh

Penyebab

Jika format URL resource ditentukan dalam elemen <ResourceURL> atau <IncludeURL> Kebijakan PythonScript tidak valid, maka deployment proxy API gagal.

Format yang benar adalah seperti yang ditunjukkan di bawah ini:

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

Misalnya, jika elemen <ResourceURL> ditetapkan seperti yang ditunjukkan di bawah ini, maka deployment proxy API gagal karena tidak mengikuti pola yang diperlukan:

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

Diagnosis

  1. Identifikasi format URL resource yang tidak valid yang digunakan dalam kebijakan PythonScript. Anda dapat menemukan informasi ini dari pesan error. Misalnya, dalam error berikut, format URL resource yang tidak valid adalah py:myscript.py:

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. Periksa semua kebijakan PythonScript di Proxy API tertentu tempat kegagalan terjadi. Jika ada kebijakan PythonScript di mana URL resource yang ditentukan dalam elemen <ResourceURL> atau <IncludeURL> cocok dengan entri tidak valid yang diidentifikasi pada langkah #1 di atas, maka itulah penyebab errornya.

    Misalnya, kebijakan berikut menentukan URL resource sebagai py:myscript.py, yang cocok dengan isi pesan error:

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

    Karena URL resource ditetapkan sebagai py:myscript.py, yang tidak valid, deployment Proxy API gagal dan disertai error:

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

Resolusi

Pastikan format URL resource yang ditentukan di elemen <ResourceURL> kebijakan PythonScript valid. Contoh:

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

Pesan error

Penyebaran proxy API melalui UI Edge atau API pengelolaan Edge gagal dengan pesan kesalahan ini:

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

Contoh pesan error

Error Deploying Revision 2 to prod
Invalid resource url ref py://myscript.py in policy Python_script in myorg

Screenshot contoh

Penyebab

Jika elemen <ResourceURL> dan <IncludeURL> merujuk ke file PythonScript yang tidak ada, maka deployment proxy API akan gagal. Jika Anda men-deploy paket proxy dari mesin lokal, maka PythonScript file sumber harus disimpan di /apiproxy/resources/py(pada cakupan proxy API).

Di UI Edge, file sumber PythonScript muncul di bawah py pada bagian Scripts panel Navigator editor proxy API seperti ditunjukkan di bawah ini:

Anda juga dapat menyimpan file resource di repositori tingkat organisasi dan lingkungan (misalnya, agar kode PythonScript tersedia untuk semua proxy di organisasi atau env). Jika file resource yang ditentukan dalam kebijakan tidak dapat ditemukan, error ini akan terjadi.

Diagnosis

  1. Identifikasi kebijakan PythonScript tempat error terjadi dan referensi URL resource yang tidak valid. Anda dapat menemukan informasi ini dari pesan error. Misalnya, dalam error berikut, nama kebijakannya adalah Python_script dan referensi URL resource yang tidak valid adalah py://myscript.py:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. Pastikan referensi URL resource yang ditentukan dalam kebijakan PythonScript yang gagal cocok dengan nilai yang diidentifikasi dalam pesan error (langkah #1 di atas). Misalnya, kebijakan berikut menetapkan referensi URL resource sebagai py://myscript.py, yang cocok dengan isi pesan error:

    <?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. Periksa apakah file yang diidentifikasi di langkah #1 adalah bagian dari paket Proxy API tertentu, atau ada di cakupan organisasi atau lingkungan.

    1. Untuk memeriksa apakah file tersebut merupakan bagian dari paket Proxy API tertentu, ikuti salah satu langkah di bawah:
      1. Di UI Edge, periksa apakah file ini ada di bagian Scripts dari proxy API.
      2. Download paket Proxy API dan telusuri apakah file tersebut ada.
    2. Jika file bukan bagian dari paket Proxy API tertentu, periksa apakah file tersebut ada di tingkat organisasi atau lingkungan. Anda dapat menggunakan Resource Files API untuk investigasi ini.

    Jika file tidak ada di tingkat Proxy, organisasi, atau lingkungan API, maka itulah penyebab error.

    Pada contoh di atas, nama file PythonScript yang tidak valid adalah myscript.py. Pada screenshot di bawah, perhatikan bahwa file yang ditentukan sebagai URL resource dalam kebijakan tidak muncul di bagian Skrip. Selain itu, file tersebut tidak ada di tingkat organisasi atau lingkungan. Oleh karena itu, deployment Proxy API gagal dengan error:

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

Resolusi

Pastikan file PythonScript yang ditentukan dalam elemen <ResourceURL> dan <IncludeURL> merujuk ke file valid yang ada di tingkat lingkungan, organisasi, atau Proxy API.

Untuk memperbaiki contoh kebijakan PythonScript yang ditampilkan di atas, tambahkan file myscript.py ke paket Proxy API. Pada screenshot di bawah, Anda dapat melihat bahwa file PythonScript yang ditentukan dalam elemen <ResourceURL> dan <IncludeURL> terlihat di bagian Skrip pada paket Proxy API: