Solución de errores de implementación de políticas de PythonScript

Estás viendo la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

InvalidResourceUrlFormat

Mensaje de error

La implementación de un proxy de API a través de la IU o la API de Apigee falla con este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

Se produjo un error durante la implementación de la revisión 2 en producción.

Causa

Si el formato de la URL del recurso especificado en elemento <ResourceURL> o <IncludeURL> de la política de PythonScript no es válida, la implementación del proxy de API falla.

A continuación, se muestra el formato correcto:

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

Por ejemplo, si el elemento <ResourceURL> se especifica como se muestra a continuación, la implementación del proxy de la API falla porque no sigue el patrón requerido:

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

Diagnóstico

  1. Identifica el formato de URL de recursos no válido que se usa en la política de PythonScript. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el formato de URL del recurso no válido es py:myscript.py:

    Invalid resource url format. Resource url is py:myscript.py.
  2. Examina todas las políticas PythonScript en el proxy de API específico donde ocurrió la falla. Si hay una política de PythonScript en la que la URL del recurso especificada en el <ResourceURL> o el elemento <IncludeURL> coincide con la entrada no válida identificada en el paso 1, esa es la causa del error.

    Por ejemplo, la siguiente política especifica la URL del recurso como py:myscript.py, que coincide con lo que contiene el mensaje de error:

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

    Dado que la URL del recurso se especifica como py:myscript.py, que no es válido, la implementación del proxy de API falla con el error:

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

Solución

Asegúrate de que el formato de URL del recurso especificado en el elemento <ResourceURL> de la política de PythonScript sea válido. Por ejemplo:

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

Mensaje de error

La implementación de un proxy de API a través de la IU o la API de Apigee falla con este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

Se produjo un error durante la implementación de la revisión 2 en producción.

Causa

Si los elementos <ResourceURL> y <IncludeURL> hacen referencia a un archivo de PythonScript que no existe, la implementación del proxy de la API falla. Si implementas un paquete de proxy desde tu máquina local, los archivos de origen de PythonScript deben almacenarse en /apiproxy/resources/py (en el alcance del proxy de la API).

En la IU de Apigee, los archivos fuente de PythonScript aparecen en py en la sección Secuencias de comandos del panel de navegación del editor de proxy de API como se muestra a continuación:

Sección de secuencias de comandos del panel de navegación del editor de proxy de API.

También puedes almacenar archivos de recursos en repositorios de nivel de entorno (para que, por ejemplo, el código de PythonScript esté disponible para todos los proxies de un entorno). Si no se pueden encontrar archivos de recursos especificados en la política, se produce este error.

Diagnóstico

  1. Identifica la política de PythonScript en la que se generó el error y la referencia de la URL del recurso no válida. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Python_script y la referencia de la URL del recurso no válida es py://myscript.py:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
  2. Verifica que la referencia de URL de recurso especificada en la política de PythonScript con error coincida con el valor identificado en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica la referencia de URL del recurso como py://myscript.py, que coincide con lo que contiene el mensaje de error:

    <?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 si el archivo identificado en el paso 1 es parte del paquete de proxy de API específico o si existe en el alcance del entorno.

    1. Para verificar si el archivo es parte del paquete del proxy de API específico, sigue uno de los pasos que se indican a continuación:
      1. En la IU de Apigee, verifica si este archivo está en la sección de Secuencias de comandos del proxy de API.
      2. Descarga el paquete del proxy de API y busca si el archivo existe.
    2. Si el archivo no forma parte del paquete del proxy de API específico, verifica si existe a nivel del entorno. Puedes usar la API de archivos de recursos para esta investigación.

    Si el archivo no existe a nivel del proxy de API o de entorno, esa es la causa del error.

    En el ejemplo anterior, el nombre de archivo de PythonScript no es válido. myscript.py. En la captura de pantalla a continuación, observa que el archivo especificado como una URL de recurso en la política no aparece en la sección Secuencias de comandos. Además, el archivo no existe a nivel de entorno. Por lo tanto, la implementación del proxy de API falla con el siguiente error:

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

La URL del recurso no es válida.

Solución

Asegúrate de que los archivos de PythonScript especificados en elementos <ResourceURL> y <IncludeURL> hagan referencia a un archivo válido que existe en el nivel del proxy de la API o de entorno.

Para corregir la política de ejemplo de PythonScript que se muestra arriba, agrega el archivo myscript.py al paquete del proxy de API. En la siguiente captura de pantalla, puedes ver que los archivos de PythonScript especificados en los elementos <ResourceURL> y <IncludeURL> están visibles en la sección secuencia de comandos del paquete del proxy de API:

Sección de Secuencias de comandos del paquete de proxy de API.