Antimuster bei der Migration von Apigee Edge zu Apigee X

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Als aktueller Apigee Edge-Kunde können Sie Ihre Installation zu Apigee X migrieren, um neue Funktionen oder eine andere regionale Verfügbarkeit zu nutzen.

Auf dieser Seite werden Anti-Patterns in Ihrer Konfiguration beschrieben, die Sie vor der Migration zu Apigee X berücksichtigen müssen. Außerdem werden andere Verhaltensänderungen beschrieben, die Sie vor der Migration kennen sollten.

In der umfassenderen Liste der Apigee Edge-Anti-Patterns werden Anwendungspraktiken beschrieben, die in jedem Fall vermieden werden sollten. Auf dieser Seite werden die spezifischen, nicht empfohlenen Nutzungsverfahren beschrieben, die eine Migration blockieren. Beheben Sie diese jetzt, um Probleme bei der Migration zu Apigee X zu vermeiden.

Apps ohne API-Produkte

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Es gibt Apps ohne API-Produkt(e).

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Es ist möglich, eine Anwendung und Anmeldedaten zu konfigurieren, die mit keinem API-Produkt verknüpft sind. Diese App hat effektiv Zugriff auf alle API-Produkte. Jede App muss für den Zugriff auf mindestens ein API-Produkt konfiguriert werden. Es gibt keine Möglichkeit, implizit Zugriff auf alle API-Produkte zu gewähren. Sie können eine Anwendung so konfigurieren, dass sie Zugriff auf alle API-Produkte hat, müssen dies jedoch explizit tun.
Nein.

Lösung: Apps ohne API-Produkte

Weisen Sie jede App-Anmeldedaten mindestens einem API-Produkt zu. Weitere Informationen dazu finden Sie unter Apps registrieren und API-Schlüssel verwalten.

Am einfachsten ist es, jeder App Zugriff auf alle API-Produkte zuzuweisen. Das entspricht dem, was in Apigee Edge möglich ist. Die Herausforderung besteht darin, wenn Sie nach dem Prinzip der geringsten Berechtigung vorgehen möchten. Anschließend müssen Sie die Mindestliste der API-Produkte bestimmen, auf die die einzelnen App-Anmeldedaten Zugriff haben müssen. Sie können dies mit Apigee Edge Analytics-Berichten basierend auf der Client-ID analysieren.

Cache ohne Ablaufzeit

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Cache(s) haben keine Ablaufzeit.

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Unterstützt das Erstellen, Aktualisieren und Löschen von Cache-Ressourcendeskriptoren. Das Erstellen, Aktualisieren oder Löschen von Cache-Ressourcendeskriptoren wird nicht unterstützt.
Nein

Lösung: Cache ohne Ablaufzeit

Legen Sie eine Ablaufzeit für alle Caches fest.

JSONPath-Filterausdrücke für unbestimmte Pfade

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Bei nicht definierten Pfaden ist die Abfrage des Ergebnisses von Filterausdrücken nicht Teil der JSONPath-Spezifikation. Weitere Informationen finden Sie unter https://goessner.net/articles/JsonPath/.

Unterschied zwischen Apigee Edge und Apigee X:

Wenn Sie sich diese Beispielstruktur ansehen,

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

Mit dem Ausdruck $..books[?(@.name == 'A')][0]

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

Mit dem Ausdruck $..books[?(@.name == 'A')][0].name

Apigee Edge Apigee X
Ausgabe: "A" Ausgabe: []
Ja

Lösung: JSONPath-Filterausdrücke für unbestimmte Pfade

Suchen und ersetzen Sie betroffene Abfragen.

JSONPath-Ausdrücke für nicht vorhandene Indexe

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

JSONPath-Ausdrücke mit einem nicht vorhandenen Index verhalten sich in Apigee X anders als in Apigee Edge. Apigee X gibt den Fehler PathNotFoundException zurück, wenn der Pfad nicht gefunden wird.

Unterschied zwischen Apigee Edge und Apigee X:

