Antywzorce migracji z Apigee Edge do Apigee X

Wyświetlasz dokumentację Apigee Edge.
Zapoznaj się z dokumentacją Apigee X. info

Jeśli jesteś obecnym klientem Apigee Edge, możesz przenieść swoją instalację do Apigee X, aby korzystać z nowych funkcji lub innej dostępności regionalnej.

Na tej stronie opisujemy antywzorce w konfiguracji, które musisz rozwiązać przed migracją do Apigee X, a także inne zmiany w działaniu, o których musisz wiedzieć przed migracją.

Szersza lista antywzorców Apigee Edge opisuje praktyki, których należy unikać w każdym przypadku. Na tej stronie opisujemy konkretne praktyki, których nie zalecamy, a które uniemożliwiają migrację. Rozwiąż te problemy, aby uniknąć problemów podczas migracji do Apigee X.

Aplikacje bez usług API

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Istnieją aplikacje bez produktów API.

Różnica między Apigee Edge a Apigee X:

Apigee Edge Apigee X
Możesz skonfigurować aplikację i dane logowania, które nie są powiązane z żadną usługą API. Ta aplikacja ma dostęp do wszystkich produktów API. Każda aplikacja musi być skonfigurowana tak, aby miała dostęp do co najmniej 1 produktu API. Nie ma możliwości udzielenia dostępu do wszystkich produktów API w sposób dorozumiany. Możesz skonfigurować aplikację tak, aby miała dostęp do wszystkich produktów interfejsu API, ale musisz to zrobić w sposób jawny.
Nie.

Rozwiązanie: aplikacje bez usług API

Powiąż każde dane logowania aplikacji z co najmniej 1 usługą API. Więcej informacji o tym, jak to zrobić, znajdziesz w artykule Rejestrowanie aplikacji i zarządzanie kluczami interfejsu API.

Najprostszym sposobem jest przyznanie każdej aplikacji dostępu do wszystkich produktów API. Będzie to odpowiednik tego, co jest możliwe w Apigee Edge. Jeśli chcesz zastosować podejście „najmniejszych uprawnień”, musisz określić minimalną listę produktów API, do których dostęp muszą mieć poszczególne dane logowania aplikacji. Możesz to przeanalizować za pomocą raportów Apigee Edge Analytics na podstawie identyfikatora klienta.

Pamięć podręczna bez czasu wygaśnięcia

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Pamięć podręczna nie ma czasu wygaśnięcia.

Różnica między Apigee Edge a Apigee X:

Apigee Edge Apigee X
Obsługuje tworzenie, aktualizowanie i usuwanie deskryptorów zasobów pamięci podręcznej. Nie obsługuje tworzenia, aktualizowania ani usuwania deskryptorów zasobów pamięci podręcznej.
Nie

Rozwiązanie: pamięć podręczna bez czasu wygaśnięcia

Ustaw czas wygaśnięcia wszystkich pamięci podręcznych.

Wyrażenia filtru JSONPath na ścieżkach nieokreślonych

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

W przypadku ścieżek nieokreślonych zapytania dotyczące wyniku wyrażeń filtra nie są częścią specyfikacji JSONPath. Więcej informacji znajdziesz na stronie https://goessner.net/articles/JsonPath/.

Różnica między Apigee Edge a Apigee X:

Podczas poruszania się po tej przykładowej strukturze

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

W wyrażeniu $..books[?(@.name == 'A')][0]

Apigee Edge Apigee X
Dane wyjściowe: ‘{"name": "A"}’ Dane wyjściowe: []

W wyrażeniu $..books[?(@.name == 'A')][0].name

Apigee Edge Apigee X
Dane wyjściowe: "A" Dane wyjściowe: []
Tak

Rozwiązanie: wyrażenia filtra JSONPath na ścieżkach nieokreślonych

znajdować i zastępować zapytania, których dotyczą te zmiany;

Wyrażenia JSONPath dla indeksów, które nie są obecne

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Wyrażenia JSONPath z indeksem, który nie występuje, działają inaczej w Apigee X niż w Apigee Edge. Jeśli ścieżka nie zostanie znaleziona, Apigee X zwróci błąd PathNotFoundException.

Różnica między Apigee Edge a Apigee X:

Podczas poruszania się po tej przykładowej strukturze

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

W wyrażeniu $.books[3]

Apigee Edge Apigee X
Dane wyjściowe: null Wyjście PathNotFoundException błąd
Tak

Rozwiązanie: wyrażenia JSONPath dla indeksów, które nie są obecne

znajdować i zastępować zapytania, których dotyczą te zmiany;

Wyrażenia JSONPath z indeksem tablicy, które nie zwracają obiektu tablicy

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Wyrażenia JSONPath z indeksem tablicy lub wycinkami zwracają obiekt tablicy w Apigee X.

