Node.js での割り当てサービスへのアクセス

はじめに

このトピックでは、apigee-access を使用して Node.js アプリケーションから Apigee Edge 割り当てサービスにアクセスする方法について説明します。apigee-access を使用すると、割り当て値の適用リセットを行うことができます。

    var apigee = require('apigee-access');
    var quota = apigee.getQuota();
    quota.apply({ identifier: 'Foo', allow: 10, timeUnit: 'hour' },
        function(err, result) {
             console.log('Quota applied: %j', result);
        });
    

メソッド


apply

Quota オブジェクトの設定を変更します。このメソッドは、割り当ての増減や時間間隔の変更などの構成に使用します。

使用方法

    var apigee = require('apigee-access');
    var quota = apigee.getQuota();
    quota.apply({parameters}, callback);
    

    var apigee = require('apigee-access');
    var quota = apigee.getQuota();

            // Apply a quota of 100 requests per hour
            quota.apply({
             identifier: 'Foo',
             timeUnit: 'hour',
             allow: 100
            }, quotaResult);

                    function quotaResult(err, r) {
                     if (err) { console.error('Quota failed'); }
                    }
    

パラメータ

apply() メソッドは、オブジェクトと関数という 2 つのパラメータを使用します。

(1) 最初のパラメータは、次のフィールドを持つ JSON オブジェクトです。

  • identifier(string、必須): 割り当てバケットの一意の識別子。アプリケーション ID、IP アドレス、ユーザー名などです。
  • timeUnit(string、必須): 割り当てバケットがリセットされるまでの時間。有効な値は "minute"、"hour"、"day"、"week"、"month" です。
  • allow(number、必須): 割り当てバケットの最大値。この値と現在値によって、割り当てを超過したかどうかを返します。
  • interval(number、省略可): "timeUnit" と一緒に使用され、割り当てをリセットするまでの時間が決まります。デフォルトは 1 です。2 時間、3 週間などの割り当てを可能にするには、より大きな値を設定します。
  • weight(number、省略可): 割り当ての増分値。デフォルトは 1 です。

(2) 2 番目のパラメータは、次の 2 つの引数を使用するコールバック関数です。

  • 最初の引数は、Error オブジェクト(割り当てを増やせなかった場合)または未定義(操作が正常に終了した場合)になります。
  • 2 番目の数は、以下のフィールドを含むオブジェクトです。
    • used(number): 割り当てバケットの現在の値。
    • allowed(number): 割り当てバケットの最大値。この値を超えると、割り当て超過と見なされます。リクエスト オブジェクトでは、同じ値が "allow" として渡されます。
    • isAllowed(number): 割り当て量が残っている場合、"used" が "allowed" 以下であれば true になります。
    • expiryTime(long): 割り当てバケットがリセットされる日時のタイムスタンプ。1970 年以降の時間(ミリ秒)で表されます。
    • timestamp(long): 割り当てが更新された日時のタイムスタンプ。

    var apigee = require('apigee-access');
    var quota = apigee.getQuota();

    // Apply a quota of 100 requests per hour
    quota.apply({
      identifier: 'Foo',
      timeUnit: 'hour',
      allow: 100
    }, quotaResult);

    // Apply a quota of 500 requests per five minutes
    quota.apply({
      identifier: 'Bar',
      timeUnit: 'minute',
      interval: 5,
      allow: 500
    }, quotaResult);

    // Increment the quota by a value of 10
    quota.apply({
      identifier: 'Foo',
      timeUnit: 'hour',
      allow: 100,
      weight: 10
    }, quotaResult);

    function quotaResult(err, r) {
      if (err) { console.error('Quota failed'); }
    }
    

reset

割り当てを 0 にリセットするには、quota.reset() を呼び出します。このメソッドは、次の 2 つのパラメータを使用します。
  • 以下のフィールドを持つ JSON オブジェクト。
    • identifier(number、必須): 割り当てバケットの一意の識別子。たとえば、アプリケーション ID、IP アドレス、またはユーザー名です。
    • timeUnit(number、必須): 割り当てバケットがリセットされるまでの時間。有効な値は "minute"、"hour"、"day"、"week"、"month" です。
    • interval(number、省略可): "timeUnit" と一緒に使用され、割り当てをリセットするまでの時間が決まります。デフォルトは 1 です。時間をリセットするには、2 時間、3 週間などの大きな値を設定します。
  • コールバック関数:
    • リセットに失敗すると、コールバック関数は最初のパラメータとして Error オブジェクトを使用します。

高度な割り当て使用例

割り当てを作成するときに、任意の "options" オブジェクトを追加できます。このオブジェクトは、省略可能なパラメータを 1 つ使用します。
  • syncInterval(number、省略可): 分散割り当ての実装環境がネットワーク全体で状態を同期する秒数。デフォルトは 10 です。
このパラメータは、分散割り当てのパフォーマンスをネットワーク全体で最適化するために使用します。設定値を小さくすると、パフォーマンスが低下し、apply オペレーションのレイテンシが大幅に長くなります。デフォルトの 10 秒は、多くの用途で適切な設定です。この間隔は最小でゼロにできます。その場合、"apply" が呼び出されるたびに状態が同期されます。この場合、パフォーマンスがかなり悪化します。