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

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

InvalidResourceUrlFormat

Komunikat o błędzie

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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ślonego w elemencie <ResourceURL> lub <IncludeURL> zasady PythonScript jest nieprawidłowy, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Prawidłowy format wygląda tak:

<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 proxy interfejsu API nie powiedzie się, ponieważ nie jest zgodne z wymaganym wzorcem:

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

Diagnostyka

  1. Określ nieprawidłowy format adresu URL zasobu użyty w zasadach PythonScript. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nieprawidłowy format adresu URL zasobu to py:myscript.py:

    Invalid resource url format. Resource url is py:myscript.py.
  2. Sprawdź wszystkie zasady PythonScript w konkretnym serwerze proxy interfejsu API, w którym wystąpił błąd. Jeśli istnieje zasada PythonScript, w której adres URL zasobu określony w elemencie <ResourceURL> lub <IncludeURL> pasuje do nieprawidłowego wpisu zidentyfikowanego w kroku 1 powyżej, to jest to przyczyna błędu.

    Na przykład te zasady określają adres URL zasobu jako py:myscript.py, co odpowiada temu, co znajduje się w komunikacie 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>

    Adres URL zasobu jest określony jako py:myscript.py, co jest nieprawidłowe. Wdrożenie serwera proxy interfejsu API kończy się niepowodzeniem i wyświetla się błąd:

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

Rozdzielczość

Sprawdź, czy 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

Wdrażanie proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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 pliku PythonScript, który nie istnieje, wdrożenie serwera proxy interfejsu API nie powiedzie się. Jeśli wdrażasz pakiet proxy z komputera lokalnego, pliki źródłowe PythonScript muszą być przechowywane w katalogu /apiproxy/resources/py(w zakresie proxy interfejsu API).

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

Możesz też przechowywać pliki zasobów w repozytoriach na poziomie organizacji i środowiska (np. aby udostępnić kod PythonScript wszystkim serwerom proxy w organizacji lub środowisku). Ten błąd występuje, jeśli nie można znaleźć żadnego z plików zasobów określonych w zasadach.

Diagnostyka

  1. Określ zasadę PythonScript, w której wystąpił błąd, oraz nieprawidłowe odniesienie do adresu URL zasobu. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady to Python_script, a nieprawidłowy adres 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 zasadach PythonScript, które spowodowały błąd, jest zgodne z wartością podaną w komunikacie o błędzie (krok 1 powyżej). Na przykład te zasady określają odwołanie do adresu URL zasobu jako py://myscript.py, co odpowiada temu, co znajduje się w komunikacie 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 zidentyfikowany w kroku 1 jest częścią konkretnego pakietu proxy interfejsu API lub czy istnieje w zakresie organizacji lub środowiska.

    1. Aby sprawdzić, czy plik jest częścią konkretnego pakietu proxy interfejsu API, wykonaj jedną z tych czynności:
      1. W interfejsie Edge sprawdź, czy ten plik znajduje się w sekcji Skrypty w proxy interfejsu API.
      2. Pobierz pakiet serwera proxy interfejsu API i sprawdź, czy plik istnieje.
    2. Jeśli plik nie jest częścią konkretnego pakietu serwera proxy interfejsu API, sprawdź, czy istnieje na poziomie organizacji lub środowiska. Do tego celu możesz użyć interfejsu Resource Files API.

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

    W przykładzie powyżej nieprawidłowa nazwa pliku PythonScript to myscript.py. Na zrzucie ekranu poniżej widać, że plik określony jako adres URL zasobu w zasadach nie pojawia się w sekcji Skrypty. Plik nie istnieje też na poziomie organizacji ani środowiska. W związku z tym wdrożenie proxy interfejsu API nie powiedzie się i zostanie wyświetlony błąd:

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

Rozdzielczość

Sprawdź, czy pliki PythonScript określone w elementach <ResourceURL> i <IncludeURL> odwołują się do prawidłowego pliku, który znajduje się na poziomie serwera proxy interfejsu API, organizacji lub środowiska.

Aby poprawić pokazaną powyżej 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: