Quota ポリシーのデプロイエラーのトラブルシューティング

現在は、ApigeeApigee ハイブリッドのドキュメントが表示されています。
Apigee Edge のドキュメントを表示する

InvalidQuotaInterval

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

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.

スクリーンショットの例

リビジョン 1 の保存エラー。

原因

Quota ポリシーの <Interval> 要素に指定された割り当て間隔が整数でない場合、API プロキシのデプロイは失敗します。

たとえば、Quota ポリシーの <Interval> 要素に指定された割り当て間隔が 0.1 の場合、API プロキシのデプロイは失敗します。

診断

  1. エラーが発生した Quota ポリシーと無効な割り当て間隔を特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーでは、ポリシー名は Quota-1、無効な割り当て間隔は 0.1 です。

    Error Saving Revision 1
    Invalid quota interval 0.1 in quota policy Quota-1.
    
  2. 失敗した Quota ポリシーで指定された割り当て間隔の値が、エラー メッセージの値と一致することを確認します(上記の手順 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. 指定された割り当て間隔が整数でない場合、それがエラーの原因です。

    上の Quota ポリシーの場合、割り当て間隔の値が 0.1 で、整数ではありません。このため、API プロキシのデプロイが失敗し、次のエラーが返されます。

    Invalid quota interval 0.1 in quota policy Quota-1.
    

解決策

Quota ポリシーの <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

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

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.

スクリーンショットの例

リビジョン 1 の保存エラー。

原因

Quota ポリシーの <TimeUnit> 要素に指定された時間単位がサポートされていない場合、API プロキシのデプロイは失敗します。

サポートされている時間単位は minutehourdayweekmonth です。

たとえば、Quota ポリシーの <TimeUnit> 要素で時間単位が year として指定されている場合、API プロキシのデプロイは失敗します。

診断

  1. エラーが発生した Quota ポリシーと無効な時間単位を特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーでは、ポリシー名は 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. Quota ポリシーの <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. Quota ポリシーに指定された時間単位がサポートされていない場合、それがエラーの原因です。

    上記の Quota ポリシーの例では、時間単位が year として指定されていますが、この時間はサポートされていません。このため、API プロキシのデプロイが失敗し、次のエラーが返されます。

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

解決策

Quota ポリシーの <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

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

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.

スクリーンショットの例

リビジョン 1 の保存エラー。

原因

Quota ポリシーの <Quota> 要素の type 属性で指定された割り当てのタイプが無効な場合、API プロキシのデプロイは失敗します。

サポートされている割り当てのタイプは、defaultcalendarflexirollingwindow です。

たとえば、ポリシーのタイプが Quota ポリシーの <Quota> 要素で window として指定されていた場合、API プロキシのデプロイは失敗します。

診断

  1. Quota ポリシーで使用されている無効な割り当てタイプを特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーでは、無効なポリシーのタイプは window です。

    Error Saving Revision 1
    No enum constant com.apigee.quota.types.QuotaType.window.
    
  2. エラーが発生した特定の API プロキシで、すべての割り当てポリシーを調べます。<Quota> 要素で指定された割り当てタイプが上の手順 1 で示したサポートされていない Quota ポリシーがある場合、これがエラーの原因です。

    たとえば、次のポリシーではタイプに 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 プロキシのデプロイは次のエラーで失敗します。

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

解決策

Quota ポリシーの <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

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

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.

スクリーンショットの例

リビジョン 1 の保存エラー。

原因

Quota ポリシーの <StartTime> 要素で指定された時刻の形式が無効な場合、API プロキシのデプロイは失敗します。

有効な形式は yyyy-MM-dd HH:mm:ss です。これは ISO 8601 の日付と時刻の形式です。

たとえば、Quota ポリシーの <StartTime> 要素に指定された時刻が 7-16-2017 12:00:00 の場合、API プロキシのデプロイは失敗します。

診断

  1. Quota ポリシーに指定された無効な開始時間を特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーの場合、無効な開始時刻は 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 プロキシで、すべての割り当てポリシーを調べます。<StartTime> 要素の値が手順 1 で特定された無効な開始時刻と一致している Quota ポリシーがある場合、それがエラーの原因です。

    たとえば、次のポリシーではタイプに 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 プロキシのデプロイは次のエラーで失敗します。

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

解決策

Quota ポリシーの <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

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

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.

スクリーンショットの例

リビジョン 1 の保存エラー。

原因

割り当てタイプがカレンダーではない Quota ポリシーで <StartTime> 要素が指定されている場合、API プロキシのデプロイは失敗します。

<StartTime> 要素は、calendar 割り当てタイプでのみサポートされています。

たとえば、Quota ポリシーの <Quota> 要素で type 属性が flexi または rolling window に設定されていると、API プロキシのデプロイは失敗します。

診断

  1. エラーが発生した Quota ポリシーの割り当てタイプを特定します。この情報はエラー メッセージで確認できます。たとえば、次のエラーの場合、無効な開始時刻は flexi です。

    Starttime is not supported for quotatype flexi. Starttime is
    supported only for calendar based type.
    
  2. エラーが発生した特定の API プロキシで、すべての割り当てポリシーを調べます。指定されたタイプ属性が上記の手順 1 で特定した割り当てタイプと一致し、<StartTime> 要素が指定されている Quota ポリシーがある場合、これがエラーの原因です。

    たとえば、次のポリシーでは割り当てタイプをエラー メッセージの内容と一致する 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>
    

    割り当てタイプが flexi として指定されている割り当てポリシーで <StartTime> 要素が指定されているため、API プロキシのデプロイは次のエラーで失敗します。

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

解決策

<Quota> 要素の type 属性で示されている割り当てタイプが flexi または rolling 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

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

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

エラー メッセージの例

Error Saving Revision 1
Invalid timeunit second for distributed quota.

スクリーンショットの例

リビジョン 1 の保存エラー。

原因

<Distributed> 要素が true に設定され、<TimeUnit> 要素が second に設定されている場合、API プロキシのデプロイは失敗します。分散割り当ての時間単位 second は無効です。

Distributed 要素が true に設定されていると、ポリシーは中央のカウンタを維持し、すべての Message Processor と継続的に同期する必要があります。このため、同期が難しくなります。また、リクエスト数が指定の割り当てを超過していないかどうかを短い時間間隔(数秒など)で確認するのも難しくなります。このため、時間単位 second は分散割り当てには無効とみなされます。

診断

エラーが発生した特定の API プロキシで、すべての割り当てポリシーを調べます。<TimeUnit> 要素が second に設定され、<Distributed> 要素が true に設定されている Quota ポリシーがある場合、これがエラーの原因です。

たとえば、次のポリシーでは、<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

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

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.

スクリーンショットの例

リビジョン 1 の保存エラー。

原因

Quota ポリシーの <AsynchronousConfiguration> 要素内の <SyncIntervalInSeconds> 要素に指定された値が 0 未満の場合、API プロキシのデプロイは失敗します。

診断

エラーが発生した特定の API プロキシで、すべての割り当てポリシーを調べます。<AsynchronousConfiguration> 要素内で <SyncIntervalInSeconds> 要素が 0 より小さい値に設定されている Quota ポリシーがある場合、それがエラーの原因です。

たとえば、以下のポリシーでは、<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>

解決策

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

エラー メッセージ

Apigee UI または API を使用した API プロキシのデプロイに失敗すると、次のエラー メッセージが表示されます。

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

エラー メッセージの例

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

スクリーン ショットの例

リビジョン 2 の保存エラー。

原因

Quota ポリシーで <Synchronous> 要素の値が true に設定されていて、<AsynchronousConfiguration> 要素を使用して非同期構成が定義されている場合、API プロキシのデプロイは失敗します。

診断

エラーが発生した特定の API プロキシで、すべての割り当てポリシーを調べます。<Synchronous> 要素が true に設定された Quota ポリシーがあり、<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>

解決策

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>