OSS Browser.js SDK のクライアントは、バケットやファイルなどの Object Storage Service (OSS) リソースを管理します。OSS リクエストを送信するには、クライアントインスタンスを初期化し、必要に応じてデフォルト設定を変更できます。
前提条件
Browser.js SDK がインストールされている必要があります。詳細については、「インストール (Browser.js SDK)」をご参照ください。
新しいクライアントの作成
V4 署名 (推奨)
より安全な V4 署名アルゴリズムを使用します。V4 署名でクライアントを初期化する場合は、authorizationV4 を宣言します。V4 署名は、OSS Browser.js SDK V6.20.0 以降でサポートされています。
次の例は、OSS ドメイン名を使用して初期化する際に V4 署名を使用する方法を示しています。カスタムドメイン名での初期化など、他のシナリオの場合は、必要に応じて例を変更してください。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<!--SDK ファイルをインポートします。-->
<script
type="text/javascript"
src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.20.0.min.js"
></script>
<script type="text/javascript">
const client = new OSS({
// yourRegion をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、yourRegion を oss-cn-hangzhou に設定します。
region: 'yourRegion',
authorizationV4: true,
// Security Token Service (STS) から取得した一時的な AccessKey ペア (AccessKey ID と AccessKey Secret)。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークン。
stsToken: 'yourSecurityToken',
// バケット名を指定します。例:examplebucket。
bucket: "examplebucket",
});
</script>
</body>
</html>V1 署名 (非推奨)
2025 年 3 月 1 日以降、OSS の V1 署名アルゴリズムは、新しい UID を持つ新規のお客様にはご利用いただけなくなります。2025 年 9 月 1 日以降、OSS は V1 署名アルゴリズムの更新とメンテナンスを終了し、V1 署名アルゴリズムは新しいバケットでは利用できなくなります。ビジネスへの影響を防ぐため、できるだけ早く V1 署名を V4 署名にアップグレードしてください。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<!--SDK ファイルをインポートします。-->
<script
type="text/javascript"
src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"
></script>
<script type="text/javascript">
const client = new OSS({
// yourRegion をバケットが配置されているリージョンに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、yourRegion を oss-cn-hangzhou に設定します。
region: 'yourRegion',
// STS から取得した一時的な AccessKey ペア (AccessKey ID と AccessKey Secret)。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// STS から取得したセキュリティトークン。
stsToken: 'yourSecurityToken',
// バケット名を指定します。例:examplebucket。
bucket: "examplebucket",
});
</script>
</body>
</html>
クライアントの設定
クライアントを初期化する際に、必要に応じて設定項目を追加できます。たとえば、timeout を使用してリクエストのタイムアウト期間を指定したり、stsToken を使用して一時的なアクセス認証情報を指定したりできます。Browser.js でサポートされている設定項目と例の詳細については、以降のセクションをご参照ください。
options パラメーターの説明
accessKeyId {String}:Alibaba Cloud 管理コンソールから取得した AccessKey ID。
accessKeySecret {String}:Alibaba Cloud 管理コンソールから取得した AccessKey Secret。
[stsToken] {String}:一時的な権限付与に使用される Security Token Service (STS) トークン。
[refreshSTSToken] {Function}:STS トークンの有効期限が切れたときに、stsToken、accessKeyId、accessKeySecret を自動的に設定する関数。この関数は、stsToken、accessKeyId、accessKeySecret を含むオブジェクトを返す必要があります。
[refreshSTSTokenInterval] {number}:STS トークンのリフレッシュ間隔 (ミリ秒単位)。この値は、STS トークンの有効期間より短くする必要があります。デフォルト値は 300,000 ミリ秒 (5 分) です。
[bucket] {String}:アクセスするデフォルトのバケット。バケットが存在しない場合は、putBucket() 操作を呼び出して作成できます。
[endpoint] {String}:OSS のリージョン固有のドメイン名。このパラメーターは region パラメーターよりも優先度が高くなります。必要に応じて、このパラメーターをパブリックエンドポイント、内部の同一リージョンエンドポイント、または CDN ドメイン名に設定できます。詳細については、エンドポイントのリストをご参照ください。
[region] {String}:バケットが配置されているリージョン。デフォルト値は oss-cn-hangzhou です。
[internal] {Boolean}:Alibaba Cloud 内部ネットワーク経由で OSS にアクセスするかどうかを指定します。デフォルト値は false です。ご利用のサーバーも Alibaba Cloud 上で実行されている場合は、このパラメーターを true に設定すると、データ転送コストを削減できます。
[secure] {Boolean}:OSS クライアントが HTTPS (secure: true) プロトコルと HTTP (secure: false) プロトコルのどちらを使用するかを指定します。
[timeout] {String|Number}:すべての操作のタイムアウト期間 (秒単位)。デフォルト値は 60 です。
[cname] {Boolean}:カスタムドメイン名を使用して OSS にアクセスするかどうかを指定します。デフォルト値は false です。このパラメーターを true に設定する場合は、endpoint フィールドにカスタムドメイン名を指定する必要があります。
[isRequestPay] {Boolean}:バケットのリクエスタ支払い機能を有効にするかどうかを指定します。デフォルト値は false です。このパラメーターを true に設定すると、'x-oss-request-payer': 'requester' ヘッダーが OSS サーバーに送信されます。
[useFetch] {Boolean}:このパラメーターはブラウザ環境でのみ有効です。デフォルト値は false です。このパラメーターを true に設定すると、オブジェクトは fetch メソッドを使用してアップロードされます。それ以外の場合は、XMLHttpRequest が使用されます。
[retryMax] {Number}:ネットワークエラーまたはタイムアウトにより失敗したリクエストの最大リトライ回数。putStream 操作ではリトライはサポートされていません。
[authorizationV4] {Boolean}:V4 署名を使用するかどうかを指定します。デフォルト値は false です。
例
基本的な使用方法
const OSS = require('ali-oss'); const store = new OSS({ region: 'yourRegion', authorizationV4: true, accessKeyId: 'your access key', accessKeySecret: 'your access secret', stsToken: 'yourSecurityToken', bucket: 'your bucket name', });高速化エンドポイントの使用
説明Global Accelerator エンドポイント:oss-accelerate.aliyuncs.com
中国本土以外のリージョンの高速化エンドポイント:oss-accelerate-overseas.aliyuncs.com
const OSS = require('ali-oss'); const store = new OSS({ region: 'yourRegion', authorizationV4: true, accessKeyId: 'your access key', accessKeySecret: 'your access secret', stsToken: 'yourSecurityToken', bucket: 'your bucket name', endpoint: 'oss-accelerate.aliyuncs.com', });カスタムアクセス方法の使用
const OSS = require('ali-oss'); const store = new OSS({ region: 'yourRegion', authorizationV4: true, stsToken: 'yourSecurityToken', accessKeyId: 'your access key', accessKeySecret: 'your access secret', cname: true, endpoint: 'your custome domain', });STS トークンを使用したアクセス
const OSS = require('ali-oss'); const store = new OSS({ region: 'yourRegion', authorizationV4: true, accessKeyId: 'your STS key', accessKeySecret: 'your STS secret', stsToken: 'your STS token', refreshSTSToken: async () => { const info = await fetch('you sts server'); return { accessKeyId: info.accessKeyId, accessKeySecret: info.accessKeySecret, stsToken: info.stsToken, }; }, refreshSTSTokenInterval: 300000, });ストリームを使用したリクエストのリトライ
for (let i = 0; i <= store.options.retryMax; i++) { try { const result = await store.putStream('<example-object>', fs.createReadStream('<example-path>')); console.log(result); break; // 成功した場合は中断 } catch (e) { console.log(e); } }V4 署名とオプションの additionalHeaders オプションの使用
const OSS = require('ali-oss'); const store = new OSS({ accessKeyId: 'your access key', accessKeySecret: 'your access secret', bucket: 'your bucket name', region: 'oss-cn-hangzhou', authorizationV4: true , stsToken: 'yourSecurityToken', }); try { const bucketInfo = await store.getBucketInfo('your bucket name'); console.log(bucketInfo); } catch (e) { console.log(e); } try { const putObjectResult = await store.put('your bucket name', 'your object name', { headers: { // このリクエストのヘッダー header1: 'value1', header2: 'value2', }, // V4 署名の計算に含めるリクエストヘッダーのキー。これらの追加ヘッダーがリクエストヘッダーに含まれていることを確認してください。 additionalHeaders: ['additional header1', 'additional header2'], }); console.log(putObjectResult); } catch (e) { console.log(e); }