Устранение неполадок при развертывании правил для операций с картой пар "ключ-значение"

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

InvalidIndex

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

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

Error Saving Revision revision_number
Invalid index index in KeyValueMapStepDefinition policy_name.

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

Error Saving Revision 2
Invalid index 0 in KeyValueMapStepDefinition GetKVM.

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

Причина

Если атрибут index, указанный в элементе <Get> правила "Операции с картой пар "ключ-значение", равен нулю или отрицательному числу, развертывание прокси-сервера API завершается неудачно. Индекс начинается с 1, поэтому нулевой или отрицательный индекс считается недействительным.

Например, если в элементе <Get> правила Key Value Map Operations указано значение 0 для переменной index, развертывание прокси-сервера API завершится неудачно.

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

  1. Определите правило Key Value Map Operations, в котором произошла ошибка, и недопустимый индекс. Эту информацию можно найти в сообщении об ошибке. Например, в приведенной ниже ошибке название правила – GetKVM, а недопустимый индекс – 0:

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.

  2. Убедитесь, что значение индекса, указанное в элементе <Get> правила "Операции с картой значений ключей", совпадает со значением, указанным в сообщении об ошибке (шаг 1 выше). Например, в следующем правиле индекс имеет значение 0, которое совпадает с индексом в сообщении об ошибке:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
        <DisplayName>GetKVM</DisplayName>
        <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
        <Scope>environment</Scope>
        <Get assignTo="foo_variable" index="0">
            <Key>
                <Parameter>FooKey_1</Parameter>
            </Key>
        </Get>
    </KeyValueMapOperations>
    
  3. Если указанный индекс равен нулю или отрицательному целому числу, это и будет причиной ошибки.

    В примере правил "Операции с картой "ключ-значение", приведенном выше, значение индекса – 0, что недопустимо. Поэтому развертывание прокси API завершается неудачно с ошибкой:

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.
    

Разрешение

Убедитесь, что атрибут индекса, указанный в элементе <Get> правила "Операции с картой ключевых значений", действителен (не равен нулю и является целым числом).

Чтобы исправить пример политики операций с картой "Ключ-значение", показанный выше, можно изменить индекс на 1.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
    <DisplayName>GetKVM</DisplayName>
    <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
    <Scope>environment</Scope>
    <Get assignTo="foo_variable" index="1">
        <Key>
            <Parameter>FooKey_1</Parameter>
        </Key>
    </Get>
</KeyValueMapOperations>

KeyIsMissing

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

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

Error Saving Revision revision_number
Error occurred while validation of bean policy_name.xml
Reason: - Non null value expected for element Parameter in Entry.

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

Error Saving Revision 3
Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry

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

Причина

Эта ошибка возникает, если элемент <Key> отсутствует или в элементе <Key> под элементом <Entry> элемента <InitialEntries> правила "Операции с картой пар "ключ-значение" отсутствует элемент <Parameter>.

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

  1. Определите правила операций с картой "ключ-значение", в которых произошла ошибка. Эту информацию можно найти в сообщении об ошибке. Например, в приведенной ниже ошибке название правила Key Value Map Operations – GetKVM.

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry
    
  2. В правилах "Неудачные операции с картой значений ключей" проверьте, есть ли элемент <Entry>, у которого отсутствует элемент <Key> или <Parameter> под элементом <InitialEntries>.

    Ниже приведен пример правила операций с картой пар "ключ-значение", в котором отсутствует элемент <Parameter> внутри элемента <Key>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="FooKVM">
        <DisplayName>GetKVM</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
        <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
        <InitialEntries>
            <Entry>
                <Key/>
                <Value>v1</Value>
            </Entry>
            <Entry>
                <Key>
                    <Parameter>k2</Parameter>
                </Key>
                <Value>v2</Value>
            </Entry>
        </InitialEntries>
    

    В этом случае проблема связана с первым элементом.

Разрешение

Убедитесь, что все элементы <Entry>, вложенные в элемент <InitialEntries> в правилах в отношении операций с картой "ключ-значение", содержат элемент <Key>, за которым следует элемент <Parameter>.

Чтобы исправить пример правила "Операции с картой значений ключей", показанный выше, добавьте элемент <Parameter>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="FooKVM">
    <DisplayName>GetKVM</DisplayName>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>k1</Parameter>
            </Key>
            <Value>v1</Value>
        </Entry>
        <Entry>
            <Key>
                <Parameter>k2</Parameter>
            </Key>
            <Value>v2</Value>
        </Entry>
    </InitialEntries>
    ...

ValueIsMissing

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

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

Error Saving Revision revision_number
Error occurred while validation of bean policy_name.xml. Reason: - Non null value expected for element Value in Entry.

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

Error Saving Revision 3
Error occurred while validation of bean GetKVM.xml.Reason: - Non null value expected for element Value in Entry

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

Причина

Эта ошибка возникает, если элемент <Value> отсутствует в элементе <Entry> элемента <InitialEntries> правила "Операции с картой пар "ключ-значение".

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

  1. Определите правила операций с картой значений ключей, в которых произошла ошибка. Эту информацию можно найти в сообщении об ошибке. Например, в приведенной ниже ошибке название правила Key Value Map Operations – GetKVM.

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Value in Entry
    
  2. В правиле "Неудачные операции с картой значений ключей" проверьте, есть ли элемент <Entry>, под которым в элементе <InitialEntries> отсутствует элемент <Value>.

    Вот пример правила "Операции с картой пар "ключ-значение", в котором отсутствует элемент <Value>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="testNotEncrypte">
        <DisplayName>GetKVM3</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
        <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
        <InitialEntries>
            <Entry>
                <Key>
                    <Parameter>k1</Parameter>
                </Key>
            </Entry>
            <Entry>
                <Key>
                    <Parameter>k2</Parameter>
                </Key>
                <Value>v2</Value>
            </Entry>
        </InitialEntries>
        ...
    
    

Разрешение

Убедитесь, что все элементы <Entry>, вложенные в элемент <InitialEntries> в правиле "Операции с картой пар "ключ-значение", содержат элемент <Value>.

Чтобы исправить пример правила "Операции с картой значений ключей", показанный выше, добавьте элемент <Value>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="testNotEncrypte">
    <DisplayName>GetKVM3</DisplayName>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>k1</Parameter>
            </Key>
            <Value>v1</Value>
        </Entry>
        <Entry>
            <Key>
                <Parameter>k2</Parameter>
            </Key>
            <Value>v2</Value>
        </Entry>
    </InitialEntries>
    ...