Send Docs Feedback

Note: Most user interface tasks can be performed in Edge Classic or the New Edge experience. For an overview, getting started topics, and release notes specific to the New Edge experience, see the docs.

Node.js でのクォータサービスへのアクセス

Introduction

このトピックでは、apigee-access を使用して Apigee Edge クォータサービスに Node.js アプリケーションからアクセスする方法を説明します。apigee-access を使用すると、クォータ値を適用およびリセットできます。

Apigee Edge において、クォータとは、アプリが API に 1 時間、1 日、1 週間、または 1 か月の間に送信できるリクエストメッセージの割り当てです。クォータとその使用例については、「Quota ポリシー」を参照してください。

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);
    });

apigee-access でクォータサービスを使用する場合、対象は Apigee Edge 内で実行されるサービスに制限されます。(Edge に加えて) 複数の環境で機能する別のクォータ実装については、Volos.js クォータ機能の使用を検討してください。詳細については、「Volos.js について」を参照してください。

メソッド


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) 第 1 パラメータは以下のフィールドを持つ JSON オブジェクトです。

  • identifier(文字列、必須): クォータバケットの一意識別子。具体的にはアプリケーション ID、IP アドレス、またはユーザー名です。
  • timeUnit(文字列、必須): クォータバケットへの蓄積がリセットされるまでの時間。有効な値は「minute」、「hour」、「day」、「week」、「month」です。
  • allow(数値、必須):クォータバケットの最大値。この値と現在値をふまえてクォータを超えたかどうかが返されます。
  • interval(数値、省略可能): timeUnit と合わせて、クォータがリセットされるまでの時間が決まります。デフォルトは 1 です。「2 時間」や「3 週間」などのクォータを可能にするには大きな値を設定してください。
  • weight(数値、省略可能): クォータの増分刻み値。デフォルトは 1 です。

(2) 第 2 パラメータは以下の 2 つの引数を持つコールバック関数です。

  • 第 1 引数は、クォータを増やせなかった場合は 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 週間」などのリセット時間を可能にするには大きな値を設定してください。
  • コールバック関数。
    • リセットに失敗すると、コールバック関数は第 1 パラメータとして Error オブジェクトを取ります。

 

高度なクォータ使用例

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

Help or comments?