Anti-pattern di migrazione da Apigee Edge ad Apigee X

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

In qualità di cliente Apigee Edge, potresti scegliere di eseguire la migrazione dell'installazione ad Apigee X per usufruire di nuove funzionalità o di una diversa disponibilità regionale.

Questa pagina descrive gli antipattern nella configurazione che dovrai risolvere prima di eseguire la migrazione ad Apigee X, nonché altre modifiche nel comportamento di cui devi essere a conoscenza prima della migrazione.

L'elenco più ampio di antipattern di Apigee Edge descrive le pratiche di utilizzo da evitare in qualsiasi caso. Questa pagina descrive le pratiche di utilizzo sconsigliate specifiche che bloccheranno 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 ad alcun prodotto API. Questa app ha effettivamente accesso 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 modo 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à se vuoi adottare un approccio di "privilegio minimo", dovrai determinare l'elenco minimo di prodotti API a cui devono avere accesso le credenziali di ogni app. Puoi analizzare questi dati con i report di Apigee Edge Analytics, in base all'ID client.

Cache senza scadenza

Riepilogo Richiede modifiche lato client? Risoluzione

Le cache non hanno un tempo 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 ora di scadenza

Imposta un'ora di scadenza per tutte le cache.

Espressioni di filtro JSONPath su percorsi non definiti

Riepilogo Richiede modifiche lato client? Risoluzione

Per i percorsi non definitivi, l'interrogazione del risultato di un'espressione di filtro non fa parte della specifica JSONPath. Vedi 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 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 di output PathNotFoundException

Risoluzione: espressioni JSONPath per indici non presenti

Trova e sostituisci le query interessate.

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

Riepilogo Richiede modifiche lato client? Risoluzione

Le espressioni JSONPath con un indice di array o sezioni 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: espressioni JSONPath con un indice di array che non restituiscono un oggetto array

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

Limitazioni relative al nome dell'archivio chiavi

Riepilogo Richiede modifiche lato client? Risoluzione

I nomi dei keystore Apigee X possono contenere solo lettere, numeri e trattini. I nomi degli archivi delle chiavi edge non impongono queste limitazioni.

No

Risoluzione: limitazioni del nome dell'archivio chiavi

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

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 di base di cui è stato eseguito il deployment per un proxy API

Aggiorna tutti i bundle in modo che venga eseguito il deployment di una sola revisione di un bundle in un ambiente, indipendentemente dal percorso di 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 Sono stati trovati uno o più caratteri non validi nell'intestazione specificata. I nomi delle intestazioni validi sono composti da lettere dell'alfabeto latino, cifre e trattini.
MISSING_COLON Manca un : (due punti) nella coppia nome-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 abilitare le connessioni WebSocket, ma non lo è.
URL_HEADER_SIZE_TOO_LONG La dimensione totale dell'URL della richiesta e delle intestazioni supera la dimensione massima consentita di 15 kB.
BODY_NOT_ALLOWED Un corpo del messaggio non è consentito con i metodi "GET", "DELETE", "TRACE", "OPTIONS" e "HEAD".
UNSUPPORTED_HTTP_VERSION Per la richiesta viene utilizzata una versione HTTP diversa dalla 1.1, che non è supportata.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT È stato impostato un valore del campo di intestazione Content-Length pari a zero ("0") per un metodo "POST" o "PUT".
UNSUPPORTED_RESPONSE_PREFIX Nel prefisso dell'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 ha origine da un'applicazione client, devi chiedere allo sviluppatore dell'app client di correggere il problema.

Tempo di scadenza del token OAuth 2.0 non valido

Riepilogo Richiede modifiche lato client? Risoluzione

I limiti di scadenza del 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 al tempo di scadenza del token OAuth 2.0, ma l'applicazione è pianificata. Consulta le linee guida nella sezione OAuth della pagina Limiti. Devi impostare un periodo di scadenza per il token di accesso e il token di aggiornamento per OAuth 2.0. Gli intervalli supportati sono:
  • 180 secondi <= tempo di scadenza del token di accesso OAuth 2.0 <= 30 giorni
  • 1 giorno <= tempo di scadenza del token di aggiornamento OAuth 2.0 <= 2 anni
No

Risoluzione: tempo di scadenza del token OAuth 2.0 non valido

Utilizza il criterio OAuthV2 e specifica la data 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 prodotto definiti. Alcuni limiti di produzione documentati, ma non applicati ad Apigee Edge, vengono applicati ad Apigee X.

No

Risoluzione: limiti dei prodotti superati

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

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

Riepilogo Richiede modifiche lato client? Risoluzione

Nelle norme relative ai callout di servizio, 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 di destinazione sia per l'endpoint che per il percorso

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

Limitazioni dei nomi dei 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 aggiornali per rimuovere i caratteri non supportati, se necessario.

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. In questo modo, 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 l'host virtuale "default" per supportare un nome di dominio nel formato ORG-ENV.apigee.net. Esiste un certificato jolly, noto come "certificato di prova senza costi", che consente TLS su questi domini. I domini Apigee legacy nel formato ORG-ENV.apigee.net non sono disponibili in Apigee X. Devi configurare il tuo nome di dominio e fornire i certificati in modo appropriato.

Soluzione: certificato di prova in un host virtuale

Devi configurare il tuo dominio e fornire i certificati in modo appropriato.

Qualsiasi applicazione client che dipende dal nome di dominio legacy 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.