配額政策部署錯誤疑難排解

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

InvalidQuotaInterval

錯誤訊息

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

Error Saving Revision [revision_number]
Invalid quota interval [interval] in quota policy [policy_name].

錯誤訊息示例

Error Saving Revision 1
Invalid quota interval 0.1 in quota policy Quota-1.

螢幕截圖範例

原因

如果配額政策的 <Interval> 元素中指定的配額間隔不是整數,則 API Proxy 部署作業就會失敗。

舉例來說,如果配額政策的 <Interval> 元素中指定的配額間隔為 0.1,API Proxy 部署作業就會失敗。

診斷

  1. 找出發生錯誤的配額政策和無效配額間隔。你可以在錯誤訊息中找到這項資訊。舉例來說,在下列錯誤中,政策名稱為 Quota-1,無效的配額間隔為 0.1

    Error Saving Revision 1
    Invalid quota interval 0.1 in quota policy Quota-1.
    
  2. 確認失敗配額政策中指定的配額間隔值與錯誤訊息 (上方步驟 #1) 中的值相符。舉例來說,下列政策會將配額間隔的值指定為 0.1,與錯誤訊息中的內容相符:

    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
     <DisplayName>Quota-1</DisplayName>
     <Properties />
     <Allow count="3" />
     <Interval>0.1</Interval>
     <TimeUnit>minute</TimeUnit>
    </Quota>
    
  3. 如果指定的配額間隔不是整數,這就是發生錯誤的原因。

    在上方顯示的配額政策範例中,配額間隔的值為 0.1,而非整數。因此,API Proxy 部署作業失敗並收到以下錯誤:

    Invalid quota interval 0.1 in quota policy Quota-1.
    

解析度

確認配額政策的 <Interval> 元素中指定的配額間隔值為整數。例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
</Quota>

InvalidQuotaTimeUnit

錯誤訊息

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

Error Saving Revision [revision_number]
Invalid quota interval time unit [time_unit] in quota policy
[policy_name] in Revision [revision_number] of application
[proxy_name], in organization [org_name].

錯誤訊息示例

Error Saving Revision 1
Invalid quota interval time unit year in quota policy Quota-1 in Revision 1 of application Quota_test, in organization aprabhashankar-eval.

螢幕截圖範例

原因

如果在配額政策的 <TimeUnit> 元素中指定的時間單位不受支援,則 API Proxy 部署作業就會失敗。

支援的時間單位為 minutehourdayweekmonth

舉例來說,如果在配額政策的 <TimeUnit> 元素中將時間單位指定為 year,則 API Proxy 的部署作業就會失敗。

診斷

  1. 找出發生錯誤的配額政策和無效的時間單位。你可以在錯誤訊息中找到這項資訊。舉例來說,在下列錯誤中,政策名稱為 Quota-1,無效的時間單位為 year

    Invalid quota interval time unit year in quota policy Quota-1
    in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    
  2. 確認配額政策的 <TimeUnit> 元素中指定的時間單位與錯誤訊息 (上述步驟 #1) 中指定的時間單位相符。舉例來說,下列政策會將配額間隔的值指定為 year,與錯誤訊息中的內容相符:

    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
     <DisplayName>Quota-1</DisplayName>
     <Properties />
     <Allow count="3" />
     <Interval>1</Interval>
     <TimeUnit>year</TimeUnit>
    </Quota>
    
  3. 如果系統不支援「配額政策」中指定的時間單位,表示發生錯誤。

    在上述配額政策範例中,時間單位指定為 year 所以我們不再支援因此,API Proxy 部署作業失敗並收到以下錯誤:

    Invalid quota interval time unit year in quota policy Quota-1 in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    

解析度

確認系統支援配額政策 <TimeUnit> 元素中指定的時間單位。例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>month</TimeUnit>
</Quota>

InvalidQuotaType

錯誤訊息

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

Error Saving Revision [revision_number]
No enum constant com.apigee.quota.types.QuotaType.[type].

錯誤訊息示例

Error Saving Revision 1
No enum constant com.apigee.quota.types.QuotaType.window.

螢幕截圖範例

原因

如果 <Quota>type 屬性指定的配額類型 配額政策的元素無效,即表示 API Proxy 部署失敗。

支援的配額類型為 defaultcalendarflexirollingwindow

舉例來說,如果在 <Quota> 元素中指定為 window 的政策類型, ,API Proxy 的部署作業就會失敗。

診斷

  1. 找出配額政策中使用的無效配額類型。您可以 錯誤訊息中的資訊舉例來說,下列錯誤訊息中,無效的政策類型為 window

    Error Saving Revision 1
    No enum constant com.apigee.quota.types.QuotaType.window.
    
  2. 在失敗的特定 API Proxy 中檢查所有配額政策。如果 <Quota> 元素中指定的配額類型與上方步驟 #1 中識別的不支援類型相符,就是導致錯誤的原因。

    舉例來說,下列政策指定將類型指定為 window,與錯誤訊息中的內容相符:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="window">
        <DisplayName>Quota-1</DisplayName>
        <Properties/>
        <Allow count="3"/>
        <Interval>1</Interval>
        <TimeUnit>minute</TimeUnit>
        <StartTime>2017-7-16 12:00:00</StartTime>
        <MessageWeight ref="messageWeight"/>
    </Quota>
    

    由於類型屬性已設為 window,但系統不支援這個類型,因此 API Proxy 部署作業會失敗,並出現以下錯誤:

    No enum constant com.apigee.quota.types.QuotaType.window.
    

解析度

確認系統支援配額政策 <Quota> 元素中 type 屬性指定的配額類型。例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="rollingwindow">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <MessageWeight ref="messageWeight"/>
</Quota>

InvalidStartTime

錯誤訊息

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

Error Saving Revision [revision_number]
Invalid Starttime:[start_time]; Start Time should be of the format yyyy-MM-dd HH:mm:ss.

錯誤訊息示例

Error Saving Revision 1
Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.

螢幕截圖範例

原因

如果配額政策的 <StartTime> 元素中指定的時間格式無效,API Proxy 部署作業就會失敗。

有效的格式為 yyyy-MM-dd HH:mm:ss,即 ISO 8601 日期和時間格式。

舉例來說,如果配額政策的 <StartTime> 元素中指定的時間是 7-16-2017 12:00:00,則 API Proxy 部署作業就會失敗。

診斷

  1. 找出配額政策中指定的無效開始時間。你可以在錯誤訊息中找到這項資訊。舉例來說,在下列錯誤中,無效的開始時間為 7-16-2017 12:00:00

    Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.
    
  2. 在失敗的特定 API Proxy 中檢查所有配額政策。如有任何配額政策,且 <StartTime> 元素中指定的值與上方步驟 1 指定的無效開始時間相符,就是導致錯誤的原因。

    舉例來說,下列政策指定將類型指定為 7-16-2017 12:00:00,與錯誤訊息中的內容相符:

    <?xml version="1.0" encoding="UTF-8"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="calendar">
       <DisplayName>Quota-1</DisplayName>
       <Properties />
       <Allow count="3" />
       <Interval>1</Interval>
       <TimeUnit>minute</TimeUnit>
       <StartTime>7-16-2017 12:00:00</StartTime>
    </Quota>
    

    由於 <StartTime> 的值已設為 7-16-2017 12:00:00, 不符合必要的日期/時間格式,API Proxy 部署作業就會失敗,並顯示以下錯誤:

    Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.
    

解析度

確認配額政策的 <StartTime> 元素中指定的開始時間格式符合所需的格式 yyyy-MM-dd HH:mm:ss。例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="calendar">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
</Quota>

StartTimeNotSupported

錯誤訊息

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

Error Saving Revision [revision_number]
Starttime is not supported for quotatype [quota_type]. Starttime is supported only for calendar based type.

錯誤訊息示例

Error Saving Revision 1
Starttime is not supported for quotatype flexi. Starttime is supported only for calendar based type.

螢幕截圖範例

原因

如果在配額政策中指定 <StartTime> 元素,但配額類型並非日曆類型,則 API Proxy 部署作業就會失敗。

只有 calendar 配額類型支援 <StartTime> 元素。

舉例來說,如果配額政策的 <Quota> 元素中的 type 屬性設為 flexirolling window,API Proxy 部署作業就會失敗。

診斷

  1. 找出失敗配額政策中指定的配額類型。你可以在錯誤訊息中找到這項資訊。舉例來說,在下列錯誤中,無效的開始時間為 flexi

    Starttime is not supported for quotatype flexi. Starttime is
    supported only for calendar based type.
    
  2. 在失敗的特定 API Proxy 中檢查所有配額政策。如有任何「配額」政策指定的類型屬性與上方步驟 1 指定的配額類型相符,且您指定了 <StartTime> 元素,就會造成錯誤。

    舉例來說,下列政策將配額類型指定為 flexi,這會與錯誤訊息的內容相符,並指定 <StartTime> 元素:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="flexi">
        <DisplayName>Quota-1</DisplayName>
        <Properties/>
        <Allow count="3"/>
        <Interval>1</Interval>
        <TimeUnit>minute</TimeUnit>
        <StartTime>2017-7-16 12:00:00</StartTime>
    </Quota>
    

    由於 <StartTime> 元素是在配額政策中指定,配額類型指定為 flexi,因此 API Proxy 部署作業會失敗並出現以下錯誤:

    Starttime is not supported for quotatype flexi. Starttime is supported only for calendar based type.
    

解析度

<Quota> 元素中 type 屬性指定的配額類型為 flexirolling window 時,請確保未指定 <StartTime> 元素。例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="flexi">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
</Quota>

InvalidTimeUnitForDistributedQuota

錯誤訊息

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

Error Saving Revision [revision number]
Invalid timeunit second for distributed quota.

錯誤訊息示例

Error Saving Revision 1
Invalid timeunit second for distributed quota.

螢幕截圖範例

原因

如果 <Distributed> 元素設為 true,且 <TimeUnit> 元素設為 second,則 API Proxy 部署作業就會失敗。分散式配額的時間單位 second 無效。

如果 Distributed 元素設為 true,政策應維持中央計數器,並持續在所有訊息處理器之間同步處理。因此,同步處理並難以確認要求數量在短時間內 (例如幾秒) 內未超過指定配額。因此,系統會將 second 的時間單位視為無效的分散式配額。

診斷

在失敗的特定 API Proxy 中檢查所有配額政策。如果有任何配額政策將 <TimeUnit> 元素設為 second,且 <Distributed> 元素設為 true,這就是發生錯誤的原因。

舉例來說,下列政策將 <TimeUnit> 元素設為 second<Distributed> 元素則設為 true

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
    <DisplayName>CheckQuota</DisplayName>
    <Properties/>
    <Allow count="30"/>
    <Interval>1</Interval>
    <TimeUnit>second</TimeUnit>
    <StartTime>2018-8-05 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
</Quota>

解析度

<Distributed> 元素設為 true 時,確保 <TimeUnit> 元素一律不會設為 second<TimeUnit> 元素可設為任何其他允許的值:minute, hour, day, week,month。例如:

<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
    <DisplayName>CheckQuota</DisplayName>
    <Properties/>
    <Allow count="30"/>
    <Interval>1</Interval>
    <TimeUnit>hour</TimeUnit>
    <StartTime>2018-8-05 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
</Quota>

InvalidSynchronizeIntervalForAsyncConfiguration

錯誤訊息

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

Error Saving Revision [revision number]
SyncIntervalInSeconds should be a value greater than zero.

錯誤訊息示例

Error Saving Revision 1
SyncIntervalInSeconds should be a value greater than zero.

螢幕截圖範例

原因

如果配額政策的 <AsynchronousConfiguration> 元素中針對 <SyncIntervalInSeconds> 元素指定的值小於零,則 API Proxy 的部署作業就會失敗。

診斷

在失敗的特定 API Proxy 中檢查所有配額政策。如有任何配額政策的 <SyncIntervalInSeconds> 元素在 <AsynchronousConfiguration> 元素中設為小於零的值,就是導致錯誤的原因。

舉例來說,以下政策針對 <SyncIntervalInSeconds> 元素指定了負值:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
    <AsynchronousConfiguration>
        <SyncIntervalInSeconds>-1</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

解析度

請務必在配額政策的 <AsynchronousConfiguration> 元素中,一律為 <SyncIntervalInSeconds> 元素指定正整數。例如:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
    <AsynchronousConfiguration>
        <SyncIntervalInSeconds>5</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

InvalidAsynchronizeConfigurationForSynchronousQuota

錯誤訊息

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

Error Saving Revision [revision number]
AsynchronousConfiguration is not valid for synchronous quota.

錯誤訊息示例

Error Saving Revision 2
AsynchronousConfiguration is not valid for synchronous quota.

螢幕截圖範例

原因

如果配額政策中的 <Synchronous> 元素值設為 true,而該政策也使用 <AsynchronousConfiguration> 元素定義非同步設定,則 API Proxy 部署會失敗。

診斷

在失敗的特定 API Proxy 中檢查所有配額政策。如有任何配額政策的 <Synchronous> 元素設為 true,且該元素也已定義 <AsynchronousConfiguration> 元素,就會造成錯誤。

舉例來說,以下政策有 <Synchronous> 元素設為 true,並定義了 <AsynchronousConfiguration> 元素:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>true</Synchronous>
    <AsynchronousConfiguration>
     <SyncIntervalInSeconds>1</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

解析度

如果配額政策中的 <Synchronous> 元素設為 true,確認尚未使用 <AsynchronousConfiguration> 元素定義非同步設定。

移除 <AsynchronousConfiguration> 區段即可修正上述範例,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
 <Synchronous>true</Synchronous>
</Quota>