Topik ini menjelaskan cara mengelola daftar kontrol akses (ACL) objek menggunakan Object Storage Service (OSS) SDK untuk Harmony.
Catatan penggunaan
Untuk informasi lebih lanjut tentang wilayah dan titik akhir, lihat Wilayah dan Titik Akhir.
Untuk mengatur ACL suatu objek, Anda harus memiliki izin
oss:PutObjectAcl. Untuk mengambil ACL suatu objek, Anda harus memiliki izinoss:GetObjectAcl. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.
Jenis-jenis ACL
Terdapat empat jenis izin akses file (ACL):
Izin akses | Deskripsi | Nilai |
Diwarisi dari bucket | ACL objek sama dengan bucket tempat objek disimpan. | default |
Pribadi | Hanya pemilik objek dan pengguna yang berwenang yang memiliki izin baca dan tulis pada objek. Pengguna lain tidak dapat mengakses objek tersebut. | private |
Publik-baca | Hanya pemilik objek dan pengguna yang berwenang yang memiliki izin baca dan tulis pada objek. Pengguna lain hanya memiliki izin baca pada objek tersebut. Berhati-hatilah saat Anda mengatur ACL objek ke nilai ini. | public-read |
Publik-baca-tulis | Semua pengguna memiliki izin baca dan tulis pada objek. Berhati-hatilah saat Anda mengatur ACL objek ke nilai ini. | public-read-write |
ACL objek memiliki prioritas lebih tinggi dibandingkan ACL bucket tempat objek disimpan. Sebagai contoh, jika ACL objek dalam bucket pribadi diatur ke publik-baca, semua pengguna, termasuk pengguna anonim, dapat membaca objek tersebut. Jika ACL objek tidak dikonfigurasikan, ACL objek akan mengikuti ACL bucket tempat objek disimpan.
Contoh
Konfigurasikan ACL untuk sebuah objek
import Client, { EObjectAcl, RequestError } from '@aliyun/oss';
// Buat instance 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. Sebagai contoh, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi oss-cn-hangzhou.
region: 'oss-cn-hangzhou',
});
// Tentukan nama bucket.
const bucket = 'yourBucketName';
// Tentukan nama objek yang ingin Anda konfigurasikan ACL-nya.
const key = 'yourObjectName';
/**
* Konfigurasikan ACL untuk objek.
* Gunakan metode putObjectAcl untuk mengonfigurasi ACL untuk objek.
*/
const putObjectAcl = async () => {
try {
// Gunakan metode putObjectAcl untuk mengonfigurasi ACL untuk objek.
const res = await client.putObjectAcl({
bucket, // Tentukan nama bucket.
key, // Tentukan nama objek.
acl: EObjectAcl.PRIVATE, // Atur ACL objek menjadi pribadi.
});
// Tampilkan hasil permintaan.
console.log(JSON.stringify(res));
} catch (err) {
// Tangkap pengecualian selama permintaan.
if (err instanceof RequestError) {
// Jika jenis kesalahan yang diketahui ada, tampilkan informasi seperti kode kesalahan, pesan kesalahan, ID permintaan, kode status HTTP, dan EC.
console.log('kode: ', err.code); // Kode kesalahan.
console.log('pesan: ', err.message); // Pesan kesalahan.
console.log('requestId: ', err.requestId); // ID permintaan.
console.log('status: ', err.status); // Kode status HTTP.
console.log('ec: ', err.ec); // EC.
} else {
// Tampilkan jenis kesalahan lain yang tidak diketahui.
console.log('kesalahan tidak dikenal: ', err);
}
}
};
// Panggil fungsi putObjectAcl untuk mengonfigurasi ACL untuk objek.
putObjectAcl();
Dapatkan izin akses file
import Client, { RequestError } from '@aliyun/oss';
// Buat instance 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. Sebagai contoh, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi oss-cn-hangzhou.
region: 'oss-cn-hangzhou',
});
// Tentukan nama bucket.
const bucket = 'yourBucketName';
// Tentukan nama objek yang ingin Anda tanyakan ACL-nya.
const key = 'yourObjectName';
/**
* Tanyakan ACL objek.
* Gunakan metode getObjectAcl untuk menanyakan ACL objek.
*/
const getObjectAcl = async () => {
try {
// Gunakan metode getObjectAcl untuk menanyakan ACL objek.
const res = await client.getObjectAcl({
bucket, // Tentukan nama bucket.
key, // Tentukan nama objek.
});
// Tampilkan ACL objek.
console.log(JSON.stringify(res));
} catch (err) {
// Tangkap pengecualian selama permintaan.
if (err instanceof RequestError) {
// Jika jenis kesalahan yang diketahui ada, tampilkan informasi seperti kode kesalahan, pesan kesalahan, ID permintaan, kode status HTTP, dan EC.
console.log('kode: ', err.code); // Kode kesalahan.
console.log('pesan: ', err.message); // Pesan kesalahan.
console.log('requestId: ', err.requestId); // ID permintaan.
console.log('status: ', err.status); // Kode status HTTP.
console.log('ec: ', err.ec); // EC.
} else {
// Tampilkan jenis kesalahan lain yang tidak diketahui.
console.log('kesalahan tidak dikenal: ', err);
}
}
};
// Panggil fungsi getObjectAcl untuk menanyakan ACL objek.
getObjectAcl();