はじめに
このトピックでは、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(文字列、必須): 割り当てバケットの一意識別子。たとえば、アプリケーション ID、IP アドレス、またはユーザー名です。
- timeUnit(文字列、必須): 割り当てバケットへの蓄積がリセットされるまでの時間。有効な値は "minute"、"hour"、"day"、"week"、"month" です。
- allow(数値、必須): 割り当てバケットの最大値。この値と現在値によって、割り当てを超過したかどうかを返します。
- interval(数値、省略可): "timeUnit" と組み合わせて、割り当てがリセットされるまでの時間が決まります。デフォルトは 1 です。2 時間、3 週間などの割り当てを可能にするには、より大きな値を設定します。
- weight(数値、省略可): 割り当ての増分刻み値。デフォルトは 1 です。
(2)2 番目のパラメータは、次の 2 つの引数を使用するコールバック関数です。
- 最初の引数は、Error オブジェクト(割り当てを増やせなかった場合)または未定義(操作が正常に終了した場合)になります。
- 2 番目の数は、以下のフィールドを含むオブジェクトです。
- used(数値): 割り当てバケットの現在の値。
- allowed(数値): 割り当てバケットの最大値。上回ると割り当ての超過とみなされます。リクエスト オブジェクトでは、同じ値が "allow" として渡されます。
- isAllowed(ブール値): 割り当てに空きがあるかどうか -- 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
割り当てをゼロにリセットするには、quota.reset() を呼び出します。このメソッドは以下の 2 つのパラメータを取ります。-
以下のフィールドを持つ JSON オブジェクト。
- identifier(文字列、必須): 割り当てバケットの一意の識別子。たとえば、アプリケーション ID、IP アドレス、またはユーザー名です。
- timeUnit(文字列、必須): 割り当てバケットへの蓄積がリセットされるまでの時間。有効な値は "minute"、"hour"、"day"、"week"、"month" です。
- interval(数値、省略可): "timeUnit" と組み合わせて、割り当てがリセットされるまでの時間が決まります。デフォルトは 1 です。時間をリセットするには、2 時間、3 週間などの大きな値を設定します。
-
コールバック関数:
- リセットに失敗すると、コールバック関数は最初のパラメータとして Error オブジェクトを使用します。
高度な割り当て使用例
割り当てを作成するときに、任意の "options" オブジェクトを追加できます。このオブジェクトは、省略可能なパラメータを 1 つ使用します。- syncInterval(数値、省略可): 分散割り当て実装が状態をネットワーク全体で同期する間隔(秒単位)。デフォルトは 10 です。