Antimuster bei der Migration von Apigee Edge zu Apigee X

Sie sehen sich die Dokumentation zu Apigee Edge an.
Sehen Sie sich die Apigee X-Dokumentation an.
info

Als aktueller Apigee Edge-Kunde können Sie Ihre Installation zu Apigee X migrieren, um von neuen Funktionen oder einer anderen regionalen Verfügbarkeit zu profitieren.

Auf dieser Seite werden Anti-Muster in Ihrer Konfiguration beschrieben, die Sie vor der Migration zu Apigee X beheben müssen, sowie andere Verhaltensänderungen, die Sie vor der Migration kennen sollten.

In der umfassenderen Liste der Apigee Edge-Anti-Muster werden Nutzungspraktiken beschrieben, die auf jeden Fall vermieden werden sollten. Auf dieser Seite werden die konkreten nicht empfohlenen Nutzungspraktiken beschrieben, die eine Migration blockieren. Beheben Sie diese Probleme jetzt, um Probleme bei der Migration zu Apigee X zu vermeiden.

Apps ohne API-Produkte

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? 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 App und Anmeldedaten zu konfigurieren, die keinem API-Produkt zugeordnet sind. Diese App hat effektiv Zugriff auf alle API-Produkte. Jede App muss so konfiguriert sein, dass sie auf mindestens ein API-Produkt zugreifen kann. Es gibt keine Möglichkeit, implizit Zugriff auf alle API-Produkte zu gewähren. Sie können eine App so konfigurieren, dass sie Zugriff auf alle API-Produkte hat. Dies muss jedoch explizit erfolgen.
Nein.

Lösung: Apps ohne API-Produkte

Verknüpfen Sie alle Anmeldedaten für Apps mit mindestens einem API-Produkt. Weitere Informationen dazu finden Sie unter Anwendungen registrieren und API-Schlüssel verwalten.

Eine einfache Möglichkeit besteht darin, jeder App Zugriff auf alle API-Produkte zuzuweisen. Das entspricht dem, was in Apigee Edge möglich ist. Wenn Sie das Prinzip der geringsten Berechtigung anwenden möchten, müssen Sie die Mindestliste der API-Produkte ermitteln, auf die die Anmeldedaten jeder App zugreifen müssen. Sie können dies mit Apigee Edge Analytics-Berichten basierend auf der Client-ID analysieren.

Cache ohne Ablaufzeit

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

Caches haben kein Ablaufdatum.

Unterschied zwischen Apigee Edge und Apigee X:

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

Lösung: Cache ohne Ablaufzeit

Legen Sie ein Ablaufdatum für alle Caches fest.

JSONPath-Filterausdrücke auf nicht eindeutigen Pfaden

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

Bei nicht eindeutigen Pfaden ist das Abfragen des Ergebnisses eines Filterausdrucks nicht Teil der JSONPath-Spezifikation. Weitere Informationen finden Sie unter https://goessner.net/articles/JsonPath/.

Unterschied zwischen Apigee Edge und Apigee X:

Wenn Sie diese Beispielstruktur aufrufen,

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

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

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

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

Apigee Edge Apigee X
Ausgaben "A" Ausgaben []
Ja

Lösung: JSONPath-Filterausdrücke auf nicht eindeutigen Pfaden

Suchen Sie nach den betroffenen Abfragen und ersetzen Sie sie.

JSONPath-Ausdrücke für nicht vorhandene Indexe

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

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

Unterschied zwischen Apigee Edge und Apigee X:

Wenn Sie diese Beispielstruktur aufrufen,

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

Mit dem Ausdruck $.books[3]

Apigee Edge Apigee X
Ausgaben null Fehler PathNotFoundException bei Ausgaben
Ja

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

Suchen Sie nach den betroffenen Abfragen und ersetzen Sie sie.

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

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

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

Unterschied zwischen Apigee Edge und Apigee X:

Wenn Sie diese Beispielstruktur aufrufen,

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

Mit dem Ausdruck $.books

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

Mit dem Ausdruck $.books[-1]

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

Mit dem Ausdruck $.books[-2:]

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

Lösung: JSONPath-Ausdrücke mit einem Arrayindex geben kein Arrayobjekt zurück

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

Einschränkungen für den Namen des Schlüsselspeichers

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

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

Nein

Lösung: Einschränkungen für Schlüsselspeichernamen

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

Mehrere Basispfade, die für einen API-Proxy bereitgestellt werden

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

In einer Umgebung werden mehrere Revisionen eines API-Proxys bereitgestellt und jede Revision hat einen anderen Basispfad.

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Unterstützt die Bereitstellung mehrerer Revisionen eines API-Proxys, wobei jede Revision einen anderen Basispfad haben kann. Unterstützt nicht die Bereitstellung mehrerer Versionen eines API-Proxys, auch wenn der Proxy unterschiedliche Basispfade hat.
Nein

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

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

Nicht konforme HTTP-Nachrichten

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

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

Sie können nicht zu Apigee X migrieren, wenn bei der API-Ausführung mindestens einer der folgenden Fehler auftritt:

