Устранение ошибок развертывания политики Key Value Map Operations

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

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> политики Key Value Map Operations, равен нулю или отрицательному числу, развертывание API-прокси завершится неудачей. Индексация начинается с 1 , поэтому индекс, равный нулю или отрицательному целому числу, считается недопустимым.

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

Диагноз

  1. Определите политику операций сопоставления ключей и значений, в которой произошла ошибка, и недопустимый индекс. Эту информацию можно найти в сообщении об ошибке. Например, в следующем примере ошибка имеет имя политики 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> полностью отсутствует или отсутствует элемент <Parameter> внутри элемента <Key> , расположенного под элементом <Entry> элемента <InitialEntries> политики Key Value Map Operations.

Диагноз

  1. Определите политику операций сопоставления ключей и значений, в которой произошла ошибка. Эту информацию можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке имя политики операций сопоставления ключей и значений — 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 Value Map Operations, содержат элемент <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. Определите политику операций сопоставления ключей и значений, в которой произошла ошибка. Эту информацию можно найти в сообщении об ошибке. Например, в следующем сообщении об ошибке имя политики операций сопоставления ключей и значений — GetKVM .

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

    Вот пример политики операций сопоставления ключ-значение, в которой отсутствует элемент <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>
    ...