Debugowanie rozszerzenia

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Rozszerzenie możesz debugować za pomocą komunikatów widocznych w 2 miejscach: w narzędziu Trace i w dziennikach rozszerzeń. Gdy rozszerzenie nie działa, zidentyfikowanie problemu może wymagać informacji z obu tych miejsc.

  • Narzędzie Trace w Apigee Edge służy do iteracyjnego testowania i edytowania kodu proxy interfejsu API podczas jego tworzenia. Komunikaty Trace obejmują błędy z kodu proxy interfejsu API, w tym konfiguracji proxy interfejsu API i zasad.

    Błędy związane z rozszerzeniami, które pojawiają się w narzędziu Trace, zwykle nie zawierają wielu szczegółów. Informują tylko o tym, które wywołanie rozszerzenia się nie powiodło, oraz podają kod błędu HTTP. Jeśli nie widzisz tu niczego przydatnego, następnym najlepszym miejscem do sprawdzenia jest dziennik używanego rozszerzenia.

  • Rozszerzenia generują wpisy w dzienniku w czasie działania. (Dzienniki rozszerzeń są dostępne tylko dla administratorów organizacji).

    Te dzienniki zawierają wpisy zwracane przez zasób zewnętrzny, z którym rozszerzenie jest skonfigurowane do interakcji. Jeśli na przykład w rozszerzeniu są nieprawidłowo skonfigurowane dane logowania do zasobu zewnętrznego, błąd prawdopodobnie pojawi się tutaj.

    Dzienniki zawierają też wpisy z wewnętrznego kodu rozszerzenia. Przeglądając dzienniki, pamiętaj, że niektóre wpisy nie są związane z błędem, który próbujesz naprawić. Wpisy w dzienniku związane z rozszerzeniem zwykle zaczynają się od słowa details, tak jak w tym wpisie logu z rozszerzenia Cloud Pub/Sub:

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

Typy i przyczyny błędów

Przepływ przetwarzania żądania rozszerzenia odbywa się od zasady ExtensionCallout w proxy interfejsu API, przez rozszerzenie, do zasobu zewnętrznego i z powrotem. Błąd może więc wystąpić w dowolnym z tych miejsc.

Błędy, które widzisz, mogą należeć do tych kategorii.

Błędy w konfiguracji rozszerzenia

Jest to konfiguracja, którą administrator organizacji wykonuje podczas dodawania rozszerzenia do środowiska.

Jeśli na przykład skonfigurujesz rozszerzenie Cloud Logging z nieprawidłowym identyfikatorem projektu w chmurze Google Cloud, usługa Google Cloud Logging zwróci do rozszerzenia błąd. Szczegóły tych błędów zwykle znajdują się w dzienniku rozszerzenia.

Dowody w narzędziu Trace

W edytorze proxy te błędy zwykle będą wyświetlane jako błąd na poziomie 4xx- lub 5xx. Edytor proxy nie wyświetli jednak żadnych szczegółów dotyczących przyczyny błędu, poza informacją, że rozszerzenie zwróciło błąd.

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Dowody w dziennikach rozszerzeń

Jeśli są jakieś szczegóły dotyczące tego rodzaju błędu, zobaczysz je we wpisach w dzienniku rozszerzenia. Ten komunikat o błędzie, zwrócony przez usługę Cloud Pub/Sub, jest spowodowany nieprawidłowym identyfikatorem projektu.

details: 'Project does not exist: example-test-12345'

Błędy w konfiguracji zasady ExtensionCallout

Te błędy występują, gdy zasada ExtensionCallout jest nieprawidłowo skonfigurowana, np. z powodu błędu składni konfiguracji zasady lub nieprawidłowych kluczy lub wartości konfiguracji. W zależności od konfiguracji zasady błędy te mogą przyjmować 2 formy:

  • Nieprawidłowe wartości oceniane przez zasób zewnętrzny

    Może się to zdarzyć, gdy błąd konfiguracji wydawał się prawidłowy dla rozszerzenia, ale był nieprawidłowy dla zasobu zewnętrznego. Jeśli na przykład rozszerzenie przekaże do Cloud Spanner nieprawidłowy identyfikator bazy danych, usługa Cloud Spanner zwróci błąd, który zostanie zapisany w dzienniku rozszerzenia:

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    Może się to zdarzyć również w przypadku nieprawidłowego kodu JSON konfiguracji w elemencie <Input> zasady. W przypadku niektórych rozszerzeń część kodu JSON jest przetwarzana przez rozszerzenie, a część jest przekazywana do zasobu. Na przykład kod JSON konfiguracji rozszerzenia Cloud Logging zawiera obiekt metadata, którego zawartość jest przekazywana do Cloud Logging. Nieprawidłowe nazwy kluczy, np. typ zamiast type, mogą powodować zwracanie błędów przez zasób zewnętrzny, które pojawiają się jako wpisy w dzienniku rozszerzenia:

    details: 'Resource type cannot be empty'
    
  • Nieprawidłowe wartości oceniane przez rozszerzenie

    Te błędy obejmują błędy składni w częściach kodu JSON elementu <Input> ocenianych przez zasadę, błędy w nazwie działania w elemencie <Action> itp. Te błędy zwykle pojawiają się w narzędziu Trace, ale nie w dziennikach rozszerzeń.

Dowody w narzędziu Trace

W edytorze proxy te błędy zwykle będą wyświetlane jako błąd na poziomie 4xx- lub 5xx. Edytor proxy nie wyświetli jednak żadnych szczegółów dotyczących przyczyny błędu, poza informacją, że rozszerzenie zwróciło błąd. Ten błąd pojawia się w narzędziu Trace, gdy w rozszerzeniu Cloud Firestore występuje błąd w nazwie działania.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Dowody w dziennikach rozszerzeń

Gdy konfiguracja zasady spowoduje błąd przetwarzania w zasobie zewnętrznym, błąd zwykle pojawi się w dzienniku.

Jest to błąd, w którym żądanie do zasobu zewnętrznego nie powiodło się z przyczyn niezwiązanych z rozszerzeniem.

Wyobraź sobie na przykład, że używasz rozszerzenia Cloud Spanner do dodawania wiersza do bazy danych, ale wartość klucza podstawowego wiersza jest już używana w istniejącym wierszu. Usługa Cloud Spanner zwróci do rozszerzenia błąd, który zostanie dodany do dziennika rozszerzenia.

Dowody w narzędziu Trace

W edytorze proxy te błędy zwykle będą wyświetlane jako błąd na poziomie 4xx- lub 5xx. Edytor proxy nie wyświetli jednak żadnych szczegółów dotyczących przyczyny błędu, poza informacją, że rozszerzenie zwróciło błąd.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

Dowody w dziennikach rozszerzeń

Dziennik zwykle zawiera wpisy z komunikatami z samego zasobu zewnętrznego. Poniższy komunikat logu z Cloud Spanner opisuje błąd istniejącej wartości klucza podstawowego.

details: 'Row [jonesy42] in table user already exists'