Anti-pattern di migrazione da Apigee Edge ad Apigee X

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
info

Se sei già cliente di Apigee Edge, puoi scegliere di eseguire la migrazione della tua installazione a Apigee X per usufruire di nuove funzionalità o di una disponibilità regionale diversa.

Questa pagina descrive gli antipattern nella configurazione che dovrai risolvere prima di eseguire la migrazione ad Apigee X, nonché altre modifiche del comportamento che devi conoscere prima della migrazione.

L'elenco più ampio degli antipattern di Apigee Edge descrive le pratiche di utilizzo da evitare in ogni caso. Questa pagina descrive le pratiche di utilizzo specifiche sconsigliate che bloccano una migrazione. Risolvi questi problemi ora per evitare problemi durante la migrazione ad Apigee X.

App senza prodotti API

Riepilogo Richiede modifiche lato client? Risoluzione

Esistono app senza prodotti API.

Differenza tra Apigee Edge e Apigee X:

Apigee Edge Apigee X
È possibile configurare un'app e una credenziale non associate a nessun prodotto API. Questa app ha accesso effettivo a tutti i prodotti API. Ogni app deve essere configurata per accedere ad almeno un prodotto API. Non è possibile fornire l'accesso a tutti i prodotti API in modo implicito. Puoi configurare un'app in modo che abbia accesso a tutti i prodotti API, ma devi farlo esplicitamente.
No.

Risoluzione: app senza prodotti API

Associa ogni credenziale dell'app ad almeno un prodotto API. Per maggiori informazioni su come eseguire questa operazione, consulta Registrare le app e gestire le chiavi API.

Un percorso semplice è assegnare a ogni app l'accesso a tutti i prodotti API. Sarà l'equivalente di ciò che è possibile in Apigee Edge. La sfida sarà che, se vuoi adottare un approccio "del privilegio minimo", dovrai determinare l'elenco minimo di prodotti API a cui deve avere accesso ogni credenziale dell'app. Puoi analizzarlo con i report di Apigee Edge Analytics, in base all'ID cliente.

Cache senza data di scadenza

Riepilogo Richiede modifiche lato client? Risoluzione

Le cache non hanno una data di scadenza.

Differenza tra Apigee Edge e Apigee X:

Apigee Edge Apigee X
Supporta la creazione, l'aggiornamento e l'eliminazione dei descrittori delle risorse della cache. Non supporta la creazione, l'aggiornamento o l'eliminazione dei descrittori delle risorse della cache.
No

Risoluzione: cache senza data di scadenza

Imposta una scadenza per tutte le cache.

Espressioni di filtro JSONPath su percorsi non definiti

Riepilogo Richiede modifiche lato client? Risoluzione

Per i percorsi non definitivi, la query sul risultato di un'espressione di filtro non fa parte della specifica JSONPath. Consulta https://goessner.net/articles/JsonPath/.

Differenza tra Apigee Edge e Apigee X:

Quando navighi in questa struttura di esempio,

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

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

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

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

Apigee Edge Apigee X
Output "A" Output []

Risoluzione: espressioni di filtro JSONPath su percorsi non definiti

Trova e sostituisci le query interessate.

Espressioni JSONPath per gli indici non presenti

Riepilogo Richiede modifiche lato client? Risoluzione

Le espressioni JSONPath con un indice non presente hanno comportamenti diversi in Apigee X rispetto ad Apigee Edge. Apigee X restituisce un errore PathNotFoundException quando il percorso non viene trovato.

Differenza tra Apigee Edge e Apigee X:

Quando navighi in questa struttura di esempio,

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

Con l'espressione $.books[3],

Apigee Edge Apigee X
Output null Errore PathNotFoundException di output

Risoluzione: espressioni JSONPath per gli indici non presenti

Trova e sostituisci le query interessate.

Espressioni JSONPath con un indice di array che non restituisce un oggetto array

Riepilogo Richiede modifiche lato client? Risoluzione

Le espressioni JSONPath con un indice o delle sezioni di array restituiscono un oggetto array in Apigee X.

Differenza tra Apigee Edge e Apigee X:

Quando navighi in questa struttura di esempio,

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

Con l'espressione $.books,

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