Różnica między Apigee Edge a Apigee X:

Podczas poruszania się po tej przykładowej strukturze

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

W wyrażeniu $.books

Apigee Edge Apigee X
Dane wyjściowe: {“name”:”A”, “name”: “B”} Dane wyjściowe: [{“name”:”A”, “name”: “B”}]

W wyrażeniu $.books[-1]

Apigee Edge Apigee X
Dane wyjściowe: {“name”: “B”} Dane wyjściowe: [{“name”: “B”}]

W wyrażeniu $.books[-2:]

Apigee Edge Apigee X
Dane wyjściowe: {“name”:”A”, “name”: “B”} Dane wyjściowe: [{“name”:”A”, “name”: “B”}]
Tak

Rozwiązanie: wyrażenia JSONPath z indeksem tablicy nie zwracają obiektu tablicy

Znajdź i zamień wyrażenia, które po uaktualnieniu mogą zwracać inne wyniki.

Ograniczenia dotyczące nazwy magazynu kluczy

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Nazwy magazynów kluczy Apigee X mogą zawierać tylko litery, cyfry i łączniki. Nazwy magazynów kluczy Edge nie podlegają tym ograniczeniom.

Nie

Rozwiązanie: ograniczenia dotyczące nazwy magazynu kluczy

Sprawdź nazwy magazynów kluczy i w razie potrzeby usuń z nich niedozwolone znaki.

Wdrożono wiele ścieżek podstawowych dla proxy interfejsu API

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

W środowisku jest wdrożonych kilka wersji proxy interfejsu API, a każda z nich ma inną ścieżkę podstawową.

Różnica między Apigee Edge a Apigee X:

Apigee Edge Apigee X
Obsługuje wdrażanie wielu wersji proxy interfejsu API, z których każda może mieć inną ścieżkę podstawową. Nie obsługuje wdrażania wielu wersji proxy interfejsu API, nawet jeśli proxy ma różne ścieżki podstawowe.
Nie

Rozwiązanie: wiele ścieżek podstawowych wdrożonych w przypadku proxy interfejsu API

Zaktualizuj wszystkie pakiety, aby w środowisku była wdrażana tylko jedna wersja pakietu, niezależnie od ścieżki podstawowej.

Niezgodne wiadomości HTTP

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Klienci lub serwer proxy interfejsu API wysyłają wiadomości (żądania lub odpowiedzi), które nie są zgodne ze standardem HTTP. Na przykład nieprawidłowe nazwy nagłówków, duplikaty w niektórych nagłówkach objętych ograniczeniami itp.

Nie możesz przejść na Apigee X, jeśli podczas wykonywania interfejsu API wystąpi co najmniej jeden z tych błędów:

Błąd Szczegóły
INVALID_CHARACTERS_IN_HEADER W podanym nagłówku znaleziono co najmniej 1 niedozwolony znak. Prawidłowe nazwy nagłówków składają się z liter alfabetu angielskiego, cyfr i łączników.
MISSING_COLON Brak znaku : (dwukropka) w parze nazwa nagłówka i wartość nagłówka.
MULTIPLE_CONTENT_LENGTH Podano wiele wartości nagłówka Content-Length.
CONTENT_LENGTH_NOT_INTEGER Wartość nagłówka Content-Length nie jest liczbą całkowitą.
INVALID_UPGRADE Nagłówek Upgrade powinien być używany tylko do włączania połączeń WebSocket, ale tak nie jest.
URL_HEADER_SIZE_TOO_LONG Łączny rozmiar adresu URL żądania i nagłówków przekracza maksymalny dozwolony rozmiar, który wynosi 15 KB.
BODY_NOT_ALLOWED Treść wiadomości jest niedozwolona w przypadku metod „GET”, „DELETE”, „TRACE”, „OPTIONS” i „HEAD”.
UNSUPPORTED_HTTP_VERSION Żądanie korzysta z wersji HTTP innej niż 1.1, która nie jest obsługiwana.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT Dla metody „POST” lub „PUT” ustawiono wartość pola nagłówka Content-Length równą zero („0”).
UNSUPPORTED_RESPONSE_PREFIX W nagłówku odpowiedzi wystąpił nieobsługiwany prefiks nagłówka „X-Apigee-”.
Tak, być może.

Rozwiązanie: niezgodne wiadomości HTTP

Przed migracją do Apigee X musisz naprawić wszystkie błędy w protokołach HTTP. Jeśli błąd pochodzi z aplikacji klienta, musisz poprosić dewelopera tej aplikacji o jego naprawienie.

Nieprawidłowy czas wygaśnięcia tokena OAuth 2.0

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Limity wygaśnięcia tokena OAuth 2.0 wykraczają poza określony zakres.

