排解鍵/值對應作業政策部署錯誤

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

InvalidIndex

錯誤訊息

透過 Edge UI 或 Edge Management API 部署 API Proxy 會失敗,並顯示以下錯誤訊息:

Error Saving Revision revision_number
Invalid index index in KeyValueMapStepDefinition policy_name.

錯誤訊息範例

Error Saving Revision 2
Invalid index 0 in KeyValueMapStepDefinition GetKVM.

錯誤螢幕截圖

原因

在鍵/值對應作業政策的 <Get> 元素中,如果指定的 index 屬性為零或負數,API Proxy 部署作業就會失敗。索引從 1 開始,因此系統會將零或負整數的索引視為無效。

舉例來說,在鍵/值對應作業政策的 <Get> 元素中,如果指定的 index0,API Proxy 的部署作業就會失敗。

診斷

  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 Proxy 部署作業失敗並收到以下錯誤:

    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

錯誤訊息

透過 Edge UI 或 Edge Management API 部署 API Proxy 會失敗,並顯示以下錯誤訊息:

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> <InitialEntries><Entry> 下的 <Key> 元素缺少元素 索引鍵值對應作業政策的元素。

診斷

  1. 找出發生錯誤的鍵/值對應作業政策。你可以在錯誤訊息中找到這項資訊。例如,在下列錯誤中,鍵/值對應作業政策的名稱是 GetKVM

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry
    
  2. 在失敗的鍵值對應作業政策中,檢查是否有任何 <Entry> 元素的 <InitialEntries> 下方缺少 <Key><Parameter> 元素。

    以下是缺少 <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>
    

    在這種情況下,第一個元素造成問題。

解析度

確認金鑰值對應作業政策中 <InitialEntries> 元素下方的所有 <Entry> 元素,都含有 <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

錯誤訊息

透過 Edge UI 或 Edge Management API 部署 API Proxy 會失敗,並顯示以下錯誤訊息:

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

錯誤螢幕截圖

原因

如果鍵/值對應作業政策的 <InitialEntries> 元素 <Entry> 元素下方缺少 <Value> 元素,就會發生這個錯誤。

診斷

  1. 找出發生錯誤的鍵/值對應作業政策。你可以在錯誤訊息中找到這項資訊。例如,在下列錯誤中,鍵/值對應作業政策的名稱是 GetKVM

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Value in Entry
    
  2. 在失敗的鍵值對應作業政策中,檢查 <InitialEntries> 下方是否有任何 <Entry> 元素缺少 <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>
        ...
    
    

解析度

確認金鑰值對應作業政策中 <InitialEntries> 元素下方的所有 <Entry> 元素都有 <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>
    ...