Устранение неполадок при развертывании правила уточнения для расширений

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

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> в правиле "Уточнения" отсутствует или для него задано пустое значение.

диагностика;

  1. Найдите в сообщении об ошибке название правила 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>

ConnectorInstanceDoesNotExists

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

Развертывание прокси-сервера 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.

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

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

Причина

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

диагностика;

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

    Например, в приведенной ниже ошибке название правила ExtensionCallout – Extension Callout-1,invalid , название расширения – 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 перейдите в раздел Admin > Extensions и проверьте, существует ли расширение и совпадает ли его название с указанным в элементе <Connector> в правиле ExtensionCallout.

    На скриншоте ниже показано, что расширение cloud_storage_ext существует, но не соответствует элементу <Connector>, указанному в примере правил для уточнений к звонку выше:

    Просматривать названия всех расширений в интерфейсе 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.

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

Сообщение об ошибке &quot;Недействительное действие&quot;

Причина

Эта ошибка возникает, если элемент <Action> в правиле "Уточнения" отсутствует или для него задано пустое значение.

диагностика;

  1. Определите название правила 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.

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

Сообщение об ошибке &quot;Разрешить расширения в потоке после клиента&quot;

Причина

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

диагностика;

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

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

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

    Например, в следующем потоке PostClient Flow есть правило ExtensionCallout Policy:

        ...
        <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>
...