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

Estás viendo la documentación de Apigee y Apigee híbrido .
Ver la documentación de Apigee Edge .

Formato de URL de recurso no válido

Mensaje de error

La implementación de un proxy API a través de la interfaz de usuario 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.

Ejemplo de captura de pantalla

Error al implementar la revisión 2 en producción.

Causa

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

El formato correcto es el que se muestra a continuación:

<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 API falla porque no sigue el patrón requerido:

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

Diagnóstico

  1. Identifique el formato de URL de recurso no válido utilizado en la política de PythonScript. Puede encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el formato de URL de recurso no válido es py:myscript.py :

    Invalid resource url format. Resource url is py:myscript.py.
  2. Examine todas las políticas de PythonScript en el proxy de API específico donde se produjo el error. Si alguna política de PythonScript tiene la URL del recurso especificada en el elemento <ResourceURL> o <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 aparece en 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 , lo cual 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.

Resolución

Asegúrese de que el formato de la 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>

Referencia de URL de recurso no válida

Mensaje de error

La implementación de un proxy API a través de la interfaz de usuario 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

Ejemplo de captura de pantalla

Error al implementar la revisión 2 en producción.

Causa

Si los elementos <ResourceURL> e <IncludeURL> hacen referencia a un archivo PythonScript inexistente, la implementación del proxy de API fallará. Si está implementando un paquete de proxy desde su equipo local, los archivos fuente de PythonScript deben almacenarse en /apiproxy/resources/py (en el ámbito del proxy de API).

En la interfaz de usuario de Apigee, los archivos fuente de PythonScript aparecen en py en la sección Scripts del panel Navegador del editor de proxy de API, como se muestra a continuación:

Sección Scripts del panel de navegación del editor de proxy API.

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

Diagnóstico

  1. Identifique la política de PythonScript donde se produjo el error y la referencia a la URL del recurso no válida. Puede 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 a 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. Verifique que la referencia a la URL del recurso especificada en la política de PythonScript fallida coincida con el valor identificado en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica la referencia a la URL del recurso como py://myscript.py , que coincide con 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. Verifique si el archivo identificado en el paso n.° 1 es parte del paquete de API Proxy específico o existe en el ámbito del entorno.

    1. Para comprobar si el archivo es parte del paquete de API Proxy específico, siga uno de los siguientes pasos:
      1. En la interfaz de usuario de Apigee, verifique si este archivo está en la sección Scripts del proxy API.
      2. Descargue el paquete API Proxy y busque si el archivo existe.
    2. Si el archivo no forma parte del paquete específico del proxy de API, verifique si existe en el entorno. Puede usar la API de archivos de recursos para esta investigación.

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

    En el ejemplo anterior, el nombre de archivo de PythonScript no válido es myscript.py. En la captura de pantalla a continuación, observe que el archivo especificado como URL de recurso en la política no aparece en la sección Scripts. 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

URL de recurso no válida.

Resolución

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

Para corregir la política de PythonScript del ejemplo anterior, agregue el archivo myscript.py al paquete API Proxy. En la siguiente captura de pantalla, puede ver que los archivos PythonScript especificados en los elementos <ResourceURL> e <IncludeURL> son visibles en la sección Scripts del paquete API Proxy:

Sección de scripts del paquete API Proxy.