Różnica między Apigee Edge a Apigee X:

Apigee Edge Apigee X
Obecnie nie jest wymuszane żadne ograniczenie czasu wygaśnięcia tokena OAuth 2.0, ale planujemy wprowadzić takie ograniczenie. Wytyczne znajdziesz w sekcji OAuth na stronie Limity. Musisz ustawić czas wygaśnięcia tokena dostępu i tokena odświeżania w przypadku OAuth 2.0. Obsługiwane zakresy:
  • 180 sekund <= czas wygaśnięcia tokena dostępu OAuth 2.0 <= 30 dni
  • 1 dzień ≤ czas ważności tokena odświeżania OAuth 2.0 ≤ 2 lata
Nie

Rozwiązanie: nieprawidłowy czas wygaśnięcia tokena OAuth 2.0

Użyj zasady OAuthV2 i określ czas wygaśnięcia w elementach <ExpiresIn><RefreshTokenExpiresIn>.

Przekroczono limity produktów

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Konfiguracja Apigee Edge jest niezgodna z określonymi limitami usług. Niektóre limity produktów, które są udokumentowane, ale nie są egzekwowane w Apigee Edge, są egzekwowane w Apigee X.

Nie

Rozwiązanie: przekroczono limity produktów

Przed migracją do Apigee X skoryguj wszelkie przypadki wykorzystania przekraczające limity produktu.

Zasady ServiceCallout z specyfikatorami połączenia docelowego punktu końcowego i ścieżki

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

W zasadach ServiceCallout element <LocalTargetConnection> powinien zawierać elementy <APIProxy><ProxyEndpoint> lub element <Path>, ale nie oba jednocześnie. Więcej informacji znajdziesz w opisie elementu <LocalTargetConnection>.

Apigee Edge dokumentuje ten wymóg, ale nie egzekwuje go. Apigee X przestaje przetwarzać, jeśli napotka <LocalTargetConnection> z obiektami konfiguracyjnymi.

Nie

Rozwiązanie: zasady ServiceCallout z specyfikatorami połączenia docelowego punktu końcowego i ścieżki

Sprawdź konfiguracje zasad ServiceCallout i usuń wszystkie <LocalTargetConnection> konfiguracje, które nie są zgodne z zasadami.

Ograniczenia dotyczące nazwy serwera docelowego

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Nazwy serwerów docelowych Apigee X mogą zawierać tylko litery, cyfry, łączniki i kropki. Nazwy serwerów docelowych Edge nie podlegają tym ograniczeniom.

Nie

Rozwiązanie: ograniczenia dotyczące nazwy serwera docelowego

Sprawdź nazwy serwerów docelowych i w razie potrzeby zaktualizuj je, usuwając niedozwolone znaki.

Certyfikat próbny na hoście wirtualnym

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Co najmniej 1 host wirtualny używa certyfikatu „bezpłatna wersja próbna” udostępnionego przez Apigee. Powoduje to, że host wirtualny odpowiada na żądania w domenach takich jak ORG-ENV.apigee.net.

Różnica między Apigee Edge a Apigee X:

Apigee Edge Apigee X
Automatycznie konfiguruje wirtualny host „default” tak, aby obsługiwał nazwę domeny w formacie ORG-ENV.apigee.net. Istnieje certyfikat z symbolem wieloznacznym, zwany „bezpłatnym certyfikatem próbnym”, który umożliwia korzystanie z TLS w tych domenach. W Apigee X nie są dostępne starsze domeny Apigee w formacie ORG-ENV.apigee.net. Musisz skonfigurować własną nazwę domeny i odpowiednio udostępnić certyfikaty.
Tak

Rozwiązanie: certyfikat próbny na hoście wirtualnym

Musisz skonfigurować własną domenę i odpowiednio udostępnić certyfikaty.

Każda aplikacja kliencka, która zależy od starszej nazwy domeny formularza ORG-ENV.apigee.net, musi zostać zmodyfikowana, aby wywoływać nową domenę.

Nierozstrzygnięte DNS

Podsumowanie Czy wymaga zmian po stronie klienta? Rozdzielczość

Docelowe punkty końcowe mają nierozwiązane nazwy domen.

Różnica między Apigee Edge a Apigee X:

Apigee Edge Apigee X
Jeśli rozpoznawanie nazw DNS się nie powiedzie, Apigee dołącza do nazwy domeny ciąg .apigee.com, a rozpoznawanie nazw DNS kończy się powodzeniem z kodem odpowiedzi 4xx. Jeśli rozpoznawanie nazw DNS się nie powiedzie, Apigee nie wykona żądania i zwróci kod odpowiedzi 5xx.
Nie

Rozwiązanie: nierozpoznane DNS

Zaktualizuj docelowy punkt końcowy, podając prawidłową nazwę domeny.