Layanan Penyimpanan Objek (OSS) SDK memungkinkan Anda mengintegrasikan OSS ke dalam aplikasi untuk manajemen penyimpanan yang efisien. Panduan ini menggunakan OSS SDK untuk Java guna memandu Anda melalui alur kerja lengkap: membuat bucket, mengunggah, mengunduh, dan menampilkan daftar file, lalu menghapus file dan bucket tersebut.
Prasyarat
Akun Alibaba Cloud Account telah dibuat.
OSS telah diaktifkan.
Konfigurasikan variabel lingkungan
Konfigurasikan variabel lingkungan untuk pasangan Kunci Akses tersebut.
Linux
Jalankan perintah berikut pada CLI untuk menambahkan konfigurasi variabel lingkungan ke file
~/.bashrc:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrcJalankan perintah berikut untuk menerapkan perubahan:
source ~/.bashrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah diterapkan:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
Jalankan perintah berikut di terminal untuk melihat jenis shell default:
echo $SHELLKonfigurasikan variabel lingkungan berdasarkan jenis shell default.
Zsh
Jalankan perintah berikut untuk menambahkan konfigurasi variabel lingkungan ke file
~/.zshrc:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrcJalankan perintah berikut untuk menerapkan perubahan:
source ~/.zshrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah diterapkan:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
Jalankan perintah berikut untuk menambahkan konfigurasi variabel lingkungan ke file
~/.bash_profile:echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profileJalankan perintah berikut untuk menerapkan perubahan:
source ~/.bash_profileJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah diterapkan:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
Jalankan perintah berikut di CMD:
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah diterapkan:
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
Jalankan perintah berikut di PowerShell:
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah diterapkan:
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
Setelah mengonfigurasi variabel lingkungan seperti dijelaskan di atas, harap restart atau refresh lingkungan kompilasi dan runtime Anda—termasuk IDE, antarmuka baris perintah, aplikasi desktop lainnya, serta layanan latar belakang—untuk memastikan variabel lingkungan sistem terbaru berhasil dimuat.
Instal OSS SDK untuk Java
Instal Java 7 atau versi yang lebih baru.
Anda dapat memeriksa versi Java dengan menjalankan perintah berikut:
java -versionJika Java belum terinstal di lingkungan Anda atau versi Java Anda lebih lama dari V7, unduh versi yang kompatibel.
Instal OSS SDK untuk Java.
CatatanPilih versi OSS SDK untuk Java yang sesuai dengan kebutuhan Anda. Kami merekomendasikan penggunaan OSS SDK untuk Java V3.17.4 terbaru agar kode contoh dalam bagian ini dapat berjalan dengan baik.
Tambahkan dependensi ke proyek Maven Anda (disarankan)
Untuk menggunakan OSS SDK untuk Java di Java 7 atau 8, tambahkan dependensi SDK yang sesuai ke file pom.xml.
Pada contoh ini, dependensi untuk OSS SDK untuk Java V3.17.4 ditambahkan.<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.17.4</version> </dependency>Jika Anda menggunakan Java 9 atau versi yang lebih baru, tambahkan dependensi terkait jaxb berikut selain dependensi OSS SDK:
<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency> <!-- no more than 2.3.3--> <dependency> <groupId>org.glassfish.jaxb</groupId> <artifactId>jaxb-runtime</artifactId> <version>2.3.3</version> </dependency>Impor file JAR ke proyek Eclipse
Untuk menggunakan OSS SDK untuk Java V3.17.4, lakukan langkah-langkah berikut untuk mengimpor file JAR ke proyek Anda:
Unduh OSS SDK for Java.zip.
Ekstrak paket tersebut.
Salin file aliyun-sdk-oss-3.17.4.jar dan semua file di direktori lib ke proyek Anda.
Di Eclipse, pilih proyek Anda dan pilih dari menu klik kanan.
Pilih semua file JAR yang telah Anda salin dan impor file-file tersebut ke Libraries.
Impor file JAR ke proyek IntelliJ IDEA
Untuk menggunakan OSS SDK untuk Java V3.17.4, lakukan langkah-langkah berikut untuk mengimpor file JAR ke proyek Anda:
Unduh paket OSS SDK for Java.zip.
Ekstrak paket tersebut.
Salin file aliyun-sdk-oss-3.17.4.jar dan semua file JAR di direktori lib ke proyek Anda.
Di IntelliJ IDEA, pilih proyek Anda dan pilih .
Pilih semua file JAR yang telah Anda salin dan impor file-file tersebut ke External Libraries.
Contoh kode lengkap
Jalankan kode berikut untuk memverifikasi konfigurasi Anda dan melakukan operasi penyimpanan dasar. Contoh ini menggunakan wilayah Singapura agar kode dapat langsung dijalankan dengan titik akhir default.
Karena adanya perubahan kebijakan untuk meningkatkan kepatuhan dan keamanan, mulai 20 Maret 2025, pengguna OSS baru harus menggunakan nama domain kustom (CNAME) untuk melakukan operasi API data pada bucket OSS yang berlokasi di wilayah daratan Tiongkok. Titik akhir publik default dibatasi untuk operasi tersebut. Lihat pengumuman resmi untuk daftar lengkap operasi yang terdampak. Jika Anda mengakses data melalui HTTPS, Anda harus mengikat Sertifikat SSL yang valid ke domain kustom Anda. Hal ini wajib untuk akses Konsol OSS, karena konsol menerapkan HTTPS.
import java.io.*;
import java.util.Random;
import com.aliyun.oss.*;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.ObjectListing;
import com.aliyun.oss.model.OSSObjectSummary;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
public class OssJavaSdkQuickStart {
/** Menghasilkan nama bucket unik. */
public static String generateUniqueBucketName(String prefix) {
// Dapatkan timestamp saat ini.
String timestamp = String.valueOf(System.currentTimeMillis());
// Hasilkan bilangan acak antara 0 dan 9999.
Random random = new Random();
int randomNum = random.nextInt(10000); // Hasilkan bilangan acak antara 0 dan 9999.
// Gabungkan bagian-bagian tersebut untuk membentuk nama bucket unik.
return prefix + "-" + timestamp + "-" + randomNum;
}
public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
// Contoh ini menggunakan wilayah Singapura untuk mengilustrasikan proses. Tetapkan endpoint ke https://oss-ap-southeast-1.aliyuncs.com. Ganti dengan endpoint aktual.
String endpoint = "https://oss-ap-southeast-1.aliyuncs.com";
String bucketName = generateUniqueBucketName("demo");
// Tentukan wilayah tempat bucket berada. Contoh ini menggunakan Singapura. Tetapkan wilayah ke ap-southeast-1.
String region = "ap-southeast-1";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, konfigurasikan variabel lingkungan.
EnvironmentVariableCredentialsProvider credentialsProvider =
CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Buat instans OSSClient.
// Saat instans OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepaskan resource.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
// Secara eksplisit nyatakan penggunaan algoritma signature V4.
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.region(region)
.build();
try {
// 1. Buat bucket.
ossClient.createBucket(bucketName);
System.out.println("1. Bucket " + bucketName + " dibuat.");
// 2. Unggah file.
String objectName = "exampledir/exampleobject.txt";
String content = "Hello OSS";
ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
System.out.println("2. File " + objectName + " diunggah.");
// 3. Unduh file.
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
InputStream contentStream = ossObject.getObjectContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(contentStream));
String line;
System.out.println("3. Konten file yang diunduh:");
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
contentStream.close();
// 4. Tampilkan daftar file.
System.out.println("4. File dalam bucket:");
ObjectListing objectListing = ossClient.listObjects(bucketName);
for (OSSObjectSummary objectSummary : objectListing.getObjectSummaries()) {
System.out.println(" - " + objectSummary.getKey() + " (size = " + objectSummary.getSize() + ")");
}
// 5. Hapus file.
ossClient.deleteObject(bucketName, objectName);
System.out.println("5. File " + objectName + " dihapus.");
// 6. Hapus bucket.
ossClient.deleteBucket(bucketName);
System.out.println("6. Bucket " + bucketName + " dihapus.");
} catch (OSSException oe) {
System.out.println("Terjadi OSSException, yang berarti permintaan Anda sampai ke OSS, "
+ "tetapi ditolak dengan respons error karena suatu alasan.");
System.out.println("Error Message:" + oe.getErrorMessage());
System.out.println("Error Code:" + oe.getErrorCode());
System.out.println("Request ID:" + oe.getRequestId());
System.out.println("Host ID:" + oe.getHostId());
} catch (ClientException | IOException 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("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}Eksekusi yang berhasil akan menghasilkan log berkelanjutan seperti berikut:
1. Bucket demo-1731651903982-4074 dibuat.
2. File exampledir/exampleobject.txt diunggah.
3. Konten file yang diunduh:
Hello OSS
4. File dalam bucket:
- exampledir/exampleobject.txt (size = 9)
5. File exampledir/exampleobject.txt dihapus.
6. Bucket demo-1731651903982-4074 dihapus.Bahasa lainnya
SDK untuk bahasa lain juga tersedia untuk manajemen bucket dan operasi file.