Fehler Details
INVALID_CHARACTERS_IN_HEADER In der angegebenen Überschrift wurde mindestens ein ungültiges Zeichen gefunden. Gültige Headernamen bestehen aus Buchstaben, Ziffern und Bindestrichen.
MISSING_COLON Im Paar aus Header-Name und Header-Wert fehlt ein : (Doppelpunkt).
MULTIPLE_CONTENT_LENGTH Für den Header „Content-Length“ wurden mehrere Werte angegeben.
CONTENT_LENGTH_NOT_INTEGER Der Wert des Content-Length-Headers ist keine Ganzzahl.
INVALID_UPGRADE Der Upgrade-Header darf nur zum Aktivieren von WebSocket-Verbindungen verwendet werden, wird aber nicht dafür verwendet.
URL_HEADER_SIZE_TOO_LONG Die Gesamtgröße der Anfrage-URL und der Header überschreitet die maximal zulässige Größe von 15 KB.
BODY_NOT_ALLOWED Bei den Methoden „GET“, „DELETE“, „TRACE“, „OPTIONS“ und „HEAD“ ist kein Nachrichtentext zulässig.
UNSUPPORTED_HTTP_VERSION Für die Anfrage wird eine andere HTTP-Version als 1.1 verwendet, die nicht unterstützt wird.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT Für eine „POST“- oder „PUT“-Methode wurde der Wert „0“ für das Content-Length-Header-Feld festgelegt.
UNSUPPORTED_RESPONSE_PREFIX Im Antwortheader war ein nicht unterstütztes Headerpräfix vom Typ „X-Apigee-“ vorhanden.
Ja, möglicherweise.

Lösung: Nicht konforme HTTP-Nachrichten

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

Ungültige Ablaufzeit für OAuth 2.0-Token

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

Die Gültigkeitsdauer von OAuth 2.0-Tokens liegt außerhalb des zulässigen Bereichs.

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Derzeit wird keine Einschränkung für das Ablaufdatum von OAuth 2.0-Tokens erzwungen. Dies ist jedoch geplant. Weitere Informationen finden Sie in den Richtlinien im Abschnitt zu OAuth auf der Seite „Einschränkungen“. Sie müssen für OAuth 2.0 eine Ablaufzeit für das Zugriffs- und das Aktualisierungstoken festlegen. Folgende Bereiche werden unterstützt:
  • 180 Sekunden < Gültigkeitsdauer 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

Verwenden Sie die OAuthV2-Richtlinie und geben Sie das Ablaufdatum in <ExpiresIn> und <RefreshTokenExpiresIn> an.

Produktlimits überschritten

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

Die Konfiguration von Apigee Edge entspricht nicht den Produktlimits. Einige Produkteinschränkungen, die in Apigee Edge dokumentiert, aber nicht erzwungen werden, werden in Apigee X erzwungen.

Nein

Lösung: Produktlimits überschritten

Korrigieren Sie jede Nutzung, die die Produktlimits überschreitet, bevor Sie zu Apigee X migrieren.

ServiceCallout-Richtlinien mit Endpunkt- und Pfadzielverbindungsspezifizierern

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? 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 finden Sie im Element <LocalTargetConnection>.

Diese Anforderung wird in Apigee Edge dokumentiert, aber nicht erzwungen. Apigee X beendet die Verarbeitung, wenn ein <LocalTargetConnection> mit beiden Konfigurationen gefunden wird.

Nein

Lösung: ServiceCallout-Richtlinien mit Endpunkt- und Pfadzielverbindungsspezifikationen

Prüfen Sie die Konfigurationen der ServiceCallout-Richtlinie und entfernen Sie alle nicht konformen <LocalTargetConnection>-Konfigurationen.

Einschränkungen für den Namen des Zielservers

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

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

Nein

Lösung: Einschränkungen für Zielservernamen

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

Testzertifikat in einem virtuellen Host

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? Lösung

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

Unterschied zwischen Apigee Edge und Apigee X:

Apigee Edge Apigee X
Der „default“-Vhost wird automatisch so konfiguriert, dass er einen Domainnamen vom Typ ORG-ENV.apigee.net unterstützt. Es gibt ein Platzhalterzertifikat, das als „Zertifikat für die kostenlose Testversion“ bezeichnet wird und TLS für diese Domains zulässt. Legacy-Apigee-Domains vom Typ 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.

Alle Clientanwendungen, die vom bisherigen Domainnamen des Formulars ORG-ENV.apigee.net abhängen, müssen so geändert werden, dass die neue Domain aufgerufen wird.

Nicht aufgelöstes DNS

Zusammenfassung Erfordert die Änderung clientseitiger Funktionen? 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 die DNS-Auflösung wird mit einem 4xx-Antwortcode erfolgreich abgeschlossen. Wenn die DNS-Auflösung fehlschlägt, führt Apigee die Anfrage nicht aus und gibt einen Antwortcode 5xx zurück.
Nein

Lösung: Nicht aufgelöstes DNS

Aktualisieren Sie den Zielendpunkt mit einem gültigen Domainnamen.