Klien SDK OSS Browser.js mengelola sumber daya Object Storage Service (OSS), seperti bucket dan file. Untuk mengirim permintaan ke OSS, Anda harus menginisialisasi instans klien dan dapat menyesuaikan konfigurasi default sesuai kebutuhan.
Prasyarat
SDK Browser.js harus diinstal. Untuk informasi selengkapnya, lihat Instalasi (Browser.js SDK).
Buat klien baru
Signature V4 (Direkomendasikan)
Gunakan algoritma signature V4 yang lebih aman. Saat menginisialisasi klien dengan signature V4, deklarasikan authorizationV4. Signature V4 didukung pada OSS Browser.js SDK versi 6.20.0 dan yang lebih baru.
Contoh berikut menunjukkan cara menggunakan signature V4 saat inisialisasi dengan nama domain OSS. Untuk skenario lain, seperti inisialisasi dengan nama domain kustom, modifikasi contoh tersebut sesuai kebutuhan.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<!--Impor file 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({
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), setel yourRegion ke oss-cn-hangzhou.
region: 'yourRegion',
authorizationV4: true,
// Pasangan AccessKey temporary (ID AccessKey dan Rahasia AccessKey) yang diperoleh dari Security Token Service (STS).
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// Token keamanan yang diperoleh dari STS.
stsToken: 'yourSecurityToken',
// Tentukan nama bucket. Misalnya, examplebucket.
bucket: "examplebucket",
});
</script>
</body>
</html>Signature V1 (Tidak direkomendasikan)
Mulai 1 Maret 2025, Alibaba Cloud Object Storage Service (OSS) tidak lagi menyediakan signature V1 untuk pengguna baru (yaitu UID baru). Mulai 1 September 2025, OSS akan menghentikan pembaruan dan pemeliharaan signature V1 serta tidak lagi menyediakan signature V1 untuk bucket penyimpanan objek baru. Segera beralih ke signature V4 untuk menghindari gangguan layanan. Untuk informasi selengkapnya, lihat Pengumuman.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<!--Impor file 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({
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), setel yourRegion ke oss-cn-hangzhou.
region: 'yourRegion',
// Pasangan AccessKey temporary (ID AccessKey dan Rahasia AccessKey) yang diperoleh dari STS.
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// Token keamanan yang diperoleh dari STS.
stsToken: 'yourSecurityToken',
// Tentukan nama bucket. Misalnya, examplebucket.
bucket: "examplebucket",
});
</script>
</body>
</html>
Konfigurasikan klien
Anda dapat menambahkan item konfigurasi sesuai kebutuhan saat menginisialisasi klien. Misalnya, gunakan timeout untuk menentukan periode timeout permintaan dan stsToken untuk menentukan kredensial akses sementara. Untuk informasi selengkapnya mengenai item konfigurasi dan contoh yang didukung oleh Browser.js, lihat bagian berikut.
Deskripsi parameter options
accessKeyId {String}: ID AccessKey yang digunakan untuk mengotentikasi permintaan Anda.
accessKeySecret {String}: Rahasia AccessKey yang digunakan untuk mengotentikasi permintaan Anda.
[stsToken] {String}: Token Layanan Token Keamanan yang digunakan untuk otorisasi sementara.
[refreshSTSToken] {Function}: Fungsi yang secara otomatis memperbarui stsToken, accessKeyId, dan accessKeySecret ketika token STS kedaluwarsa. Fungsi ini harus mengembalikan objek yang berisi stsToken, accessKeyId, dan accessKeySecret.
[refreshSTSTokenInterval] {Number}: Interval penyegaran token Layanan Token Keamanan dalam milidetik. Nilai ini harus lebih kecil dari periode kedaluwarsa token STS. Nilai default adalah 300.000 milidetik (5 menit).
[bucket] {String}: Bucket default yang ingin Anda akses. Jika bucket belum ada, Anda dapat memanggil operasi putBucket() untuk membuatnya.
[endpoint] {String}: Nama domain spesifik wilayah OSS. Parameter ini memiliki prioritas lebih tinggi daripada parameter region. Anda dapat menyetel parameter ini ke Titik akhir publik, titik akhir internal dalam wilayah yang sama, atau nama domain yang dipercepat sesuai kebutuhan. Untuk informasi selengkapnya, lihat daftar titik akhir.
[region] {String}: Wilayah tempat bucket berada. Nilai default adalah oss-cn-hangzhou. Gunakan nilai wilayah tertentu, seperti oss-cn-hangzhou atau oss-cn-beijing. Anda juga dapat menyetel parameter ini ke rg-china-mainland untuk mengakses Bucket Tanpa Atribut Wilayah di Tiongkok daratan, tetapi nilai wilayah tertentu lebih disarankan untuk routing regional yang lebih tepat.
[internal] {Boolean}: Menentukan apakah akses ke OSS dilakukan melalui jaringan internal Alibaba Cloud. Nilai default adalah false. Jika server Anda juga berjalan di Alibaba Cloud, setel parameter ini ke true untuk mengurangi biaya transfer data.
[secure] {Boolean}: Menentukan apakah klien OSS menggunakan protokol HTTPS (secure: true) atau HTTP (secure: false).
[timeout] {String|Number}: Periode timeout untuk semua operasi, dalam detik. Nilai default adalah 60.
[cname] {Boolean}: Menentukan apakah akan menggunakan nama domain kustom untuk mengakses OSS. Nilai default adalah false. Jika Anda menyetel parameter ini ke true, Anda harus menentukan nama domain kustom di bidang endpoint.
[isRequestPay] {Boolean}: Menentukan apakah akan mengaktifkan fitur Requester Pays untuk bucket. Nilai default adalah false. Jika Anda menyetel parameter ini ke true, header 'x-oss-request-payer': 'requester' dikirim ke server OSS.
[useFetch] {Boolean}: Parameter ini hanya berlaku di lingkungan browser. Nilai default adalah false. Jika Anda menyetel parameter ini ke true, objek diunggah menggunakan metode fetch. Jika tidak, XMLHttpRequest yang digunakan.
[retryMax] {Number}: Jumlah maksimum percobaan ulang untuk permintaan yang gagal karena error jaringan atau timeout. Percobaan ulang tidak didukung untuk operasi putStream.
[authorizationV4] {Boolean}: Menentukan apakah akan menggunakan signature V4. Nilai default adalah false.
Contoh
Penggunaan dasar
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', });Gunakan titik akhir yang dipercepat
CatatanTitik akhir Global Accelerator: oss-accelerate.aliyuncs.com
Titik akhir yang dipercepat untuk wilayah luar Tiongkok daratan: 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', });Gunakan metode akses kustom
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', });Akses menggunakan token 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, });Coba ulang permintaan menggunakan aliran
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; // keluar jika berhasil } catch (e) { console.log(e); } }Gunakan signature V4 dan opsi tambahan 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: { // Header permintaan ini header1: 'value1', header2: 'value2', }, // Kunci header permintaan yang disertakan dalam perhitungan tanda tangan V4. Pastikan header tambahan ini termasuk dalam header permintaan. additionalHeaders: ['additional header1', 'additional header2'], }); console.log(putObjectResult); } catch (e) { console.log(e); }