Отладка расширения

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Вы можете отладить расширение, используя сообщения, видимые в двух местах: инструменте трассировки и журналах расширения. Когда расширение не работает, для выявления проблемы иногда может потребоваться информация из обоих мест.

  • Инструмент Apigee Edge Trace позволяет итеративно тестировать и редактировать код прокси API по мере его разработки. Сообщения трассировки включают ошибки из кода вашего прокси-сервера API, включая прокси-сервер API и конфигурацию политики.

    Ошибки, связанные с расширением, которые появляются в инструменте трассировки, обычно не содержат подробностей, за исключением указания того, какая выноска расширения не удалась, а также кода ошибки HTTP. Если вы не видите здесь ничего полезного, следующее лучшее место для поиска — это журнал расширения, которое вы используете.

  • Расширения генерируют записи журнала во время выполнения. (Журналы расширений доступны только администраторам организации.)

    Эти журналы включают записи, возвращаемые внешним ресурсом, для взаимодействия с которым настроено расширение. Например, если в расширении неправильно настроены учетные данные внешнего ресурса, ошибка, скорее всего, появится здесь.

    Журналы также включают записи из внутреннего кода расширения. Просматривая журналы, имейте в виду, что некоторые записи не имеют отношения к исправляемой вами ошибке. Записи журнала, связанные с расширением, обычно начинаются со слова details , как в следующей записи журнала расширения 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.'
    

Типы ошибок и причины

Обработка запросов на расширение осуществляется из политики ExtensionCallout в прокси-сервере API через расширение на внешний ресурс и обратно. Таким образом, ошибка может возникнуть в любом из этих мест.

Ошибки, которые вы видите, могут относиться к следующим категориям.

Ошибки в конфигурации расширения

Это конфигурация, которую выполняет администратор организации при добавлении расширения в среду.

Например, если вы настроите расширение Cloud Logging с неправильным идентификатором проекта Google Cloud, Google Cloud Logging вернет расширению ошибку. Подробности об этих ошибках обычно содержатся в журнале расширений.

Доказательства в инструменте «Трассировка»

В редакторе прокси-сервера эти ошибки обычно отображаются как ошибки уровня 4xx или 5xx . Однако редактор прокси-сервера не отображает никаких подробностей о причине ошибки, кроме сообщения о том, что расширение вернуло ошибку.

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

Доказательства в журналах расширений

Если есть подробные сведения об ошибке такого типа, вы увидите их в записях журнала расширения. Следующее сообщение об ошибке, возвращаемое службой Cloud Pub/Sub , связано с неверным идентификатором проекта.

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

Ошибки в конфигурации политики ExtensionCallout

Эти ошибки возникают, когда политика ExtensionCallout настроена неправильно либо из-за синтаксической ошибки конфигурации политики, либо из-за неправильных ключей или значений конфигурации. Эти ошибки принимают две формы, в зависимости от того, как настроена политика:

  • Неправильные значения, оцененные внешним ресурсом

    Это может произойти, если ошибка конфигурации оказалась допустимой для расширения, но недействительной для внешнего ресурса. Например, если расширение передает в Cloud Spanner неверный идентификатор базы данных, Cloud Spanner вернет ошибку, которая зарегистрируется в журнале расширения:

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

    Это также может произойти из-за неправильной конфигурации JSON в элементе <Input> политики. Для некоторых расширений часть JSON обрабатывается расширением, а часть передается ресурсу. Например, JSON конфигурации расширения Cloud Logging включает объект metadata , содержимое которого передается в Cloud Logging . Неправильные имена ключей, например typ вместо type , могут возвращать ошибки из внешнего ресурса, которые отображаются в виде записей в журнале расширений:

    details: 'Resource type cannot be empty'
    
  • Неправильные значения, оцененные расширением

    К этим ошибкам относятся синтаксические ошибки в оцениваемых политикой частях JSON элемента <Input> , неправильное написание имени действия в элементе <Action> и т. д. Эти ошибки обычно появляются в инструменте трассировки, но не в журналах расширений.

Доказательства в инструменте «Трассировка»

В редакторе прокси-сервера эти ошибки обычно отображаются как ошибки уровня 4xx или 5xx . Однако редактор прокси-сервера не отображает никаких подробностей о причине ошибки, кроме сообщения о том, что расширение вернуло ошибку. Следующая ошибка появляется в инструменте трассировки при неправильном написании имени действия в расширении Cloud Firestore .

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

Доказательства в журналах расширений

Если конфигурация политики приводит к ошибке обработки на внешнем ресурсе, ошибка обычно появляется в журнале.

Это ошибка, при которой запрос к внешнему ресурсу не удался по причинам, не связанным с расширением.

Например, представьте, что вы используете расширение Cloud Spanner для добавления строки в базу данных, но значение первичного ключа строки уже используется в существующей строке. Cloud Spanner вернет ошибку расширению, которое добавит ошибку в журнал расширения.

Доказательства в инструменте «Трассировка»

В редакторе прокси-сервера эти ошибки обычно отображаются как ошибки уровня 4xx или 5xx . Однако редактор прокси-сервера не отображает никаких подробностей о причине ошибки, кроме сообщения о том, что расширение вернуло ошибку.

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

Доказательства в журналах расширений

В журнале обычно есть записи с сообщениями самого внешнего ресурса. В следующем сообщении журнала Cloud Spanner описывается существующая ошибка значения первичного ключа.

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