Wenn Sie sich diese Beispielstruktur ansehen,

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

Mit dem Ausdruck $.books[3]

Apigee Edge Apigee X
Ausgabe: null Gibt PathNotFoundException Fehler aus
Ja

Lösung: JSONPath-Ausdrücke für nicht vorhandene Indexe

Suchen und ersetzen Sie betroffene Abfragen.

JSONPath-Ausdrücke mit einem Arrayindex, der kein Arrayobjekt zurückgibt

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

JSONPath-Ausdrücke mit einem Arrayindex oder mit Segmenten geben ein Arrayobjekt in Apigee X zurück.

Unterschied zwischen Apigee Edge und Apigee X:

Wenn Sie sich diese Beispielstruktur ansehen,

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

Mit dem Ausdruck $.books

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

Mit dem Ausdruck $.books[-1]

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

Mit dem Ausdruck $.books[-2:]

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

Lösung: JSONPath-Ausdrücke mit einem Array-Index geben kein Array-Objekt zurück

Suchen und ersetzen Sie Ausdrücke, die nach dem Upgrade möglicherweise andere Ergebnisse zurückgeben.

Einschränkungen für Schlüsselspeichernamen

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Apigee X-Schlüsselspeichernamen dürfen nur Buchstaben, Ziffern und Bindestriche enthalten. Für Edge-Schlüsselspeichernamen gelten diese Einschränkungen nicht.

Nein

Lösung: Namensbeschränkungen für den Schlüsselspeicher

Prüfen Sie die Schlüsselspeichernamen und aktualisieren Sie die Namen bei Bedarf, um nicht unterstützte Zeichen zu entfernen.

Mehrere Basispfade für einen API-Proxy bereitgestellt

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

In einer Umgebung werden mehrere Versionen eines API-Proxys bereitgestellt und jede Überarbeitung hat einen anderen Basispfad.

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Unterstützt die Bereitstellung mehrerer Versionen eines API-Proxys, bei denen jede Version einen anderen Basispfad haben kann. Die Bereitstellung mehrerer Versionen eines API-Proxys wird nicht unterstützt, auch wenn der Proxy unterschiedliche Basispfade hat.
Nein

Lösung: Mehrere Basispfade für einen API-Proxy bereitgestellt

Aktualisieren Sie alle Bundles, sodass unabhängig vom Basispfad nur eine Version eines Bundles in einer Umgebung bereitgestellt wird.

Nicht konforme HTTP-Nachrichten

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Clients oder der API-Proxy senden Nachrichten (Anfragen oder Antworten), die nicht dem HTTP-Standard entsprechen. Dazu gehören beispielsweise ungültige Header-Namen oder Duplikate in einigen eingeschränkten Headern.

Eine Migration zu Apigee X ist nicht möglich, wenn Ihre API-Ausführung einen oder mehrere der folgenden Fehler aufweist:

  • 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
Ja, möglicherweise.

Lösung: Nicht konforme HTTP-Meldungen

Sie müssen alle Fehler in HTTP-Protokollen beheben, bevor Sie zu Apigee X migrieren. Wenn ein Fehler von einer Clientanwendung verursacht wird, müssen Sie den Entwickler der Clientanwendung bitten, das Problem zu beheben.

Ablaufzeit des OAuth 2.0-Tokens ungültig

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Die Ablauflimits für OAuth 2.0-Tokens liegen außerhalb des vorgeschriebenen Bereichs.

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Derzeit wird keine Einschränkung für die Ablaufzeit von OAuth 2.0-Tokens erzwungen. Eine Erzwingung ist jedoch geplant. Weitere Informationen finden Sie im OAuth-Abschnitt der Seite „Beschränkungen“. Sie müssen ein Zugriffstoken und eine Ablaufzeit für das Aktualisierungstoken für OAuth 2.0 festlegen. Folgende Bereiche werden unterstützt:
  • 180 Sekunden <= Ablaufzeit des OAuth 2.0-Zugriffstokens <= 30 Tage
  • 1 Tag <= Ablaufzeit des OAuth 2.0-Aktualisierungstokens <= 2 Jahre