Con l'espressione $.books[-1],

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

Con l'espressione $.books[-2:],

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

Risoluzione: le espressioni JSONPath con un indice di array che non restituisce un oggetto array

Trova e sostituisci le espressioni che potrebbero restituire risultati diversi dopo l'upgrade.

Restrizioni relative ai nomi degli archivi chiavi

Riepilogo Richiede modifiche lato client? Risoluzione

I nomi dei magazzini chiavi Apigee X possono contenere solo lettere, numeri e trattini. I nomi dei keystore Edge non impongono queste limitazioni.

No

Risoluzione: restrizioni relative ai nomi degli archivi chiavi

Controlla i nomi del keystore e, se necessario, aggiornali per rimuovere i caratteri non supportati.

Più percorsi di base di cui è stato eseguito il deployment per un proxy API

Riepilogo Richiede modifiche lato client? Risoluzione

In un ambiente vengono implementate più revisioni di un proxy API e ogni revisione ha un percorso di base diverso.

Differenza tra Apigee Edge e Apigee X:

Apigee Edge Apigee X
Supporta il deployment di più revisioni di un proxy API in cui ogni revisione può avere un percorso di base diverso. Non supporta il deployment di più revisioni di un proxy API anche se il proxy ha percorsi di base diversi.
No

Risoluzione: più percorsi base di cui è stato eseguito il deployment per un proxy API

Aggiorna tutti i bundle in modo che in un ambiente venga implementata una sola revisione di un bundle, indipendentemente dal percorso base.

Messaggi HTTP non conformi

Riepilogo Richiede modifiche lato client? Risoluzione

I client o il proxy API inviano messaggi (richieste o risposte) che non sono conformi allo standard HTTP. Ad esempio, nomi di intestazione non validi, duplicazioni in alcune intestazioni con limitazioni e così via.

Non puoi eseguire la migrazione ad Apigee X se l'esecuzione dell'API presenta uno o più dei seguenti errori:

Errore Dettagli
INVALID_CHARACTERS_IN_HEADER Nell'intestazione specificata sono stati rilevati uno o più caratteri non validi. I nomi delle intestazioni validi sono composti da lettere, cifre e trattini dell'alfabeto inglese.
MISSING_COLON Manca un : (due punti) nella coppia di nome e valore dell'intestazione.
MULTIPLE_CONTENT_LENGTH Sono stati forniti più valori per l'intestazione Content-Length.
CONTENT_LENGTH_NOT_INTEGER Il valore dell'intestazione Content-Length non è un numero intero.
INVALID_UPGRADE L'intestazione Upgrade deve essere utilizzata solo per attivare le connessioni WebSocket, ma non lo è.
URL_HEADER_SIZE_TOO_LONG Le dimensioni totali dell'URL richiesta e delle intestazioni superano la dimensione massima consentita di 15 KB.
BODY_NOT_ALLOWED Il corpo di un messaggio non è consentito con i metodi "GET", "DELETE", "TRACE", "OPTIONS" e "HEAD".
UNSUPPORTED_HTTP_VERSION Per la richiesta viene utilizzata una versione HTTP diversa da 1.1, che non è supportata.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT È stato impostato un valore zero ("0") per il campo dell'intestazione Content-Length per un metodo "POST" o "PUT".
UNSUPPORTED_RESPONSE_PREFIX Nell'intestazione della risposta era presente un prefisso dell'intestazione "X-Apigee-" non supportato.
Sì, è possibile.

Risoluzione: messaggi HTTP non conformi

Devi correggere eventuali errori nei protocolli HTTP prima di eseguire la migrazione ad Apigee X. Se un errore proviene da un'applicazione client, devi chiedere allo sviluppatore dell'app client di correggere il problema.

Data e ora di scadenza del token OAuth 2.0 non valide

Riepilogo Richiede modifiche lato client? Risoluzione

I limiti di scadenza dei token OAuth 2.0 non rientrano nell'intervallo prescritto.

Differenza tra Apigee Edge e Apigee X:

Apigee Edge Apigee X
Al momento non viene applicato alcun vincolo alla data di scadenza del token OAuth 2.0, ma la sua applicazione è in programma. Consulta le linee guida nella sezione OAuth della pagina Limiti. Devi impostare una data di scadenza per il token di accesso e il token di aggiornamento per OAuth 2.0. Gli intervalli supportati sono:
  • 180 secondi <= data di scadenza del token di accesso OAuth 2.0 <= 30 giorni
  • 1 giorno <= data di scadenza del token di aggiornamento OAuth 2.0 <= 2 anni
No

Risoluzione: data e ora di scadenza del token OAuth 2.0 non valide

Utilizza il criterio OAuthV2 e specifica la data e l'ora di scadenza in <ExpiresIn> e <RefreshTokenExpiresIn>.

Limiti di prodotto superati

Riepilogo Richiede modifiche lato client? Risoluzione

La configurazione di Apigee Edge non è conforme ai limiti di produzione definiti. Alcuni limiti di prodotto documentati, ma non applicati su Apigee Edge, vengono applicati su Apigee X.

No

Risoluzione: limiti di prodotti superati

Correggi qualsiasi utilizzo che superi i limiti del prodotto prima di eseguire la migrazione ad Apigee X.

Norme ServiceCallout con specificatori di connessione di destinazione sia per l'endpoint che per il percorso

Riepilogo Richiede modifiche lato client? Risoluzione

Nel criterio ServiceCallout, l'elemento <LocalTargetConnection> deve includere gli elementi <APIProxy> e <ProxyEndpoint> o l'elemento <Path>, ma non entrambi. Per ulteriori informazioni, consulta l'elemento <LocalTargetConnection>.

Apigee Edge documenta questo requisito, ma non lo applica. Apigee X interrompe l'elaborazione se rileva un <LocalTargetConnection> con entrambe le configurazioni.

No

Risoluzione: criteri ServiceCallout con specificatori di connessione target di endpoint e percorso

Controlla le configurazioni dei criteri ServiceCallout ed elimina eventuali configurazioni di <LocalTargetConnection> non conformi.

Restrizioni relative al nome del server di destinazione

Riepilogo Richiede modifiche lato client? Risoluzione

I nomi dei server di destinazione Apigee X possono contenere solo lettere, numeri, trattini e punti. I nomi dei server di destinazione Edge non impongono queste limitazioni.

No

Risoluzione: limitazioni del nome del server di destinazione

Controlla i nomi dei server di destinazione e, se necessario, aggiornali per rimuovere i caratteri non supportati.

Certificato di prova in un host virtuale

Riepilogo Richiede modifiche lato client? Risoluzione

Uno o più host virtuali utilizzano il certificato "prova senza costi" fornito da Apigee. Di conseguenza, l'host virtuale risponde alle richieste su domini come ORG-ENV.apigee.net.

Differenza tra Apigee Edge e Apigee X:

Apigee Edge Apigee X
Configura automaticamente il vhost "predefinito" per supportare un nome di dominio del tipo ORG-ENV.apigee.net. Esiste un certificato jolly, noto come "certificato per la prova senza costi", che consente TLS su questi domini. I domini Apigee precedenti del tipo ORG-ENV.apigee.net non sono disponibili in Apigee X. Devi configurare il tuo nome di dominio e eseguire il provisioning dei certificati in modo appropriato.

Risoluzione: certificato di prova in un host virtuale

Devi configurare il tuo dominio e eseguire il provisioning dei certificati in modo appropriato.

Qualsiasi applicazione client che dipende dal nome di dominio precedente del modulo ORG-ENV.apigee.net deve essere modificata per chiamare il nuovo dominio.

DNS non risolto

Riepilogo Richiede modifiche lato client? Risoluzione

Gli endpoint di destinazione hanno nomi di dominio non risolti.

Differenza tra Apigee Edge e Apigee X:

Apigee Edge Apigee X
Se la risoluzione DNS non va a buon fine, Apigee aggiunge .apigee.com al nome di dominio e il DNS viene risolto correttamente con un codice di risposta 4xx. Se la risoluzione DNS non va a buon fine, Apigee non esegue la richiesta e restituisce un codice di risposta 5xx.
No

Risoluzione: DNS non risolto

Aggiorna l'endpoint di destinazione con un nome di dominio valido.