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

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

InvalidResourceUrlFormat

Hata mesajı

Bir API proxy'sinin Edge kullanıcı arayüzü veya Edge yönetim API'si üzerinden dağıtılması şu hata mesajıyla başarısız olur:

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

<ResourceURL> veya PythonScript politikasının <IncludeURL> öğesi içinde belirtilen kaynak URL'sinin biçimi 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 belirtilmişse API proxy'sinin dağıtımı, gerekli kalıba uymadığı için başarısız olur:

<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 API Proxy'sinde tüm PythonScript politikalarını inceleyin. <ResourceURL> veya <IncludeURL> öğesinde belirtilen kaynak URL'sinin yukarıdaki 1. adımda tanımlanan geçersiz girişle eşleştiği herhangi bir PythonScript politikası varsa hatanın nedeni budur.

    Örneğin, aşağıdaki politikada kaynak URL'si py:myscript.py olarak belirtilir. Bu, hata mesajındaki metinle eşleşir:

    <?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 hatayı vererek başarısız olur:

    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ı

Bir API proxy'sinin Edge kullanıcı arayüzü veya Edge yönetim API'si üzerinden dağıtılması şu hata mesajıyla başarısız olur:

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 mevcut olmayan bir PythonScript dosyasına referans veriyorsa 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 altında(API proxy kapsamında) depolanmalıdır.

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

Ayrıca, kaynak dosyalarını kuruluş ve ortam düzeyindeki depolarda da depolayabilirsiniz (örneğin, PythonScript kodunun bir kuruluş veya ortamdaki tüm proxy'ler tarafından kullanılabilmesi 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 belirtilen değerle eşleştiğini doğrulayın (yukarıdaki 1. adım). Örneğin, aşağıdaki politikada kaynak URL referansı py://myscript.py olarak belirtilir. Bu, hata mesajındaki metinle eşleşir:

    <?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, ilgili API Proxy paketinin parçası olup olmadığını veya kuruluş ya da ortam kapsamında olup olmadığını kontrol edin.

    1. Dosyanın ilgili API proxy paketinin bir 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 dosyanın kuruluş veya ortam düzeyinde mevcut olup olmadığını kontrol edin. Bu inceleme için Resource Files API'yi kullanabilirsiniz.

    Dosya API Proxy'si, kuruluş veya ortam düzeyinde mevcut değilse 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 mevcut değil. Bu nedenle, API Proxy'sinin dağıtımı şu hatayı vererek 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 bulunan 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: