Antipatrones de migración de Apigee Edge a Apigee X

Estás viendo la documentación de Apigee Edge.
Ve 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 funciones o la disponibilidad regional diferente.

En esta página, se describen los patrones contraproducentes 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.

En la lista más amplia de antipatrones de Apigee Edge, se describen 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 no recomendadas que bloquearán una migración. Soluciona estos problemas ahora para evitar problemas 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é asociada 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 la API. Esto será el equivalente de lo que es posible en Apigee Edge. El desafío será que, si quieres seguir un enfoque de “privilegios mínimos”, deberás determinar la lista mínima de productos de API a los que cada credencial de la app debe tener acceso. Puedes analizar esto con los informes de Apigee Edge Analytics, en función del 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 la caché. No admite la creación, actualización ni eliminación de descriptores de recursos de caché.
No

Resolución: Caché sin tiempo de vencimiento

Establece un tiempo 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 de acceso 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
Genera ‘{"name": "A"}’ Genera []

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

Apigee Edge Apigee X
Genera "A" Genera []

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

Busca y reemplaza las consultas 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 en comparación con Apigee Edge. Apigee X muestra 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
Genera null Genera un error PathNotFoundException.

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

Busca y reemplaza las consultas afectadas.

Las expresiones JSONPath con un índice de array no muestran un objeto de array.

Resumen ¿Requiere cambios del cliente? Solución

Las expresiones JSONPath con un índice o rebanadas de array muestran un objeto 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
Genera {“name”:”A”, “name”: “B”} Genera [{“name”:”A”, “name”: “B”}]

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

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

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

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

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

Busca y reemplaza expresiones que podrían mostrar 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 del almacén de claves de Apigee X solo pueden contener letras, números y guiones. Los nombres del almacén de claves de Edge no imponen estas restricciones.

No

Resolución: Restricciones de nombres de almacenes 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 las 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 base.

Mensajes HTTP que no cumplen con las normas

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 nombre del encabezado y el par de valores 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 debe usarse solo para habilitar las conexiones WebSocket, pero no es así.
URL_HEADER_SIZE_TOO_LONG El tamaño total de la URL de la solicitud y los encabezados supera el tamaño máximo permitido de 15 KB.
BODY_NOT_ALLOWED No se permite un cuerpo de mensaje con los métodos "GET", "DELETE", "TRACE", "OPTIONS" ni "HEAD".
UNSUPPORTED_HTTP_VERSION Se está usando una versión de HTTP que no es 1.1 para la solicitud y no se admite.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT Se configuró un valor de campo de encabezado Content-Length cero ("0") para un método "POST" o "PUT".
UNSUPPORTED_RESPONSE_PREFIX Había un prefijo de encabezado “X-Apigee-” no compatible en el encabezado de respuesta.
Sí, es posible.

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 proviene de 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 de los tokens 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 al tiempo de vencimiento de los tokens de OAuth 2.0, pero se planea su aplicación. Consulta los lineamientos en la sección OAuth de la página Límites. Debes establecer un token de acceso y un tiempo de vencimiento del token de actualización para OAuth 2.0. Los rangos compatibles 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 superaron 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 que no se aplican en Apigee Edge, se aplican en Apigee X.

No

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

Corrige el uso que supere los límites de productos 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 ServiceCallout, el elemento <LocalTargetConnection> debe incluir los elementos <APIProxy> y <ProxyEndpoint> o 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 la configuración de la política de ServiceCallout y elimina cualquier configuración de <LocalTargetConnection> que no cumpla con los requisitos.

Restricciones de nombres de servidores 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 de Edge no imponen estas restricciones.

No

Resolución: Restricciones de nombres de servidores 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" que proporciona 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 del tipo 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 del formato ORG-ENV.apigee.net no están disponibles en Apigee X. Debes configurar tu propio nombre de dominio y aprovisionar los certificados de manera 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 se debe modificar para llamar al dominio nuevo.

DNS sin resolver

Resumen ¿Requiere cambios del cliente? Solución

Los extremos de destino tienen nombres de dominio no resueltos.

Diferencia entre Apigee Edge y Apigee X:

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

Resolución: DNS no resuelto

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