Antipatrones de migración de Apigee Edge a Apigee X

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

Como cliente actual de Apigee Edge, puedes optar por migrar tu instalación a Apigee X para aprovechar las nuevas capacidades o la disponibilidad regional diferente.

En esta página, se describen los antipatrones en tu configuración que deberás abordar antes de migrar a Apigee X, así como otros cambios en el comportamiento que debes tener en cuenta antes de la migración.

La lista más amplia de antipatrones de Apigee Edge describe las prácticas de uso que se deben evitar en cualquier caso. En esta página, se describen las prácticas de uso específicas que no se recomiendan y que bloquearán una migración. Resuelve estos problemas ahora para evitar inconvenientes cuando migres a Apigee X.

Apps sin productos de API

Resumen ¿Requiere cambios del cliente? Solución

Hay apps sin productos de API.

Diferencia entre Apigee Edge y Apigee X:

Apigee Edge Apigee X
Es posible configurar una app y una credencial que no estén asociadas a ningún producto de API. Esta app tiene acceso a todos los productos de la API. Cada app debe configurarse para acceder a al menos un producto de API. No hay forma de proporcionar acceso a todos los productos de API de forma implícita. Puedes configurar una app para que tenga acceso a todos los productos de API, pero debes hacerlo de forma explícita.
No.

Resolución: Apps sin productos de API

Asocia cada credencial de la app con al menos un producto de API. Para obtener más información sobre cómo hacerlo, consulta Registra apps y administra claves de API.

Una forma sencilla es asignar a cada app acceso a todos los productos de API. Esto será el equivalente de lo que es posible en Apigee Edge. El desafío será si quieres adoptar un enfoque de "privilegio mínimo", ya que deberás determinar la lista mínima de productos de API a los que debe tener acceso cada credencial de la app. Puedes analizar esto con los informes de Apigee Edge Analytics, según el ID de cliente.

Caché sin tiempo de vencimiento

Resumen ¿Requiere cambios del cliente? Solución

Las cachés no tienen un tiempo de vencimiento.

Diferencia entre Apigee Edge y Apigee X:

Apigee Edge Apigee X
Admite la creación, actualización y eliminación de descriptores de recursos de caché. No admite la creación, actualización ni eliminación de descriptores de recursos de caché.
No

Resolución: Caché sin hora de vencimiento

Establece una hora de vencimiento para todas las cachés.

Expresiones de filtro JSONPath en rutas no definidas

Resumen ¿Requiere cambios del cliente? Solución

En el caso de las rutas no definitivas, consultar el resultado de una expresión de filtro no forma parte de la especificación de JSONPath. Consulta https://goessner.net/articles/JsonPath/.

Diferencia entre Apigee Edge y Apigee X:

Cuando navegues por esta estructura de ejemplo,

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

Con la expresión $..books[?(@.name == 'A')][0],

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

Con la expresión $..books[?(@.name == 'A')][0].name,

Apigee Edge Apigee X
Resultados "A" Resultados []

Resolución: Expresiones de filtro JSONPath en rutas no definidas

Busca y reemplaza las búsquedas afectadas.

Expresiones JSONPath para índices que no están presentes

Resumen ¿Requiere cambios del cliente? Solución

Las expresiones JSONPath con un índice que no está presente tienen comportamientos diferentes en Apigee X que en Apigee Edge. Apigee X devuelve un error PathNotFoundException cuando no se encuentra la ruta de acceso.

Diferencia entre Apigee Edge y Apigee X:

Cuando navegues por esta estructura de ejemplo,

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

Con la expresión $.books[3],

Apigee Edge Apigee X
Resultados null Genera un error de PathNotFoundException

Resolución: Expresiones JSONPath para índices que no están presentes

Busca y reemplaza las búsquedas afectadas.

Expresiones JSONPath con un índice de array que no devuelve un objeto de array

Resumen ¿Requiere cambios del cliente? Solución

Las expresiones JSONPath con un índice o segmentos de array devuelven un objeto de array en Apigee X.

Diferencia entre Apigee Edge y Apigee X:

Cuando navegues por esta estructura de ejemplo,

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

Con la expresión $.books,

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

Con la expresión $.books[-1],

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

Con la expresión $.books[-2:],

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

Resolución: Las expresiones JSONPath con un índice de array no devuelven un objeto de array

Buscar y reemplazar expresiones que podrían devolver resultados diferentes después de la actualización

Restricciones de nombres del almacén de claves

Resumen ¿Requiere cambios del cliente? Solución

Los nombres de almacenes de claves de Apigee X solo pueden contener letras, números y guiones. Los nombres de almacén de claves de Edge no imponen estas restricciones.

No

Resolución: Restricciones de nombres del almacén de claves

Verifica los nombres del almacén de claves y actualízalos para quitar los caracteres no admitidos si es necesario.

Varias rutas base implementadas para un proxy de API

Resumen ¿Requiere cambios del cliente? Solución

Se implementan varias revisiones de un proxy de API en un entorno y cada revisión tiene una ruta base diferente.

Diferencia entre Apigee Edge y Apigee X:

Apigee Edge Apigee X
Admite la implementación de varias revisiones de un proxy de API, en el que cada revisión puede tener una ruta base diferente. No admite la implementación de varias revisiones de un proxy de API, aunque el proxy tenga diferentes rutas base.
No

Resolución: Se implementaron varias rutas base para un proxy de API

Actualiza todos los paquetes para que solo se implemente una revisión de un paquete en un entorno, independientemente de la ruta de acceso base.

Mensajes HTTP que no cumplen con los requisitos

Resumen ¿Requiere cambios del cliente? Solución

Los clientes o el proxy de API envían mensajes (solicitudes o respuestas) que no cumplen con el estándar HTTP. Por ejemplo, nombres de encabezado no válidos, duplicaciones en algunos encabezados restringidos, etcétera.

No puedes migrar a Apigee X si la ejecución de tu API tiene uno o más de los siguientes errores:

Error Detalles
INVALID_CHARACTERS_IN_HEADER Se encontraron uno o más caracteres no permitidos en el encabezado especificado. Los nombres de encabezado válidos están compuestos por letras, dígitos y guiones en inglés.
MISSING_COLON Falta un : (dos puntos) en el par de nombre y valor del encabezado.
MULTIPLE_CONTENT_LENGTH Se proporcionaron varios valores para el encabezado Content-Length.
CONTENT_LENGTH_NOT_INTEGER El valor del encabezado Content-Length no es un número entero.
INVALID_UPGRADE El encabezado Upgrade solo se debe usar para habilitar las conexiones WebSocket, pero no es así.
URL_HEADER_SIZE_TOO_LONG El tamaño total de la URL y los encabezados de la solicitud supera el tamaño máximo permitido de 15 KB.
BODY_NOT_ALLOWED No se permite un cuerpo del mensaje con los métodos "GET", "DELETE", "TRACE", "OPTIONS" y "HEAD".
UNSUPPORTED_HTTP_VERSION Se está usando una versión de HTTP que no es la 1.1 para la solicitud y no se admite.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT Se estableció un valor de campo de encabezado Content-Length igual a cero ("0") para un método "POST" o "PUT".
UNSUPPORTED_RESPONSE_PREFIX Se encontró un prefijo de encabezado “X-Apigee-” no admitido en el encabezado de respuesta.
Sí, probablemente.

Resolución: Mensajes HTTP que no cumplen con los requisitos

Debes corregir cualquier error en los protocolos HTTP antes de migrar a Apigee X. Si un error se origina en una aplicación cliente, debes pedirle al desarrollador de la app cliente que corrija el problema.

El tiempo de vencimiento del token de OAuth 2.0 no es válido

Resumen ¿Requiere cambios del cliente? Solución

Los límites de vencimiento del token de OAuth 2.0 están fuera del rango prescrito.

Diferencia entre Apigee Edge y Apigee X:

Apigee Edge Apigee X
Actualmente, no se aplica ninguna restricción en el tiempo de vencimiento del token de OAuth 2.0, pero se planea aplicar una. Consulta los lineamientos en la sección OAuth de la página Límites. Debes establecer una hora de vencimiento para el token de acceso y el token de actualización de OAuth 2.0. Los rangos admitidos son los siguientes:
  • 180 segundos <= tiempo de vencimiento del token de acceso de OAuth 2.0 <= 30 días
  • 1 día <= tiempo de vencimiento del token de actualización de OAuth 2.0 <= 2 años
No

Resolución: El tiempo de vencimiento del token de OAuth 2.0 no es válido

Usa la política de OAuthV2 y especifica la hora de vencimiento en <ExpiresIn> y <RefreshTokenExpiresIn>.

Se excedieron los límites de productos

Resumen ¿Requiere cambios del cliente? Solución

La configuración de Apigee Edge no cumple con los límites del producto definidos. Algunos límites de productos que están documentados, pero no se aplican en Apigee Edge, sí se aplican en Apigee X.

No

Resolución: Se superaron los límites de productos

Corrige cualquier uso que supere los límites del producto antes de migrar a Apigee X.

Políticas de ServiceCallout con especificadores de conexión de destino de extremo y ruta

Resumen ¿Requiere cambios del cliente? Solución

En la política de texto destacado del servicio, el elemento <LocalTargetConnection> debe incluir los elementos <APIProxy> y <ProxyEndpoint>, o bien el elemento <Path>, pero no ambos. Para obtener más información, consulta el elemento <LocalTargetConnection>.

Apigee Edge documenta este requisito, pero no lo aplica. Apigee X detiene el procesamiento si encuentra un <LocalTargetConnection> con ambas configuraciones.

No

Resolución: Políticas de ServiceCallout con especificadores de conexión de destino de extremo y ruta

Verifica las configuraciones de la política de ServiceCallout y elimina las configuraciones de <LocalTargetConnection> que no cumplan con los requisitos.

Restricciones del nombre del servidor de destino

Resumen ¿Requiere cambios del cliente? Solución

Los nombres de los servidores de destino de Apigee X solo pueden contener letras, números, guiones y puntos. Los nombres de los servidores de destino perimetrales no imponen estas restricciones.

No

Resolución: Restricciones del nombre del servidor de destino

Verifica los nombres de los servidores de destino y actualízalos para quitar los caracteres no admitidos si es necesario.

Certificado de prueba en un host virtual

Resumen ¿Requiere cambios del cliente? Solución

Uno o más hosts virtuales usan el certificado de "prueba gratuita" proporcionado por Apigee. Esto hace que el host virtual responda a las solicitudes en dominios como ORG-ENV.apigee.net.

Diferencia entre Apigee Edge y Apigee X:

Apigee Edge Apigee X
Configura automáticamente el vhost "predeterminado" para admitir un nombre de dominio con el formato ORG-ENV.apigee.net. Hay un certificado comodín, conocido como "el certificado de prueba gratuita", que permite TLS en estos dominios. Los dominios heredados de Apigee con el formato ORG-ENV.apigee.net no están disponibles en Apigee X. Debes configurar tu propio nombre de dominio y aprovisionar los certificados de forma adecuada.

Resolución: Certificado de prueba en un host virtual

Debes configurar tu propio dominio y aprovisionar los certificados de forma adecuada.

Cualquier aplicación cliente que dependa del nombre de dominio heredado del formulario ORG-ENV.apigee.net debe modificarse para llamar al nuevo dominio.

DNS no resuelto

Resumen ¿Requiere cambios del cliente? Solución

Los extremos de destino tienen nombres de dominio sin resolver.

Diferencia entre Apigee Edge y Apigee X:

Apigee Edge Apigee X
Si falla la resolución de DNS, Apigee agrega .apigee.com al nombre de dominio y el DNS se resuelve correctamente con un código de respuesta 4xx. Si falla la resolución de DNS, Apigee no ejecuta la solicitud y devuelve un código de respuesta 5xx.
No

Resolución: DNS sin resolver

Actualiza el extremo de destino con un nombre de dominio válido.