Résolution des erreurs de déploiement d'une règle PythonScript

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

InvalidResourceUrlFormat

Message d'erreur

Le déploiement d'un proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec le message d'erreur suivant:

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

Exemple de message d'erreur

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

Exemple de capture d'écran

Cause

Si le format de l'URL de la ressource spécifiée dans l'élément <ResourceURL> ou <IncludeURL> de la règle PythonScript n'est pas valide, alors le déploiement du proxy d'API échoue.

Le format correct est le suivant :

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

Par exemple, si l'élément <ResourceURL> est spécifié comme indiqué ci-dessous, le déploiement du proxy d'API échoue, car il ne suit pas le modèle requis :

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

Diagnostic

  1. Identifiez le format d'URL de ressource non valide utilisé dans la règle PythonScript. Vous trouverez cette information dans le message d'erreur. Par exemple, dans l'erreur suivante, le format de l'URL de ressource non valide est py:myscript.py :

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. Examinez toutes les règles PythonScript dans le proxy d'API spécifique où l'erreur s'est produite. S'il existe une règle PythonScript dans laquelle l'URL de ressource spécifiée dans l'élément <ResourceURL> ou <IncludeURL> correspond à l'entrée incorrecte identifiée à l'étape 1 ci-dessus, alors il s'agit de la cause de l'erreur.

    Par exemple, la règle suivante spécifie l'URL de la ressource sous la forme py:myscript.py, qui correspond au contenu du message d'erreur :

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

    Comme l'URL de la ressource est spécifiée en tant que py:myscript.py, et qu'elle n'est donc pas valide, le déploiement du proxy d'API échoue avec l'erreur :

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

Résolution

Assurez-vous que le format de l'URL de la ressource spécifié dans l'élément <ResourceURL> de la règle PythonScript est valide. Exemple :

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

Message d'erreur

Le déploiement d'un proxy d'API via l'interface utilisateur Edge ou l'API de gestion Edge échoue avec le message d'erreur suivant:

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

Exemple de message d'erreur

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

Exemple de capture d'écran

Cause

Si les éléments <ResourceURL> et <IncludeURL> font référence à un fichier PythonScript qui n'existe pas, alors le déploiement du proxy d'API échoue. Si vous déployez un package de proxy à partir de votre machine locale, les fichiers sources PythonScript doivent être stockés sous /apiproxy/resources/py (au niveau du proxy d'API).

Dans l'interface utilisateur Edge, les fichiers sources PythonScript apparaissent sous py dans la section Scripts du volet de navigation de l'éditeur de proxys d'API, comme indiqué ci-dessous:

Vous pouvez également stocker des fichiers de ressources dans des dépôts au niveau de l'organisation et de l'environnement (pour rendre le code PythonScript accessible à tous les proxys d'une organisation ou d'un environnement, par exemple). Si des fichiers de ressources spécifiés dans la règle sont introuvables, cette erreur se produit.

Diagnostic

  1. Identifiez la règle PythonScript où l'erreur s'est produite et la référence de l'URL de la ressource non valide. Vous trouverez cette information dans le message d'erreur. Par exemple, dans l'erreur suivante, le nom de la règle est Python_script et la référence de l'URL de ressource non valide est py://myscript.py :

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. Vérifiez que la référence d'URL de ressource spécifiée dans la règle PythonScript défaillante correspond à la valeur identifiée dans le message d'erreur (étape 1 ci-dessus). Par exemple, la règle suivante spécifie la référence de l'URL de la ressource en tant que py://myscript.py, qui correspond au contenu du message d'erreur :

    <?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. Vérifiez si le fichier identifié à l'étape 1 fait partie du groupe de proxys d'API spécifique, ou s'il existe au niveau de l'organisation ou de l'environnement.

    1. Pour vérifier si le fichier fait partie du groupe de proxys d'API spécifique, suivez l'une des étapes ci-dessous :
      1. Dans l'interface utilisateur Edge, vérifiez si ce fichier se trouve dans la section Scripts du proxy d'API.
      2. Téléchargez le package du proxy d'API et recherchez le fichier s'il existe.
    2. Si le fichier ne fait pas partie du groupe de proxys d'API spécifique, vérifiez s'il existe au niveau de l'organisation ou de l'environnement. Vous pouvez utiliser l'API Resource File pour cette enquête.

    Si le fichier n'existe pas au niveau du proxy d'API, de l'organisation ou de l'environnement, c'est la cause de l'erreur.

    Dans l'exemple ci-dessus, le nom de fichier PythonScript incorrect est myscript.py. Dans la capture d'écran ci-dessous, vous pouvez remarquer que le fichier spécifié en tant qu'URL de ressource dans la règle n'apparaît pas dans la section "Scripts". De plus, le fichier n'existe pas au niveau de l'organisation ou de l'environnement. Par conséquent, le déploiement du proxy d'API échoue avec l'erreur suivante :

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

Résolution

Assurez-vous que les fichiers PythonScript spécifiés dans les éléments <ResourceURL> et <IncludeURL> font référence à un fichier valide existant au niveau du proxy de l'API, de l'organisation ou de l'environnement.

Pour corriger l'exemple de stratégie PythonScript ci-dessus, ajoutez le fichier myscript.py au package de proxy d'API. Dans la capture d'écran ci-dessous, vous pouvez voir que les fichiers PythonScript spécifiés dans les éléments <ResourceURL> et <IncludeURL> sont visibles dans la section "Scripts" du package de proxys d'API :