Topik ini menjelaskan cara menggunakan metode CopyObject dari OSS SDK untuk Harmony guna menyalin objek berukuran kurang dari 5 GiB dari bucket sumber ke bucket tujuan dalam wilayah yang sama. Bucket tujuan dapat berupa bucket sumber itu sendiri atau bucket yang berbeda.
Catatan
Untuk informasi lebih lanjut mengenai wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir OSS.
Untuk menyalin objek, Anda harus memiliki izin baca pada objek sumber serta izin baca dan tulis pada bucket tujuan.
Bucket sumber dan bucket tujuan harus berada di wilayah yang sama. Misalnya, objek dalam bucket yang berlokasi di wilayah China (Hangzhou) tidak dapat disalin ke bucket yang berlokasi di wilayah China (Qingdao).
Pastikan tidak ada kebijakan retensi yang dikonfigurasi untuk bucket sumber maupun bucket tujuan. Jika ada, pesan error The object you specified is immutable. akan dikembalikan.
Izin
Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui Kebijakan RAM atau Kebijakan bucket.
API | Action | Definisi |
CopyObject |
| Menyalin objek dalam satu bucket atau antar bucket dalam wilayah yang sama. |
| ||
| Jika Anda menentukan versi objek sumber melalui versionId, izin ini juga diperlukan. | |
| Jika Anda menyalin tag objek melalui x-oss-tagging, izin-izin ini diperlukan. | |
| ||
| Jika Anda menentukan tag dari versi tertentu objek sumber melalui versionId, izin ini juga diperlukan. | |
| Saat menyalin objek, jika metadata objek tujuan berisi X-Oss-Server-Side-Encryption: KMS, kedua izin ini diperlukan. | |
|
Kode contoh
Berikut adalah contoh kode untuk menyalin objek dalam bucket yang sama.
import Client, { RequestError } from '@aliyun/oss';
// Buat instans OSSClient.
const client = new Client({
// Tentukan ID AccessKey yang diperoleh dari Security Token Service (STS).
accessKeyId: 'yourAccessKeyId',
// Tentukan Rahasia AccessKey yang diperoleh dari STS.
accessKeySecret: 'yourAccessKeySecret',
// Tentukan token keamanan yang diperoleh dari STS.
securityToken: 'yourSecurityToken',
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi oss-cn-hangzhou.
region: 'oss-cn-hangzhou',
});
/**
* Salin objek ke bucket yang sama.
* Gunakan metode copyObject untuk menyalin objek sumber ke objek tujuan.
*/
const copyObject = async () => {
try {
// Gunakan metode copyObject untuk menyalin objek ke bucket yang sama.
const res = await client.copyObject({
bucket: 'targetBucket', // Nama bucket tujuan.
key: 'targetKey', // Nama objek tujuan.
copySourceKey: 'sourceKey', // Nama objek sumber.
});
// Output hasilnya.
console.log(JSON.stringify(res));
} catch (err) {
// Tangkap pengecualian.
if (err instanceof RequestError) {
console.log('code: ', err.code); // Kode error.
console.log('message: ', err.message); // Pesan error.
console.log('requestId: ', err.requestId); // ID permintaan.
console.log('status: ', err.status); // Kode status HTTP.
console.log('ec: ', err.ec); // EC
} else {
console.log('unknown error: ', err);
}
}
};
// Panggil fungsi copyObject untuk menyalin objek ke bucket yang sama.
copyObject();