Rozwiązywanie problemów związanych z błędami wdrażania zasad PythonScript

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

InvalidResourceUrlFormat

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu

Przyczyna

Jeśli format adresu URL zasobu określony w <ResourceURL> lub w elemencie <IncludeURL> zasady PythonScript jest nieprawidłowy, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Poprawny format jest następujący:

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

Jeśli na przykład element <ResourceURL> jest określony w sposób pokazany poniżej, wdrożenie serwera proxy interfejsu API nie powiedzie się, ponieważ nie jest on zgodny z wymaganym wzorcem:

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

Diagnostyka

  1. Zidentyfikuj nieprawidłowy format adresu URL zasobu używany w zasadzie PythonScript. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie adres URL zasobu ma nieprawidłowy format py:myscript.py:

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. Sprawdź wszystkie zasady PythonScript na konkretnym serwerze proxy interfejsu API, gdzie wystąpił błąd. Jeśli istnieje jakaś zasada PythonScript, w której adres URL zasobu podany w elemencie <ResourceURL> lub <IncludeURL> jest zgodny z nieprawidłowym wpisem zidentyfikowanym w kroku 1 powyżej, jest to przyczyna błędu.

    Na przykład ta zasada określa adres URL zasobu jako py:myscript.py, który jest zgodny z treścią komunikatu o błędzie:

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

    Ponieważ adres URL zasobu jest określony jako py:myscript.py, co jest nieprawidłowe, wdrożenie serwera proxy interfejsu API nie powiedzie się i wystąpi błąd:

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

Rozdzielczość

Upewnij się, że format adresu URL zasobu określony w elemencie <ResourceURL> zasady PythonScript jest prawidłowy. Na przykład:

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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Przykładowy zrzut ekranu

Przyczyna

Jeśli elementy <ResourceURL> i <IncludeURL> odwołują się do nieistniejącego pliku PythonScript, wdrożenie serwera proxy interfejsu API nie powiedzie się. Jeśli wdrażasz pakiet proxy na komputerze lokalnym, pliki źródłowe PythonScript muszą być przechowywane w lokalizacji /apiproxy/resources/py(w zakresie serwera proxy interfejsu API).

W interfejsie użytkownika Edge pliki źródłowe PythonScript są wyświetlane w obszarze py w sekcji Skrypty panelu nawigacji edytora serwera proxy interfejsu API, jak pokazano poniżej:

Pliki zasobów możesz też przechowywać w repozytoriach na poziomie organizacji i środowiska (aby na przykład udostępnić kod Pythona wszystkim serwerom proxy w organizacji lub środowisku). Ten błąd występuje, jeśli nie można znaleźć żadnych plików zasobów określonych w zasadzie.

Diagnostyka

  1. Zidentyfikuj zasadę Pythona, w której wystąpił błąd, oraz nieprawidłowe odwołanie do adresu URL zasobów. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Python_script, a nieprawidłowe odniesienie do adresu URL zasobu to py://myscript.py:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. Sprawdź, czy odwołanie do adresu URL zasobu określone w nieudanej zasadzie PythonScript jest zgodne z wartością podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład ta zasada określa odniesienie do adresu URL zasobu jako py://myscript.py, co jest zgodne z treścią komunikatu o błędzie:

    <?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. Sprawdź, czy plik wskazany w kroku 1 należy do określonego pakietu serwera proxy interfejsu API lub czy znajduje się w zakresie organizacji bądź środowiska.

    1. Aby sprawdzić, czy plik należy do określonego pakietu proxy interfejsu API, wykonaj jedną z tych czynności:
      1. W interfejsie użytkownika Edge sprawdź, czy ten plik znajduje się w sekcji Skrypty serwera proxy interfejsu API.
      2. Pobierz pakiet API Proxy i wyszukaj plik, jeśli istnieje.
    2. Jeśli plik nie należy do określonego pakietu serwerów proxy interfejsu API, sprawdź, czy istnieje on na poziomie organizacji lub środowiska. Do analizy zagrożeń możesz użyć interfejsu Resource Files API.

    Jeśli plik nie istnieje na poziomie serwera proxy interfejsu API, organizacji lub środowiska, to jest przyczyną błędu.

    W powyższym przykładzie nieprawidłowa nazwa pliku PythonScript to myscript.py. Na zrzucie ekranu poniżej widać, że plik określony w zasadzie jako adres URL zasobu nie jest widoczny w sekcji Skrypty. Ponadto pliku nie ma na poziomie organizacji lub środowiska. Dlatego wdrożenie serwera proxy interfejsu API nie powiedzie się z błędem:

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

Rozdzielczość

Upewnij się, że pliki PythonScript określone w elementach <ResourceURL> i <IncludeURL> odwołują się do prawidłowego pliku istniejącego na poziomie serwera proxy interfejsu API, organizacji lub środowiska.

Aby poprawić pokazaną powyżej przykładową zasadę PythonScript, dodaj plik myscript.py do pakietu serwera proxy interfejsu API. Na zrzucie ekranu poniżej widać, że pliki PythonScript określone w elementach <ResourceURL> i <IncludeURL> są widoczne w sekcji Skrypty pakietu proxy interfejsu API: