Fehlerbehebung bei der Bereitstellung der KeyValueMapOperations-Richtlinie

Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.

InvalidIndex

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

Error Saving Revision revision_number
Invalid index index in KeyValueMapStepDefinition policy_name.

Beispiel für Fehlermeldung

Error Saving Revision 2
Invalid index 0 in KeyValueMapStepDefinition GetKVM.

Beispiel für einen Fehler-Screenshot

Fehler beim Speichern von Revision 2.

Ursache

Wenn das Attribut index, das im Element <Get> der KeyValueMapOperations-Richtlinie null oder eine negative Zahl ist, schlägt die Bereitstellung des API-Proxys fehl. Der Index beginnt bei 1, sodass ein Index mit null oder einer negativen Ganzzahl als ungültig angesehen wird.

Wenn zum Beispiel index im Element <Get> einer KeyValueMapOperations-Richtlinie als 0 angegeben ist, schlägt die Bereitstellung des API-Proxys fehl.

Diagnose

  1. Ermitteln Sie die Richtlinie für Schlüsselwertzuordnungsvorgänge, in der der Fehler aufgetreten ist, sowie den ungültigen Index. Diese Information finden Sie in der Fehlermeldung. Im folgenden Fehler lautet der Richtlinienname beispielsweise GetKVM und der ungültige Index ist 0:

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.

  2. Prüfen Sie, ob der Wert des Index, der im <Get>-Element der fehlgeschlagenen Richtlinie für die Schlüsselwertzuordnungen angegeben ist, mit dem in der Fehlermeldung angegebenen Wert übereinstimmt (Schritt 1 oben). Die folgende Richtlinie gibt beispielsweise den Wert des Index als 0 an, was mit der Angabe in der Fehlermeldung übereinstimmt:

    <?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. Wenn der angegebene Index null oder eine negative Ganzzahl ist, ist dies die Ursache des Fehlers.

    In der oben gezeigten KeyValueMapOperations-Beispielrichtlinie lautet der Wert des Index 0; dieser ist ungültig. Entsprechend schlägt die Bereitstellung des API-Proxys mit folgendem Fehler fehl:

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.
    

Lösung

Vergewissern Sie sich, dass das Indexattribut, das im Element <Get> der KeyValueMapOperations-Richtlinie angegeben ist, gültig ist (null oder negative Ganzzahl).

Um die oben gezeigte KeyValueMapOperations-Beispielrichtlinie zu korrigieren, können Sie den Index in 1 ändern.

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

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Beispiel für einen Fehler-Screenshot

Fehler beim Speichern von Revision 3.

Ursache

Dieser Fehler tritt auf, wenn das Element <Key> vollständig fehlt oder das Element <Parameter> im Element <Key> unterhalb des <Entry> des Elements <InitialEntries> der KeyValueMapOperations-Richtlinie fehlt.

Diagnose

  1. Ermitteln Sie die KeyValueMapOperations-Richtlinie, in der der Fehler aufgetreten ist. Diese Information finden Sie in der Fehlermeldung. Im folgenden Fehler lautet beispielsweise der Name der KeyValueMapOperations-Richtlinie GetKVM.

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry
    
  2. Prüfen Sie in der fehlgeschlagenen KeyValueMapOperations-Richtlinie, ob ein <Entry>-Element mit einem fehlenden <Key>- oder <Parameter>-Element unter <InitialEntries> vorliegt.

    Hier sehen Sie eine KeyValueMapOperations-Beispielrichtlinie, in der das Element <Parameter> im Element <Key> fehlt:

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

    In diesem Fall verursacht das erste Element das Problem.

Lösung

Achten Sie darauf, dass alle <Entry>-Elemente unter dem Element <InitialEntries> in der KeyValueMapOperations-Richtlinie ein <Key>-Element gefolgt von einem <Parameter>-Element haben.

Fügen Sie ein <Parameter>-Element hinzu, um das Problem mit der KeyValueMapOperations-Richtlinie zu beheben:

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

Fehlermeldung

Die Bereitstellung des API-Proxys über die Apigee-Benutzeroberfläche oder die API schlägt mit der folgenden Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Beispiel für einen Fehler-Screenshot

Fehler beim Speichern von Revision 3.

Ursache

Dieser Fehler tritt auf, wenn das Element <Value> unter dem Element <Entry> des Elements <InitialEntries> der KeyValueMapOperations-Richtlinie fehlt.

Diagnose

  1. Ermitteln Sie die KeyValueMapOperations-Richtlinie, in der der Fehler aufgetreten ist. Diese Information finden Sie in der Fehlermeldung. Im folgenden Fehler lautet beispielsweise der Name der KeyValueMapOperations-Richtlinie GetKVM.

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Value in Entry
    
  2. Prüfen Sie in der fehlgeschlagenen Key Value Map Operations-Richtlinie, ob ein <Entry>-Element mit einem fehlenden <Value>-Element unter <InitialEntries> vorliegt.

    Hier sehen Sie eine KeyValueMapOperations-Richtlinie, in der das Element <Value> fehlt:

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

Lösung

Achten Sie darauf, dass alle <Entry>-Elemente unter dem Element <InitialEntries> in der KeyValueMapOperations-Richtlinie ein <Value>-Element enthalten.

Fügen Sie ein <Value>-Element hinzu, um das Problem mit der KeyValueMapOperations-Richtlinie zu beheben:

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