すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:単一接続の帯域幅制限

最終更新日:Dec 18, 2023

このトピックでは、オブジェクトのアップロードまたはダウンロード要求にパラメーターを追加して、アップロードまたはダウンロード帯域幅の制限を設定する方法について説明します。 これにより、他のアプリケーションに十分な帯域幅が確保されます。

単純なアップロードとダウンロードのための帯域幅調整の設定

次のコードでは、オブジェクトの単純なアップロードとダウンロードの帯域幅調整を設定する方法の例を示します。

const OSS = require('ali-OSS ')

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  region: 'yourregion' 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 
  bucket: 'yourbucketname'
});

// リクエストヘッダーを使用して制限速度を設定します。 
const headers = {  
 // 最小帯域幅を100 KB/sに設定します。 
 'x-oss-traffic-limit': 8*1024*100
}

// アップロードするオブジェクトの帯域幅調整を設定します。 
async関数put() {
  // オブジェクトのパスを指定します。 
  const filePath = 'D :\\ localpath\\examplefile.txt '; 
  // オブジェクトのファイルストリームを作成します。 
  const fileStream = fs.createReadStream(filePath); 
  const result = await client.putStream('file-name', fileStream, {
    // リクエストヘッダーを適切に設定します。 
    ヘッダー、 
    // デフォルトのタイムアウト期間を60000に設定します。 単位:ミリ秒。 オブジェクトのアップロード期間がタイムアウト期間を超えると、例外がスローされます。 オブジェクトのアップロードの帯域幅調整を設定するときは、タイムアウト期間を変更します。 
    timeout: 60000 
  });
  console.log (結果);
}

put()

// ダウンロードするオブジェクトの帯域幅調整を設定します。 
async関数get() {
  const result = await client.get('file name ', {
    ヘッダー、
    // デフォルトのタイムアウト期間を60000に設定します。 単位:ミリ秒。 オブジェクトのダウンロード期間がタイムアウト期間を超えると、例外がスローされます。 オブジェクトダウンロードの帯域幅調整を設定するときは、タイムアウト期間を変更します。 
    timeout: 60000 
  })
  console.log (結果)
}

get() 

署名付きURLを使用してオブジェクトをアップロードまたはダウンロードする場合の帯域幅調整の設定

次のコードでは、署名付きURLを使用してオブジェクトをアップロードまたはダウンロードする場合に、単一接続帯域幅スロットリングを構成する方法の例を示します。

const OSS = require('ali-OSS ')

const client = new OSS({
  // バケットが配置されているリージョンを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンをoss-cn-Hangzhouに設定します。 
  region: 'yourregion' 、
  // 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、環境変数OSS_ACCESS_KEY_IDとOSS_ACCESS_KEY_SECRETが設定されていることを確認してください。 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID、
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET、
  // バケットの名前を指定します。 
  bucket: 'yourbucketname'
});

// URLクエリを使用して、アップロードするオブジェクトの帯域幅調整を設定します。 
async関数putByQuery() {
  const url = client.signatureUrl('file name', {
    // 最小帯域幅を100 KB/sに設定します。 
    trafficLimit: 8*1024*100、 
    // PUTリクエストを設定します。 
    メソッド: 'PUT' 
  })
  // オブジェクトのパスを指定します。 
  const filePath = 'D :\\ localpath\\examplefile.txt '; 
  // オブジェクトのファイルストリームを作成します。 
  const fileStream = fs.createReadStream(filePath); 
  const result = await client.urllib.request(url, {
    メソッド: 'PUT' 、
    // ファイルストリームをパラメータとして指定します。 
    stream: fileStream、 
    // デフォルトのタイムアウト期間を60000に設定します。 単位:ミリ秒。 帯域幅調整を設定した後、タイムアウト期間を変更することを推奨します。 それ以外の場合、要求は失敗します。 
    timeout: 60000, 
  });

  console.log (結果)
}

putByQuery()

// URLクエリを使用して、ダウンロードするオブジェクトの帯域幅調整を設定します。 
async関数getByQuery() {
  const url = client.signatureUrl('file name', {
    // 最小帯域幅を100 KB/sに設定します。 
    trafficLimit: 8*1024*100、 
  })

  const result = await client.urllib.request(url, {
    // デフォルトのタイムアウト期間を60000に設定します。 単位:ミリ秒。 帯域幅調整を設定した後、タイムアウト期間を変更することを推奨します。 それ以外の場合、要求は失敗します。 
    timeout: 60000, 
  });

  console.log (結果)
}

getByQuery() 

参考資料

シングル接続帯域幅調整の完全なサンプルコードについては、『GitHub』をご参照ください。