Risoluzione degli errori di deployment del criterio PythonScript

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

InvalidResourceUrlFormat

Messaggio di errore

Il deployment di un proxy API tramite la UI o l'API di gestione perimetrale non va a buon fine e viene restituito questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio

Causa

Se il formato dell'URL della risorsa specificato nell'elemento <ResourceURL> o <IncludeURL> del Il criterio PythonScript non è valido, quindi il deployment del proxy API non va a buon fine.

Il formato corretto è quello mostrato di seguito:

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

Ad esempio, se l'elemento <ResourceURL> viene specificato come mostrato di seguito, il deployment del proxy API non riesce perché non segue il pattern richiesto:

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

Diagnosi

  1. Identifica il formato dell'URL della risorsa non valida utilizzato nel criterio PythonScript. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nell'errore seguente, il formato dell'URL di risorsa non valido è py:myscript.py:

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. Esamina tutti i criteri PythonScript nel proxy API specifico in cui si è verificato l'errore. Se è presente un criterio PythonScript in cui l'URL della risorsa specificato nell'elemento <ResourceURL> o <IncludeURL> corrisponde alla voce non valida identificata nel passaggio 1 precedente, ciò è la causa dell'errore.

    Ad esempio, il seguente criterio consente di specificare l'URL della risorsa come py:myscript.py, che corrisponde al contenuto del messaggio di errore:

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

    Poiché l'URL della risorsa è specificato come py:myscript.py, che non è valido, il deployment del proxy API non riesce e restituisce l'errore:

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

Risoluzione

Assicurati che il formato dell'URL della risorsa specificato nell'elemento <ResourceURL> del criterio PythonScript sia valido. Ad esempio:

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

Messaggio di errore

Il deployment di un proxy API tramite la UI o l'API di gestione perimetrale non va a buon fine e viene restituito questo messaggio di errore:

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

Esempio di messaggio di errore

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

Screenshot di esempio

Causa

Se gli elementi <ResourceURL> e <IncludeURL> fanno riferimento a un file PythonScript che non esiste, il deployment del proxy API non va a buon fine. Se esegui il deployment di un bundle proxy dalla tua macchina locale, lo script PythonScript i file di origine devono essere archiviati in /apiproxy/resources/py(nell'ambito del proxy API).

Nella UI Edge, i file di origine PythonScript vengono visualizzati sotto py nella sezione Script del riquadro di navigazione dell'editor proxy API, come mostrato di seguito:

Puoi anche archiviare i file di risorse in repository a livello di organizzazione e di ambiente (ad esempio per rendere il codice PythonScript disponibile per tutti i proxy in un'organizzazione o in un ambiente). Questo errore si verifica se non è possibile trovare file di risorse specificati nel criterio.

Diagnosi

  1. Identifica il criterio PythonScript in cui si è verificato l'errore e il riferimento dell'URL della risorsa non valido. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nell'errore seguente, il nome del criterio è Python_script e il riferimento dell'URL della risorsa non valida è py://myscript.py:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. Verifica che il riferimento all'URL della risorsa specificato nel criterio PythonScript non riuscito corrisponda al valore identificato nel messaggio di errore (passaggio 1 sopra). Ad esempio, il seguente criterio specifica il riferimento dell'URL della risorsa come py://myscript.py, che corrisponde al contenuto del messaggio di errore:

    <?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. Verifica se il file identificato nel passaggio 1 fa parte del bundle proxy API specifico o se esiste nell'ambito dell'organizzazione o dell'ambiente.

    1. Per verificare se il file fa parte del bundle proxy API specifico, segui uno dei passaggi riportati di seguito:
      1. Nella UI di Edge, controlla se questo file si trova nella sezione Script del proxy API.
      2. Scarica il bundle API Proxy e cerca se il file esiste.
    2. Se il file non fa parte del bundle proxy API specifico, controlla se esiste a livello di organizzazione o di ambiente. Per questa indagine puoi utilizzare l'API Resource Files.

    Se il file non esiste a livello di ambiente, organizzazione o proxy API, ciò è la causa dell'errore.

    Nell'esempio precedente, il nome file PythonScript non valido è myscript.py. Nello screenshot riportato di seguito, nota che il file specificato come URL della risorsa nel criterio non viene visualizzato nella sezione Script. Inoltre, il file non esiste a livello di organizzazione o di ambiente. Pertanto, il deployment del proxy API non va a buon fine e viene restituito l'errore:

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

Risoluzione

Assicurati che i file PythonScript specificati negli elementi <ResourceURL> e <IncludeURL> facciano riferimento a un file valido esistente a livello di ambiente, organizzazione o proxy API.

Per correggere il criterio PythonScript di esempio mostrato sopra, aggiungi il file myscript.py al bundle del proxy API. Nello screenshot seguente puoi vedere che i file PythonScript specificati negli elementi <ResourceURL> e <IncludeURL> sono visibili nella sezione Script del bundle proxy API: