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

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

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

  • Инструмент 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'