Antywzorce migracji z Apigee Edge do Apigee X

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Jeśli jesteś obecnym klientem Apigee Edge, możesz zdecydować się na migrację instalacji do Apigee X, aby skorzystać z nowych funkcji lub dostępności w innych regionach.

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

Pełniejsza lista antywzorców Apigee Edge zawiera opis praktyk, których należy unikać w każdym przypadku. Na tej stronie opisujemy konkretne nieodpowiednie sposoby korzystania, które uniemożliwiają migrację. Rozwiąż je teraz, aby uniknąć problemów podczas migracji do Apigee X.

Aplikacje bez usług API

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

Istnieją aplikacje bez produktów API.

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

Apigee Edge Apigee X
Aplikację i dane logowania można skonfigurować tak, aby nie były powiązane z żadną usługą API. Aplikacja ma dostęp do wszystkich usług interfejsu API. Każda aplikacja musi być skonfigurowana tak, aby mieć dostęp do co najmniej 1 interfejsu API. Nie ma możliwości udzielenia dostępu do wszystkich usług interfejsu API w sposób domyślny. Możesz skonfigurować aplikację tak, aby miała dostęp do wszystkich usług interfejsu API, ale musisz to zrobić wyraźnie.
Nie.

Rozwiązanie: aplikacje bez usług API

Połącz każde dane logowania z co najmniej 1 interfejsem API. Więcej informacji znajdziesz w artykule Rejestrowanie aplikacji i zarządzanie kluczami API.

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

Pamięć podręczna bez czasu ważności

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

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

Różnice 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 opisów zasobów pamięci podręcznej.
Nie

Rozwiązanie: pamięć podręczna bez czasu ważności

Ustaw czas ważności dla wszystkich pamięci podręcznych.

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

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

W przypadku nieostatecznych ścieżek zapytanie o wynik wyrażenia filtra nie jest częścią specyfikacji JSONPath. Zapoznaj się z artykułem https://goessner.net/articles/JsonPath/.

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

Podczas poruszania się po tej przykładowej strukturze

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

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

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

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

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

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

Znajdź i zastąp zapytania, których dotyczy problem.

Wyrażenia JSONPath dla indeksów, których nie ma

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

Wyrażenia JSONPath z indeksem, który jest nieobecny, 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óżnice między Apigee Edge a Apigee X:

Podczas poruszania się po tej przykładowej strukturze

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

W przypadku wyrażenia $.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 są nieobecne

Znajdź i zastąp zapytania, których dotyczy problem.

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

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

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

Różnice 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 przypadku wyrażenia $.books[-1],

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

W przypadku wyrażenia $.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? Rozwiązanie

Nazwy kluczy w sklepie Apigee X mogą zawierać tylko litery, cyfry i łączniki. Nazwy magazynów kluczy w Edge nie są objęte tymi ograniczeniami.

Nie

Rozwiązanie: ograniczenia dotyczące nazwy magazynu kluczy

Sprawdź nazwy kluczy i w razie potrzeby zaktualizuj je, aby usunąć nieobsługiwane znaki.

Wiele ścieżek podstawowych wdrożonych dla proxy interfejsu API

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

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

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

Apigee Edge Apigee X
Obsługuje wdrażanie wielu wersji proxy interfejsu API, przy czym każda z nich może mieć inny ś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 dla proxy interfejsu API

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

Niezgodne komunikaty HTTP

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

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

Nie możesz przejść na Apigee X, jeśli wykonanie interfejsu API zawiera co najmniej jeden z tych błędów:

Błąd Szczegóły
INVALID_CHARACTERS_IN_HEADER W wybranym 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 W parze nazwy nagłówka i wartości nagłówka brakuje znaku : (dwukropka).
MULTIPLE_CONTENT_LENGTH W nagłówku Content-Length podano wiele wartości.
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 się nie dzieje.
URL_HEADER_SIZE_TOO_LONG Łączny rozmiar adresu URL żądania i nagłówków przekracza maksymalny dozwolony rozmiar 15 KB.
BODY_NOT_ALLOWED Treść wiadomości jest niedozwolona w przypadku metod „GET”, „DELETE”, „TRACE”, „OPTIONS” i „HEAD”.
UNSUPPORTED_HTTP_VERSION Do żądania używana jest wersja HTTP inna niż 1.1, która nie jest obsługiwana.
ZERO_CONTENT_LENGTH_FOR_POST_OR_PUT Wartość pola nagłówka Content-Length została ustawiona na zero („0”) w przypadku metody „POST” lub „PUT”.
UNSUPPORTED_RESPONSE_PREFIX W nagłówku odpowiedzi był nieobsługiwany prefiks nagłówka „X-Apigee”.
Tak, prawdopodobnie.

