このトピックでは、オブジェクトのアップロードまたはダウンロード要求にパラメーターを追加して、アップロードまたはダウンロード帯域幅の制限を設定する方法について説明します。 これにより、他のアプリケーションに十分な帯域幅が確保されます。
単純なアップロードとダウンロードのための帯域幅調整の設定
次のコードでは、オブジェクトの単純なアップロードとダウンロードの帯域幅調整を設定する方法の例を示します。
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』をご参照ください。