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

Object Storage Service:単一接続の帯域幅制限 (Node.js SDK)

最終更新日:Nov 30, 2025

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

シンプルアップロードとダウンロードの速度制限

次のコードは、シンプルアップロードとシンプルダウンロードに単一接続の帯域幅制限を設定する方法を示しています。

const OSS = require('ali-oss')
const fs = require('fs')

const client = new OSS({
  // yourregion をバケットが配置されているリージョンに置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を 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,
  authorizationV4: true,
  // yourbucketname をバケット名に置き換えます。
  bucket: 'yourbucketname'
});

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

// 帯域幅制限付きでアップロードします。
async function put() {
  // ファイルパス。
  const filePath = 'D:\\localpath\\examplefile.txt'; 
  // ファイルストリームオブジェクトを作成します。
  const fileStream = fs.createReadStream(filePath); 
  const result = await client.putStream('file-name', fileStream, {
    // リクエストヘッダーを設定します。
    headers, 
    // デフォルトのタイムアウト期間は 60000 ms です。リクエストがタイムアウトすると、タイムアウトエラーが報告されます。帯域幅制限付きでアップロードする場合は、タイムアウト期間を調整してください。
    timeout: 60000 
  });
  console.log(result);
}

put()

// 帯域幅制限付きでダウンロードします。
async function get() {
  const result = await client.get('file name', {
    headers,
    // デフォルトのタイムアウト期間は 60000 ms です。リクエストがタイムアウトすると、タイムアウトエラーが報告されます。帯域幅制限付きでダウンロードする場合は、タイムアウト期間を調整してください。
    timeout: 60000 
  })
  console.log(result)
}

get()

署名付き URL を使用した帯域幅制限付きのアップロードとダウンロード

次のコードは、署名付き URL を使用するアップロードとダウンロードに単一接続の帯域幅制限を設定する方法を示しています。

const OSS = require('ali-oss')

const client = new OSS({
  // yourregion をバケットが配置されているリージョンに置き換えます。たとえば、バケットが中国 (杭州) リージョンにある場合、Region を 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,
  authorizationV4: true,
  // yourbucketname をバケット名に置き換えます。
  bucket: 'yourbucketname',
});

// URL クエリを使用して帯域幅制限付きでアップロードします。
async function putByQuery() {
  const url = client.signatureUrl('file name', {
    // 速度制限値を設定します。最小値は 100 KB/s です。
    trafficLimit: 8 * 1024 * 100, 
    // リクエストメソッドを PUT に設定します。
    method: 'PUT' 
  })
  // ファイルパスを設定します。
  const filePath = 'D:\\localpath\\examplefile.txt'; 
  // ファイルストリームオブジェクトを作成します。
  const fileStream = fs.createReadStream(filePath); 
  const result = await client.urllib.request(url, {
    method: 'PUT',
    // ファイルストリームオブジェクトをパラメーターとして使用します。
    stream: fileStream, 
    // デフォルトのタイムアウト期間は 60000 ms です。帯域幅制限を有効にした後、タイムアウト期間を調整してください。そうしないと、リクエストは失敗します。
    timeout: 60000, 
  });

  console.log(result)
}

putByQuery()

// URL クエリを使用して帯域幅制限付きでダウンロードします。
async function getByQuery() {
  const url = client.signatureUrl('file name', {
    // 速度制限値を設定します。最小値は 100 KB/s です。
    trafficLimit: 8 * 1024 * 100, 
  })

  const result = await client.urllib.request(url, {
    // デフォルトのタイムアウト期間は 60000 ms です。帯域幅制限を有効にした後、タイムアウト期間を調整してください。そうしないと、リクエストは失敗します。
    timeout: 60000, 
  });

  console.log(result)
}

getByQuery()

関連ドキュメント

単一接続の帯域幅制限の完全なサンプルコードについては、「GitHub の例」をご参照ください。