Risoluzione dei problemi relativi agli errori di deployment dei criteri PythonScript

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Visualizza la documentazione di Apigee Edge.

InvalidResourceUrlFormat

Messaggio di errore

Il deployment di un proxy API tramite la UI o l'API Apigee non riesce e viene visualizzato 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

Errore durante il deployment della revisione 2 in produzione.

Causa

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

Il formato corretto è mostrato di seguito:

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

Ad esempio, se l'elemento <ResourceURL> è specificato come mostrato di seguito, il deployment del proxy API non va a buon fine perché non segue il pattern richiesto:

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

Diagnosi

  1. Identifica il formato URL risorsa non valido utilizzato nel criterio PythonScript. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nel seguente errore, il formato dell'URL della 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 esiste una policy PythonScript in cui l'URL della risorsa specificato nell'elemento <ResourceURL> o <IncludeURL> corrisponde alla voce non valida identificata nel passaggio 1 sopra, questa è la causa dell'errore.

    Ad esempio, la seguente policy specifica l'URL della risorsa come py:myscript.py, che corrisponde a quanto riportato nel 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 viene visualizzato il seguente 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 Apigee non riesce e viene visualizzato 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

Errore durante il deployment della revisione 2 in produzione.

Causa

Se gli elementi <ResourceURL> e <IncludeURL> fanno riferimento a un file PythonScript inesistente, il deployment del proxy API non va a buon fine. Se stai eseguendo il deployment di un bundle proxy dalla tua macchina locale, i file sorgente PythonScript devono essere archiviati in /apiproxy/resources/py(ambito del proxy API).

Nell'interfaccia utente di Apigee, i file di origine PythonScript vengono visualizzati in py nella sezione Script del riquadro di navigazione dell'editor proxy API, come mostrato di seguito:

Sezione Script del riquadro di navigazione dell&#39;editor proxy API.

Puoi anche archiviare i file di risorse nei repository a livello di ambiente (per rendere disponibile il codice PythonScript a tutti i proxy in un ambiente, ad esempio). Se non è possibile trovare i file delle risorse specificati nel criterio, si verifica questo errore.

Diagnosi

  1. Identifica il criterio PythonScript in cui si è verificato l'errore e il riferimento all'URL della risorsa non valido. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nel seguente errore, il nome della policy è Python_script e il riferimento all'URL della risorsa non valido è 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 nella policy PythonScript non riuscita corrisponda al valore identificato nel messaggio di errore (passaggio 1 sopra). Ad esempio, la seguente policy specifica il riferimento all'URL della risorsa come py://myscript.py, che corrisponde a quanto riportato nel 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. Controlla se il file identificato nel passaggio 1 fa parte del bundle del proxy API specifico o esiste nell'ambito dell'ambiente.

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

    Se il file non esiste a livello di proxy API o ambiente, questo è il motivo 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 risorsa nelle norme non viene visualizzato nella sezione Script. Inoltre, il file non esiste a livello di ambiente. Pertanto, il deployment del proxy API non riesce e viene visualizzato il seguente errore:

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

URL risorsa non valido.

Risoluzione

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

Per correggere la policy PythonScript di esempio mostrata sopra, aggiungi il file myscript.py al bundle 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:

Sezione Script del pacchetto proxy API.