PythonScript politika dağıtımı hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

InvalidResourceUrlFormat

Hata mesajı

Edge kullanıcı arayüzü veya Edge management API üzerinden API proxy'si dağıtıldığında şu hata mesajı gösterilir:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

Kaynak URL'sinin biçimi, URL'nin <ResourceURL> veya <IncludeURL> öğesinde belirtilmişse PythonScript politikası geçersizse API proxy'sinin dağıtımı başarısız olur.

Doğru biçim aşağıda gösterildiği gibidir:

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

Örneğin, <ResourceURL> öğesi aşağıda gösterildiği gibi belirtilirse gerekli kalıbı izlemediğinden API proxy'sinin dağıtımı başarısız oluyor:

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

Teşhis

  1. PythonScript politikasında kullanılan geçersiz kaynak URL'si biçimini tanımlayın. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada geçersiz kaynak URL'si biçimi py:myscript.py şeklindedir:

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. Hatanın oluştuğu ilgili API Proxy'sinde tüm PythonScript politikalarını inceleyin. <ResourceURL> veya <IncludeURL> öğesinde belirtilen kaynak URL'nin yukarıdaki 1. adımda tanımlanan geçersiz girişle eşleştiği bir PythonScript politikası varsa hatanın nedeni budur.

    Örneğin, aşağıdaki politika, kaynak URL'sini hata mesajındakiyle eşleşen py:myscript.py olarak belirtir:

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

    Kaynak URL'si geçersiz olan py:myscript.py olarak belirtildiğinden, API Proxy'sinin dağıtımı şu hatayla başarısız oluyor:

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

Çözünürlük

PythonScript politikasının <ResourceURL> öğesinde belirtilen kaynak URL biçiminin geçerli olduğundan emin olun. Örneğin:

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

Hata mesajı

Edge kullanıcı arayüzü veya Edge management API üzerinden API proxy'si dağıtıldığında şu hata mesajı gösterilir:

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

Örnek hata mesajı

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

Örnek ekran görüntüsü

Neden

<ResourceURL> ve <IncludeURL> öğeleri bir PythonScript dosyasına başvuruda bulunuyorsa API proxy'sinin dağıtımı başarısız olur. Yerel makinenizden bir proxy paketi dağıtıyorsanız PythonScript kaynak dosyaları /apiproxy/resources/py(API proxy kapsamında) altında depolanmalıdır.

Edge kullanıcı arayüzünde, PythonScript kaynak dosyaları Komut Dosyaları bölümündeki py altında görünür aşağıda gösterildiği gibi, API proxy düzenleyicisinin Gezinme bölmesinin:

Kaynak dosyalarını kuruluş ve ortam düzeyindeki depolarda da depolayabilirsiniz (örneğin, PythonScript kodunun bir kuruluş veya env içindeki tüm proxy'ler tarafından kullanılabilmesini sağlamak için). Politikada belirtilen herhangi bir kaynak dosyası bulunamazsa bu hata oluşur.

Teşhis

  1. Hatanın oluştuğu PythonScript politikasını ve geçersiz kaynak URL referansını tanımlayın. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada politika adı Python_script, geçersiz kaynak URL referansı ise py://myscript.py şeklindedir:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. Başarısız PythonScript politikasında belirtilen kaynak URL referansının, hata mesajında tanımlanan değerle eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki politika, kaynak URL referansını hata mesajındaki referansla eşleşen py://myscript.py olarak belirtir:

    <?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. adımda tanımlanan dosyanın, belirli bir API Proxy paketinin parçası olup olmadığını veya kuruluş ya da ortam kapsamında bulunup bulunmadığını kontrol edin.

    1. Dosyanın belirli bir API Proxy paketinin parçası olup olmadığını kontrol etmek için aşağıdaki adımlardan birini uygulayın:
      1. Edge kullanıcı arayüzünde bu dosyanın API proxy'sinin Komut Dosyaları bölümünde olup olmadığını kontrol edin.
      2. API Proxy paketini indirin ve dosya varsa arama yapın.
    2. Dosya, belirli bir API Proxy paketinin parçası değilse kuruluş veya ortam düzeyinde olup olmadığını kontrol edin. Bu inceleme için Resource Files API'yi kullanabilirsiniz.

    Dosya API Proxy'si, kuruluş veya ortam düzeyinde yoksa hatanın nedeni budur.

    Yukarıdaki örnekte, geçersiz PythonScript dosya adı myscript.py'dir. Aşağıdaki ekran görüntüsünde, politikada kaynak URL'si olarak belirtilen dosyanın Komut Dosyaları bölümünde görünmediğine dikkat edin. Ayrıca, dosya kuruluş veya ortam düzeyinde yok. Bu nedenle, API Proxy'sinin dağıtımı şu hatayla başarısız olur:

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

Çözünürlük

<ResourceURL> ve <IncludeURL> öğelerinde belirtilen PythonScript dosyalarının API Proxy'si, kuruluş veya ortam düzeyinde mevcut olan geçerli bir dosyaya başvurduğundan emin olun.

Yukarıda gösterilen örnek PythonScript politikasını düzeltmek için myscript.py dosyasını API Proxy paketine ekleyin. Aşağıdaki ekran görüntüsünde, <ResourceURL> ve <IncludeURL> öğelerinde belirtilen PythonScript dosyalarının, API Proxy paketinin Komut Dosyaları bölümünde göründüğünü görebilirsiniz: