Antimodèles de migration d'Apigee Edge vers Apigee X

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

En tant que client Apigee Edge, vous pouvez choisir de migrer votre installation vers Apigee X afin de bénéficier de nouvelles fonctionnalités ou d'une disponibilité régionale différente.

Cette page décrit les antimodèles de votre configuration que vous devez traiter avant de migrer vers Apigee X, ainsi que les autres modifications de comportement que vous devez connaître avant la migration.

La liste plus large des antimodèles Apigee Edge décrit les pratiques d'utilisation à éviter dans tous les cas. Cette page décrit les pratiques d'utilisation spécifiques non recommandées qui bloqueront une migration. Résolvez ces problèmes maintenant pour éviter les problèmes lors de la migration vers Apigee X.

Applications sans produit d'API

Résumé Nécessite des modifications côté client ? Solution

Il existe des applications sans produit(s) d'API.

Différence entre Apigee Edge et Apigee X:

Apigee Edge Apigee X
Il est possible de configurer une application et des identifiants qui ne sont associés à aucun produit d'API. Cette application a effectivement accès à tous les produits d'API. Chaque application doit être configurée pour accéder à au moins un produit d'API. Il n'existe aucun moyen de fournir un accès à tous les produits API, de manière implicite. Vous pouvez configurer une application pour qu'elle ait accès à tous les produits d'API, mais vous devez le faire explicitement.
Non.

Résolution: applications sans produits API

Associez chaque identifiant d'application à au moins un produit d'API. Pour savoir comment procéder, consultez la page Enregistrer des applications et gérer les clés API.

La méthode la plus simple consiste à attribuer à chaque application un accès à tous les produits d'API. Ce sera l'équivalent de ce qui est possible dans Apigee Edge. Si vous souhaitez adopter une approche du moindre privilège, vous devrez déterminer la liste minimale de produits API auxquels chaque identifiant d'application doit avoir accès. Vous pouvez analyser cela avec les rapports Apigee Edge Analytics, en fonction de l'ID client.

Cache sans délai d'expiration

Résumé Nécessite des modifications côté client ? Solution

Le ou les caches n'ont pas de délai d'expiration.

Différence entre Apigee Edge et Apigee X:

Apigee Edge Apigee X
Permet de créer, mettre à jour et supprimer des descripteurs de ressources de cache. Ne permet pas de créer, mettre à jour ni supprimer des descripteurs de ressources de cache.
Non

Résolution: cache sans délai d'expiration

Définissez un délai d'expiration pour tous les caches.

Expressions de filtre JSONPath sur des chemins d'accès non définis

Résumé Nécessite des modifications côté client ? Solution

Pour les chemins non définis, interroger le résultat d'expressions de filtre ne fait pas partie de la spécification JSONPath. Voir https://goessner.net/articles/JsonPath/.

Différence entre Apigee Edge et Apigee X:

Lorsque vous parcourez cet exemple de structure,

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

Avec l'expression $..books[?(@.name == 'A')][0],

Apigee Edge Apigee X
Sorties ‘{"name": "A"}’ Sorties []

Avec l'expression $..books[?(@.name == 'A')][0].name,

Apigee Edge Apigee X
Sorties "A" Sorties []
Oui

Solution: expressions de filtre JSONPath sur des chemins d'accès non définis

Recherchez et remplacez les requêtes concernées.

Expressions JSONPath pour les index inexistants

Résumé Nécessite des modifications côté client ? Solution

Les expressions JSONPath avec un index absent ont des comportements différents dans Apigee X et Apigee Edge. Apigee X renvoie une erreur PathNotFoundException lorsque le chemin d'accès est introuvable.

Différence entre Apigee Edge et Apigee X:

Lorsque vous parcourez cet exemple de structure,

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

Avec l'expression $.books[3],

Apigee Edge Apigee X
Sorties null Résultat : PathNotFoundException erreur
Oui

Solution: expressions JSONPath pour les index inexistants

Recherchez et remplacez les requêtes concernées.

Les expressions JSONPath avec un index de tableau ne renvoient pas d'objet de tableau

Résumé Nécessite des modifications côté client ? Solution

Les expressions JSONPath avec un index de tableau ou des tranches renvoient un objet de tableau dans Apigee X.

Différence entre Apigee Edge et Apigee X:

Lorsque vous parcourez cet exemple de structure,

{
    "books": [
      {
        "name": "A",
      },
      {
        "name": "B",
      }
    ]
}

Avec l'expression $.books,

Apigee Edge Apigee X
Sorties {“name”:”A”, “name”: “B”} Sorties [{“name”:”A”, “name”: “B”}]

Avec l'expression $.books[-1],

Apigee Edge Apigee X
Sorties {“name”: “B”} Sorties [{“name”: “B”}]

Avec l'expression $.books[-2:],

Apigee Edge Apigee X
Sorties {“name”:”A”, “name”: “B”} Sorties [{“name”:”A”, “name”: “B”}]
Oui

Résolution: les expressions JSONPath avec un index de tableau ne renvoient pas d'objet de tableau

Rechercher et remplacer des expressions susceptibles de renvoyer des résultats différents après la mise à niveau

Restrictions concernant les noms de keystores

Résumé Nécessite des modifications côté client ? Solution

Les noms de keystore Apigee X ne peuvent contenir que des lettres, des chiffres et des traits d'union. Les noms de keystores Edge n'imposent pas ces restrictions.

Non

Solution: restrictions de noms de keystore

Vérifiez les noms des keystores et mettez-les à jour pour supprimer les caractères non acceptés si nécessaire.

Plusieurs chemins de base déployés pour un proxy d'API

Résumé Nécessite des modifications côté client ? Solution

Plusieurs révisions d'un proxy d'API sont déployées dans un environnement et chaque révision possède un chemin de base différent.

Différence entre Apigee Edge et Apigee X:

Apigee Edge Apigee X
Permet le déploiement de plusieurs révisions d'un proxy d'API où chaque révision peut avoir un chemin de base différent. Ne prend pas en charge le déploiement de plusieurs révisions d'un proxy d'API, même si le proxy a des chemins de base différents.
Non

Résolution: plusieurs chemins d'accès de base déployés pour un proxy d'API

Mettez à jour tous les bundles afin qu'une seule révision d'un bundle soit déployée dans un environnement, quel que soit le chemin de base.

Messages HTTP non conformes

Résumé Nécessite des modifications côté client ? Solution

Les clients ou le proxy d'API envoient des messages (requêtes ou réponses) qui ne respectent pas la norme HTTP. (noms d'en-têtes non valides, duplication dans certains en-têtes restreints, etc.).

Vous ne pouvez pas migrer vers Apigee X si l'exécution de votre API présente une ou plusieurs des erreurs suivantes:

  • INVALID_CHARACTERS_IN_HEADER
  • MISSING_COLON
  • MULTIPLE_CONTENT_LENGTH
  • CONTENT_LENGTH_NOT_INTEGER
  • INVALID_UPGRADE
  • URL_HEADER_SIZE_TOO_LONG
  • BODY_NOT_ALLOWED
  • UNSUPPORTED_HTTP_VERSION
  • ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT
  • UNSUPPORTED_RESPONSE_PREFIX
Oui, c'est possible.

Solution: messages HTTP non conformes

Vous devez corriger toutes les erreurs dans les protocoles HTTP avant de migrer vers Apigee X. Si une erreur provient d'une application cliente, vous devez demander au développeur de l'application de corriger le problème.

Délai d'expiration du jeton OAuth 2.0 non valide

Résumé Nécessite des modifications côté client ? Solution

Les limites d'expiration des jetons OAuth 2.0 sont en dehors de la plage prescrite.

Différence entre Apigee Edge et Apigee X:

Apigee Edge Apigee X
Aucune contrainte concernant le délai d'expiration des jetons OAuth 2.0 n'est appliquée actuellement, mais elle est prévue. Consultez les consignes de la section OAuth de la page Limites. Vous devez définir un jeton d'accès et actualiser son délai d'expiration pour OAuth 2.0. Les plages acceptées sont les suivantes :
  • 180 secondes <= Délai d'expiration du jeton d'accès OAuth 2.0 <= 30 jours
  • 1 jour <= Délai d'expiration du jeton d'actualisation OAuth 2.0 <= 2 ans
Non

Résolution: le délai d'expiration du jeton OAuth 2.0 n'est pas valide

Utilisez la règle OAuthV2, et spécifiez l'heure d'expiration dans <ExpiresIn> et <RefreshTokenExpiresIn>.

Limites de produits dépassées

Résumé Nécessite des modifications côté client ? Solution

La configuration d'Apigee Edge n'est pas conforme aux limites du produit définies. Certaines limites de produit qui sont documentées, mais qui ne sont pas appliquées sur Apigee Edge, sont appliquées à Apigee X.

Non

Résolution: nombre maximal de produits dépassé

Corrigez toute utilisation qui dépasse les limites du produit avant de migrer vers Apigee X.

Règles ServiceCall avec des spécificateurs de connexion cible de point de terminaison et de chemin d'accès

Résumé Nécessite des modifications côté client ? Solution

Dans la règle ServiceCallout, l'élément <LocalTargetConnection> doit inclure les éléments <APIProxy> et <ProxyEndpoint> ou l'élément <Path>, mais pas les deux. Pour en savoir plus, consultez l'élément <LocalTargetConnection>.

Apigee Edge documente cette exigence, mais ne l'applique pas. Apigee X arrête le traitement s'il rencontre une erreur <LocalTargetConnection> avec les deux configurations.

Non

Résolution: règles ServiceCall avec des spécificateurs de connexion de point de terminaison et de cible de chemin d'accès

Vérifiez les configurations de règles ServiceCall et supprimez toutes les configurations <LocalTargetConnection> non conformes.

Restrictions de nom du serveur cible

Résumé Nécessite des modifications côté client ? Solution

Les noms du serveur cible Apigee X ne peuvent contenir que des lettres, des chiffres, des traits d'union et des points. Les noms de serveur de la cible périphérique n'imposent pas ces restrictions.

Non

Solution: restrictions de noms du serveur cible

Vérifiez les noms des serveurs cibles et mettez-les à jour pour supprimer les caractères non acceptés si nécessaire.

Certificat d'essai sur un hôte virtuel

Résumé Nécessite des modifications côté client ? Solution

Un ou plusieurs hôtes virtuels utilisent le certificat "d'essai sans frais" fourni par Apigee. L'hôte virtuel répond ainsi aux requêtes sur des domaines tels que ORG-ENV.apigee.net.

Différence entre Apigee Edge et Apigee X:

Apigee Edge Apigee X
Configure automatiquement le vhost "par défaut" pour qu'il accepte un nom de domaine au format ORG-ENV.apigee.net. Il existe un certificat générique, appelé "certificat d'essai sans frais", qui autorise le protocole TLS sur ces domaines. Les anciens domaines Apigee de la forme ORG-ENV.apigee.net ne sont pas disponibles dans Apigee X. Vous devez configurer votre propre nom de domaine et provisionner les certificats de manière appropriée.
Oui

Résolution: certificat d'essai sur un hôte virtuel

Vous devez configurer votre propre domaine et provisionner les certificats de manière appropriée.

Toute application cliente qui dépend de l'ancien nom de domaine du formulaire ORG-ENV.apigee.net doit être modifiée pour appeler le nouveau domaine.

DNS non résolu

Résumé Nécessite des modifications côté client ? Solution

Le ou les points de terminaison cibles comportent un ou plusieurs noms de domaine non résolus.

Différence entre Apigee Edge et Apigee X:

Apigee Edge Apigee X
Si la résolution DNS échoue, Apigee ajoute .apigee.com au nom de domaine et la résolution DNS aboutit avec un code de réponse 4xx. Si la résolution DNS échoue, Apigee n'exécute pas la requête et renvoie un code de réponse 5xx.
Non

Résolution: DNS non résolu

Mettez à jour le point de terminaison cible avec un nom de domaine valide.