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

Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Consultez la documentation d'Apigee Edge.

InvalidResourceUrlFormat

Message d'erreur

Le déploiement d'un proxy d'API par le biais de l'interface utilisateur ou l'API Apigee échoue et renvoie 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

Erreur lors du déploiement de la révision 1 sur "prod".

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.

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 par le biais de l'interface utilisateur ou l'API Apigee échoue et renvoie 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

Erreur lors du déploiement de la révision 1 sur &quot;prod&quot;.

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 Apigee, les fichiers source PythonScript apparaissent sous py dans la section "Scripts" du volet de navigation de l'éditeur de proxy d'API, comme illustré ci-dessous :

Section &quot;Scripts&quot; du volet de navigation de l&#39;éditeur de proxy d&#39;API

Vous pouvez également stocker des fichiers de ressources dans des dépôts au niveau 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 package de proxy d'API spécifique ou s'il existe au niveau du champ d'application de l'environnement.

    1. Pour vérifier si le fichier fait partie du package proxy d'API spécifique, suivez l'une des étapes suivantes :
      1. Dans l'interface utilisateur Apigee, 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 package de proxys d'API spécifique, vérifiez alors s'il existe au niveau 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 ou de l'environnement, alors il s'agit de 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". En outre, le fichier n'existe pas au niveau 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

URL de ressource non valide.

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

Section &quot;Scripts&quot; du package de proxy d&#39;API.