Устранение неполадок при развертывании политики Extension Callout

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

InvalidConnectorInstance

Сообщение об ошибке

Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:

Error Saving Revision revision_number
In policy_name: Connector must not be empty.

Пример сообщения об ошибке

Error Saving Revision 1
In Extension Callout-1: Connector must not be empty.

Пример скриншота ошибки

Сообщение об ошибке "Недопустимый экземпляр коннектора"

Причина

Эта ошибка возникает, если элемент <Connector> в политике ExtensionCallout отсутствует или имеет пустое значение.

Диагноз

  1. Найдите имя политики ExtensionCallout в сообщении об ошибке. Например, в следующем сообщении об ошибке имя политики ExtensionCallout — Extension Callout-1 :

    Error Saving Revision 1
    In Extension Callout-1: Connector must not be empty
  2. Изучите XML-файл политики ExtensionCallout, в котором произошла ошибка, и убедитесь, что элемент <Connector> присутствует и не пуст. Например, в приведенной ниже политике элемент <Connector> пуст и не содержит имени расширения:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
        <DisplayName>Extension Callout-1</DisplayName>
        <Connector></Connector>
        <Action>downloadFile</Action>
        <Input><![CDATA[
             {}
         ]]></Input>
        <Output>context-variable-name</Output>
    </ConnectorCallout>

Поскольку элемент <Connector> пуст, развертывание API-прокси завершается неудачей.

Разрешение

Убедитесь, что значение элемента <Connector> политики вызова добавочного номера всегда указано и соответствует имени фактического добавочного номера, созданного в организации.

Чтобы исправить приведенный выше пример политики ExtensionCallout, можно установить для элемента <Connector> имя расширения, существующего в конкретной среде, где развертывается API-прокси.

Чтобы задать имя расширения, в пользовательском интерфейсе Edge перейдите в раздел «Администрирование» > «Расширения» . Там отобразятся имена всех расширений в вашей организации. Имя расширения следует указать в элементе <Connector> .

Просмотрите названия всех расширений в пользовательском интерфейсе Edge.

Ниже приведён пример, в котором имя расширения правильно задано в элементе <Connector> :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

Экземпляр коннектора не существует

Сообщение об ошибке

Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:

Error Deploying Revision revision_number to environment
In policy_name: Connector <extension_name> does not exist in environment environment.

Пример сообщения об ошибке

Error Deploying Revision 1 to test
In Extension Callout-1: Connector cloud_storage does not exist in environment test.

Пример скриншота ошибки

Сообщение об ошибке «Экземпляр коннектора не существует»

Причина

Эта ошибка возникает, если элементу <Connector> в политике ExtensionCallout присвоено имя, которого не существует в среде, где развертывается API-прокси.

Диагноз

  1. Укажите имя политики ExtensionCallout, недопустимое имя расширения, используемое в элементе <Connector> политики ExtensionCallout, и среду, в которой произошла ошибка. Все эти данные можно найти в сообщении об ошибке.

    Например, в следующей ошибке имя политики ExtensionCallout — Extension Callout-1, d имя расширения — cloud_storage , а имя среды — test :

        Error Deploying Revision 1 to test
        In Extension Callout-1: Connector cloud_storage does not exist in environment test.
  2. Изучите XML-файл политики ExtensionCallout, в котором произошла ошибка, и убедитесь, что имя расширения, указанное для элемента <Connector> , совпадает с именем, указанным в сообщении об ошибке.

    В этом примере имя расширения, указанное в элементе <Connector> , — cloud_storage :

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
            <DisplayName>Extension Callout-1</DisplayName>
            <Connector>cloud_storage</Connector>
            <Action>downloadFile</Action>
            <Input><![CDATA[
                 {}
             ]]></Input>
            <Output>context-variable-name</Output>
        </ConnectorCallout>
  3. Проверьте, создано ли имя расширения в среде (определено на шаге №1).

    В пользовательском интерфейсе Edge перейдите в раздел Администрирование > Расширения и проверьте, существует ли расширение и совпадает ли его имя с именем, указанным в элементе <Connector> в политике ExtensionCallout.

    Обратите внимание на скриншот ниже: расширение cloud_storage_ext существует, но оно не соответствует элементу <Connector> , указанному в приведенном выше примере политики ExtensionCallout:

    Просмотрите названия всех расширений в пользовательском интерфейсе Edge.

    Поскольку указанное в элементе <Connector> имя расширения не существует, возникает ошибка развертывания:

    In Extension Callout-1: Connector cloud_storage does not exist in environment test.

Разрешение

Убедитесь, что добавочный номер, указанный в элементе <Connector> политики ExtensionCallout, создан и его имя указано правильно.

Для получения информации о создании расширения обратитесь к руководству: Использование расширений .

Чтобы исправить приведенный выше пример, исправьте имя так, чтобы оно соответствовало фактическому расширению:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

InvalidAction

Сообщение об ошибке

Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:

Error Saving Revision revision_number
In policy_name: Action must not be empty.

Пример сообщения об ошибке

Error Saving Revision 1
In Extension Callout-1: Action must not be empty.

Пример скриншота ошибки

Сообщение об ошибке «Недопустимое действие»

Причина

Эта ошибка возникает, если элемент <Action> в политике ExtensionCallout отсутствует или имеет пустое значение.

Диагноз

  1. Определите имя политики ExtensionCallout. Эту информацию можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке имя политики ExtensionCallout — Extension Callout-1:

        Error Saving Revision 1
        In Extension Callout-1: Action must not be empty.
  2. Изучите XML-файл политики ExtensionCallout, в котором произошла ошибка, и убедитесь, что действие указано в элементе <Action> . Если элемент <Action> отсутствует или пуст, это и является причиной ошибки.

    В этом примере элемент <Action> пуст:

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
            <DisplayName>Extension Callout-1</DisplayName>
            <Connector>cloud_storage_ext</Connector>
            <Action></Action>
            <Input><![CDATA[
                 {}
             ]]></Input>
            <Output>context-variable-name</Output>
        </ConnectorCallout>

Разрешение

Убедитесь, что элемент <Action> всегда указан и не пуст в политике ExtensionCallout.

Для получения информации о том, как создать расширение и как использовать его в политике с правильным элементом <Action> , обратитесь к руководству: Использование расширений.

Для устранения указанной выше проблемы укажите правильное действие для расширения:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

AllowExtensionsInPostClientFlow

Сообщение об ошибке

Развертывание API-прокси через пользовательский интерфейс Edge или API управления Edge завершается с ошибкой, о которой сообщается ниже:

Error Deploying Revision revision_number to environment
In policy_name: Policy is not allowed in PostClientFlow.

Пример сообщения об ошибке

Error Deploying Revision 1 to test
In Extension Callout-1: Policy is not allowed in PostClientFlow.

Пример скриншота ошибки

Сообщение об ошибке «Разрешить расширения в потоке обработки данных клиента»

Причина

Запрещено использовать политику ExtensionCallout в потоке PostClient. Если политика ExtensionCallout размещена в потоке PostClient, развертывание API-прокси завершится с этой ошибкой.

Диагноз

  1. Определите имя политики ExtensionCallout. Эту информацию можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке имя политики ExtensionCallout — Extension Callout-1:

    In Extension Callout-1: Policy is not allowed in PostClientFlow.
  2. Проанализируйте все потоки PostClient во всех конечных точках конкретного API-прокси, где произошла ошибка. См. статью «Управление выполнением запросов в прокси-сервере с помощью потоков» .

    Если вы заметили, что политика ExtensionCallout (определенная на шаге №1) размещена в потоке PostClient, то это и является причиной ошибки.

    Например, следующий поток PostClient содержит политику ExtensionCallout:

        ...
        <PostClientFlow>
                <Request/>
                <Response>
                    <Step>
                        <Name>Extension-Callout-1</Name>
                    </Step>
                </Response>
            </PostClientFlow>
        ...

Разрешение

Убедитесь, что политика ExtensionCallout не размещена в потоке обработки PostClient.

Для решения указанной выше проблемы следует переместить политику ExtensionCallout в любой другой поток.

...
<PreFlow name="PreFlow">
    <Request/>
    <Response>
        <Step>
            <Name>Extension-Callout-1</Name>
        </Step>
    </Response>
</PreFlow>
...