Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Отлаживать расширение можно с помощью сообщений, которые видны в двух местах: в инструменте трассировки и в журналах расширения. Если расширение не работает, иногда для выявления проблемы требуется информация из обоих разделов.
Инструмент трассировки Apigee Edge позволяет тестировать и редактировать код прокси-сервера 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 вернет ошибку в расширение. Подробная информация об этих ошибках обычно приводится в журнале расширения.
Доказательства в инструменте Trace
В редакторе прокси-сервера эти ошибки обычно отображаются как ошибки уровня 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'Неправильные значения, определенные расширением
К таким ошибкам относятся синтаксические ошибки в частях элемента
<Input>JSON, которые оцениваются правилами, опечатки в названии действия в элементе<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'