Nein

Lösung: Ablaufzeit des OAuth 2.0-Tokens ungültig

Verwende die OAuthV2-Richtlinie und gib die Ablaufzeit in <ExpiresIn> und <RefreshTokenExpiresIn> an.

Produktlimits überschritten

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Die Konfiguration von Apigee Edge ist nicht mit den definierten Produktlimits konform. Einige Produkteinschränkungen, die in Apigee Edge dokumentiert, aber nicht erzwungen werden, werden bei Apigee X erzwungen.

Nein

Lösung: Produktlimits überschritten

Korrigieren Sie vor der Migration zu Apigee X jede Nutzung, die die Produktlimits überschreitet.

ServiceCallout-Richtlinien mit Spezifizierern für Endpunkt- und Pfadzielverbindungen

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

In der ServiceCallout-Richtlinie sollte das Element <LocalTargetConnection> entweder die Elemente <APIProxy> und <ProxyEndpoint> oder das Element <Path> enthalten, aber nicht beides. Weitere Informationen findest du unter dem Element <LocalTargetConnection>.

Apigee Edge dokumentiert diese Anforderung, erzwingt sie aber nicht. Apigee X beendet die Verarbeitung, wenn ein <LocalTargetConnection> mit beiden Konfigurationen erkannt wird.

Nein

Lösung: ServiceCallout-Richtlinien mit Spezifizierern für Endpunkt- und Pfadzielverbindungen

Prüfen Sie die ServiceCallout-Richtlinienkonfigurationen und entfernen Sie alle <LocalTargetConnection>-Konfigurationen, die nicht konform sind.

Einschränkungen für Zielservernamen

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Namen von Apigee X-Zielservern dürfen nur Buchstaben, Ziffern, Bindestriche und Punkte enthalten. Für Namen von Edge-Zielservern gelten diese Einschränkungen nicht.

Nein

Lösung: Einschränkungen für Zielservernamen

Prüfen Sie die Namen der Zielserver und aktualisieren Sie gegebenenfalls die Namen, um nicht unterstützte Zeichen zu entfernen.

Testzertifikat in einem virtuellen Host

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Ein oder mehrere virtuelle Hosts verwenden das von Apigee bereitgestellte Zertifikat für die kostenlose Testversion. Dadurch antwortet der virtuelle Host auf Anfragen in Domains wie ORG-ENV.apigee.net.

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Konfiguriert Vhost „Standard“ automatisch so, dass ein Domainname im Format ORG-ENV.apigee.net unterstützt wird. Es gibt ein Platzhalterzertifikat, das als „kostenloses Testzertifikat“ bezeichnet wird und TLS auf diesen Domains zulässt. Legacy-Apigee-Domains im Format ORG-ENV.apigee.net sind in Apigee X nicht verfügbar. Sie müssen Ihren eigenen Domainnamen konfigurieren und Zertifikate entsprechend bereitstellen.
Ja

Lösung: Testzertifikat in einem virtuellen Host

Sie müssen Ihre eigene Domain konfigurieren und Zertifikate entsprechend bereitstellen.

Jede Clientanwendung, die vom alten Domainnamen im Format ORG-ENV.apigee.net abhängig ist, muss geändert werden, um die neue Domain aufzurufen.

Nicht aufgelöstes DNS

Zusammenfassung Erfordert clientseitige Änderungen? Lösung

Die Zielendpunkte haben nicht aufgelöste Domainnamen.

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Wenn die DNS-Auflösung fehlschlägt, hängt Apigee .apigee.com an den Domainnamen an und das DNS wird erfolgreich mit dem Antwortcode 4xx aufgelöst. Wenn die DNS-Auflösung fehlschlägt, führt Apigee die Anfrage nicht aus und gibt den Antwortcode 5xx zurück.
Nein

Lösung: DNS nicht aufgelöst

Aktualisieren Sie den Zielendpunkt mit einem gültigen Domainnamen.