全部产品
Search
文档中心

Object Storage Service:Mengakses OSS menggunakan pasangan AccessKey pengguna RAM

更新时间:Nov 15, 2025

Anda dapat memberikan izin tertentu kepada pengguna Resource Access Management (RAM), sehingga pengguna tersebut dapat menggunakan pasangan AccessKey untuk mengakses sumber daya Object Storage Service (OSS) secara jangka panjang. Metode ini lebih aman dibandingkan menggunakan pasangan AccessKey akun Alibaba Cloud.

Langkah 1: Membuat pengguna RAM

  1. Masuk ke Konsol RAM menggunakan akun Alibaba Cloud atau sebagai administrator RAM.

  2. Di panel navigasi sebelah kiri, pilih Identities > Users.

  3. Pada halaman Users, klik Create User.image

  4. Pada bagian User Account Information di halaman Create User, konfigurasikan parameter berikut:

    • Logon Name: Nama logon dapat terdiri dari hingga 64 karakter dan boleh berisi huruf, angka, titik (.), tanda hubung (-), serta garis bawah (_).

    • Display Name: Nama tampilan dapat terdiri dari hingga 128 karakter.

    • Tag: Klik ikon edit lalu masukkan kunci tag dan nilai tag. Penambahan tag membantu Anda mengkategorikan dan mengelola pengguna RAM.

    Catatan

    Anda dapat mengklik Add User untuk membuat beberapa pengguna RAM sekaligus.

  5. Pada bagian Access Method, pilih Use Permanent AccessKey For Access, lalu klik OK.

  6. Klik Copy untuk menyimpan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey).

Langkah 2: Memberikan izin kepada pengguna RAM untuk mengunggah file

  1. Buat kebijakan kustom untuk memberikan izin mengunggah file.

    1. Di panel navigasi sebelah kiri, pilih Permission Management > Policies.

    2. Klik Create Policy.

    3. Pada halaman Create Policy, klik tab Edit Script. Di editor dokumen kebijakan, berikan izin peran untuk mengunggah file ke direktori `exampledir` dalam bucket `examplebucket`. Konfigurasi contoh berikut hanya sebagai referensi.

      Peringatan

      Contoh berikut hanya sebagai referensi. Konfigurasikan kebijakan otorisasi yang lebih detail halus sesuai kebutuhan untuk mencegah risiko keamanan akibat izin berlebihan. Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan otorisasi detail halus, lihat Memberikan izin kepada pengguna lain menggunakan RAM atau STS.

      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "oss:PutObject",
            "Resource": "acs:oss:*:*:examplebucket/exampledir/*"
          }
        ]
      }
    4. Setelah mengonfigurasi kebijakan, klik Continue To Edit Basic Information.

    5. Pada bagian Basic Information, atur Name kebijakan menjadi RamTestPolicy, lalu klik OK.

  2. Lampirkan kebijakan kustom ke pengguna RAM.

    1. Di panel navigasi sebelah kiri, pilih Identities > Users.

    2. Pada halaman Users, temukan pengguna RAM tujuan.

    3. Pada baris pengguna RAM tersebut, klik Add Permissions.

    4. Pada halaman Add Permissions, klik tab Custom Policy dan pilih kebijakan kustom RamTestPolicy.

    5. Klik OK.

Langkah 3: Menggunakan pasangan AccessKey pengguna RAM untuk mengunggah file ke OSS

Kode contoh Java berikut menunjukkan cara mengunggah file lokal examplefile.txt sebagai objek bernama exampleobject.txt ke direktori exampledir dalam bucket examplebucket.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.File;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Dalam contoh ini, titik akhir wilayah Tiongkok (Hangzhou) digunakan. Tentukan titik akhir aktual Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket. 
        String bucketName = "examplebucket";
        // Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt. 
        String objectName = "exampledir/exampleobject.txt";
        // Tentukan path lengkap file lokal yang ingin Anda unggah. Contoh: D:\\localpath\\examplefile.txt. 
        // Secara default, jika path file lokal tidak ditentukan, file lokal diunggah dari path proyek tempat program contoh berada. 
        String filePath= "D:\\localpath\\examplefile.txt";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";
        
        // Buat instance OSSClient. 
        // Panggil metode shutdown untuk melepaskan sumber daya terkait saat OSSClient tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Buat objek PutObjectRequest. 
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));
            // Kode contoh berikut memberikan contoh cara menentukan kelas penyimpanan dan ACL objek saat Anda mengunggah objek: 
            // ObjectMetadata metadata = new ObjectMetadata();
            // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());
            // metadata.setObjectAcl(CannedAccessControlList.Private);
            // putObjectRequest.setMetadata(metadata);
            
            // Unggah file lokal. 
            PutObjectResult result = ossClient.putObject(putObjectRequest);           
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda berhasil mencapai OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Terjadi ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

Untuk contoh kit pengembangan perangkat lunak (SDK) dalam bahasa lain, lihat:

FAQ

Bagaimana cara melihat informasi AccessKey pengguna RAM? Apakah saya dapat melihat rahasia AccessKey lama?

  1. Untuk melihat informasi AccessKey pengguna RAM, lihat Melihat informasi AccessKey pengguna RAM.

  2. Rahasia AccessKey pengguna RAM hanya ditampilkan saat pasangan AccessKey dibuat. Rahasia AccessKey tidak dapat diambil kembali nanti. Jika Anda lupa rahasia AccessKey, buka Konsol RAM, pilih pengguna tersebut, lalu buat pasangan AccessKey baru untuk rotasi. Untuk informasi selengkapnya, lihat Membuat pasangan AccessKey.

Apa yang harus saya lakukan jika muncul error "AccessDenied" saat menggunakan pasangan AccessKey pengguna RAM untuk mengunggah file?

Error AccessDenied terjadi saat mengunggah file jika informasi AccessKey salah atau pengguna RAM tidak memiliki izin mengunggah file. Lakukan pemeriksaan berikut:

  1. Periksa apakah informasi AccessKey pengguna RAM benar. Untuk informasi selengkapnya, lihat Melihat informasi AccessKey pengguna RAM.

  2. Rahasia AccessKey pengguna RAM hanya ditampilkan saat pasangan AccessKey dibuat. Rahasia AccessKey tidak dapat diambil kembali nanti. Jika Anda lupa rahasia AccessKey, buka Konsol RAM, pilih pengguna tersebut, lalu buat pasangan AccessKey baru untuk rotasi. Untuk informasi selengkapnya, lihat Membuat pasangan AccessKey.

  3. Masuk ke Konsol RAM, pilih pengguna tersebut, lalu berikan izin mengunggah file untuk OSS kepada pengguna RAM.

Bagaimana cara mengetahui jenis error spesifik jika terjadi error?

OSS menyediakan daftar Kode error yang dapat Anda gunakan untuk mengidentifikasi penyebab error. Misalnya, untuk informasi tentang error autentikasi umum, lihat 02-AUTH.

Bagaimana cara menangani error NoSuchBucket?

Error ini menunjukkan bahwa bucket yang ditentukan tidak ada. Pastikan nama bucket sudah benar.

Bagaimana cara menangani error The bucket you are attempting to access must be addressed using the specified endpoint.?

Error ini terjadi karena parameter Endpoint salah. Anda harus menentukan Endpoint yang sesuai dengan wilayah tempat bucket berada. Untuk informasi selengkapnya tentang pemetaan antara wilayah dan Endpoint, lihat Wilayah dan titik akhir.

Referensi