Rozwiązanie: niespełniające wymogów 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 ważności tokena OAuth 2.0

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

Limity ważności tokena OAuth 2.0 wykraczają poza dozwolony zakres.

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

Apigee Edge Apigee X
Obecnie nie ma żadnych ograniczeń dotyczących czasu ważności tokena OAuth 2.0, ale planujemy wdrożenie takich ograniczeń. Zapoznaj się z wytycznymi w sekcji OAuth na stronie Limity. W przypadku OAuth 2.0 musisz ustawić czas ważności tokena dostępu i tokena odświeżania. Obsługiwane zakresy:
  • Czas ważności tokena dostępu OAuth 2.0: 180 sekund <= 30 dni
  • Czas ważności tokena odświeżania OAuth 2.0: 1 dzień <= 2 lata
Nie

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

Użyj zasad OAuth 2 i określ czas wygaśnięcia w elementach <ExpiresIn><RefreshTokenExpiresIn>.

Przekroczono limity dotyczące produktów

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

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

Nie

Rozwiązanie: przekroczono limity produktów

Przed migracją do Apigee X usuń wszelkie przypadki wykorzystania, które przekraczają limity usługi.

Zasady ServiceCallout z określaczami połączenia z punktem końcowym i ścieżką docelową

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

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

Apigee Edge dokumentuje ten wymóg, ale nie wymusza go. Apigee X przerywa przetwarzanie, jeśli napotka błąd <LocalTargetConnection> w obu konfiguracjach.

Nie

Rozwiązanie: zasady ServiceCallout z parametrami połączenia zarówno punktu końcowego, jak i ścieżki docelowej

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

Ograniczenia dotyczące nazwy serwera docelowego

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

Nazwy serwerów docelowych Apigee X mogą zawierać tylko litery, cyfry, łączniki i kropki. Nazwy serwerów docelowych w Edge nie narzucają tych ograniczeń.

Nie

Rozwiązanie: ograniczenia nazwy serwera docelowego

Sprawdź nazwy docelowych serwerów i w razie potrzeby zaktualizuj je, aby usunąć z nich nieobsługiwane znaki.

Certyfikat próbny w hostie wirtualnym

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

Co najmniej 1 host wirtualny korzysta z certyfikatu „bezpłatny okres próbny” dostarczonego przez Apigee. W efekcie host wirtualny odpowiada na żądania w domenach takich jak ORG-ENV.apigee.net.

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

Apigee Edge Apigee X
Automatycznie konfiguruje hosta wirtualnego hosta „default” pod kątem obsługi nazwy domeny w formacie ORG-ENV.apigee.net. Istnieje certyfikat wieloznaczny, zwany „certyfikatem w wersji próbnej”, który umożliwia stosowanie TLS w tych domenach. Stare domeny Apigee o postaci ORG-ENV.apigee.net są niedostępne w Apigee X. Musisz skonfigurować własną nazwę domeny i odpowiednio skonfigurować certyfikaty.
Tak

Rozwiązanie: certyfikat próbny w hostie wirtualnym

Musisz skonfigurować własną domenę i odpowiednio wdrożyć certyfikaty.

Wszelkie aplikacje klienckie, które korzystają z używanej w formularzu ORG-ENV.apigee.net starszej nazwy domeny, muszą zostać zmodyfikowane, aby wywoływać nową domenę.

Nierozwiązany DNS

Podsumowanie Czy wymaga zmian po stronie klienta? Rozwiązanie

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

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

Apigee Edge Apigee X
Jeśli rozpoznawanie nazw DNS się nie powiedzie, Apigee doda .apigee.com do nazwy domeny, a DNS rozpozna nazwę 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: nierozpoznana nazwa DNS

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