OSS SDK for Java 2.0 memungkinkan Anda mengintegrasikan Alibaba Cloud Object Storage Service (OSS) ke dalam aplikasi Java. SDK ini dapat digunakan untuk mengunggah, mengunduh, dan mengelola file, serta ideal bagi pengembang dan perusahaan yang memerlukan penyimpanan file berbasis cloud.
Integrasi cepat
Ikuti langkah-langkah berikut untuk mengintegrasikan OSS SDK for Java 2.0.
Prasyarat
Java 8 atau versi yang lebih baru.
Anda dapat menjalankan perintah java -version untuk memeriksa versi Java Anda. Jika Java belum terinstal atau versinya lebih lama dari Java 8, Anda dapat mengunduh dan menginstal Java.
Instal SDK
Anda dapat menggunakan Maven untuk menginstal OSS SDK for Java 2.0.
Maven
Tambahkan dependensi berikut ke file pom.xml Anda. Ganti <version> dengan nomor versi terbaru dari Maven Repository.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>alibabacloud-oss-v2</artifactId>
<version><!-- Specify the latest version number--></version>
</dependency>
Kode sumber
Anda dapat memperoleh versi terbaru OSS SDK for Java 2.0 dari Github, lalu membangun dan menginstalnya menggunakan Maven.
mvn clean install -DskipTests -Dgpg.skip=true
Konfigurasikan kredensial akses
Anda dapat mengonfigurasi kredensial akses dengan menyetel variabel lingkungan menggunakan Pasangan Kunci Akses (AccessKey pair) dari Pengguna RAM.
Di Konsol RAM, buat Pengguna RAM dengan akses Permanent AccessKey Pair. Simpan Pasangan Kunci Akses tersebut, lalu berikan izin AliyunOSSFullAccess kepada pengguna tersebut.
Linux
-
Jalankan perintah berikut di antarmuka baris perintah untuk menambahkan pengaturan 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'" >> ~/.bashrc-
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
Jalankan perintah berikut di terminal untuk memeriksa jenis shell default.
echo $SHELL-
Ikuti langkah-langkah sesuai jenis shell default Anda.
Zsh
-
Jalankan perintah berikut untuk menambahkan pengaturan 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'" >> ~/.zshrc -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Jalankan perintah berikut untuk menambahkan pengaturan 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_profile -
Jalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profile -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
Jalankan perintah berikut di Command Prompt.
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"-
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
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 memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
Inisialisasi klien
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 berada di wilayah Tiongkok Daratan. Titik akhir publik default dibatasi untuk operasi ini. 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. Ini wajib untuk akses Konsol OSS, karena konsol menerapkan HTTPS.
-
OSSClient mengimplementasikan AutoCloseable. Jika Anda membuat instans menggunakan pernyataan try-with-resources, sumber daya akan dilepas secara otomatis tanpa perlu memanggil close() secara manual.
-
Membuat dan menghancurkan instans OSSClient merupakan operasi yang memakan waktu. Kami menyarankan agar Anda menggunakan pola singleton untuk menggunakan kembali instans OSSClient. Jika menggunakan pola ini, Anda harus memanggil close() secara manual sebelum aplikasi dihentikan guna mencegah kebocoran sumber daya.
Sinkronisasi OSSClient
Gunakan OSSClient sinkron jika Anda ingin menunggu hingga suatu operasi selesai sebelum melanjutkan.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.OSSClientBuilder;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.exceptions.ServiceException;
import com.aliyun.sdk.service.oss2.models.*;
import com.aliyun.sdk.service.oss2.paginator.ListBucketsIterable;
public class Example {
public static void main(String[] args) {
String region = "<region-id>";
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
OSSClientBuilder clientBuilder = OSSClient.newBuilder()
.credentialsProvider(provider)
.region(region);
try (OSSClient client = clientBuilder.build()) {
ListBucketsIterable paginator = client.listBucketsPaginator(
ListBucketsRequest.newBuilder()
.build());
for (ListBucketsResult result : paginator) {
for (BucketSummary info : result.buckets()) {
System.out.printf("bucket: name:%s, region:%s, storageClass:%s\n", info.name(), info.region(), info.storageClass());
}
}
} catch (Exception e) {
// ServiceException se = ServiceException.asCause(e);
// if (se != null) {
// System.out.printf("ServiceException: requestId:%s, errorCode:%s\n", se.requestId(), se.errorCode());
// }
System.out.printf("error:\n%s", e);
}
}
}
OSSClient asinkron
Gunakan OSSClient asinkron jika Anda ingin memproses beberapa operasi OSS secara bersamaan tanpa menunggu hasil setiap operasi.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSAsyncClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.exceptions.ServiceException;
import com.aliyun.sdk.service.oss2.models.*;
import java.util.concurrent.CompletableFuture;
public class ExampleAsync {
public static void main(String[] args) {
String region = "<region-id>";
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
try (OSSAsyncClient client = OSSAsyncClient.newBuilder()
.region(region)
.credentialsProvider(provider)
.build()) {
CompletableFuture<ListBucketsResult> future = client.listBucketsAsync(
ListBucketsRequest.newBuilder().build()
);
future.thenAccept(result -> {
for (BucketSummary info : result.buckets()) {
System.out.printf("bucket: name:%s, region:%s, storageClass:%s\n",
info.name(), info.region(), info.storageClass());
}
})
.exceptionally(e -> {
// ServiceException se = ServiceException.asCause(e);
// if (se != null) {
// System.out.printf("Async ServiceException: requestId:%s, errorCode:%s\n",
// se.requestId(), se.errorCode());
// }
System.out.printf("async error:\n%s\n", e);
return null;
});
future.join();
} catch (Exception e) {
System.out.printf("main error:\n%s\n", e);
}
}
}
Setelah menjalankan kode, bucket di semua wilayah yang terkait dengan akun Anda akan ditampilkan.
Konfigurasi klien
Gunakan nama domain kustom
Jika Anda menggunakan nama domain OSS default untuk akses, Anda mungkin mengalami masalah seperti file tidak dapat diakses atau gagal dipratinjau. Dengan menggunakan nama domain kustom untuk mengakses OSS, Anda dapat langsung mempratinjau file di browser dan menggunakan CDN untuk pengiriman konten yang dipercepat.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
public class Example {
public static void main(String[] args) {
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada.
String region = "<region-id>";
// Tentukan nama domain kustom Anda. Misalnya, www.example-***.com.
String endpoint = "https://www.example-***.com";
// Buat klien OSS dengan informasi yang telah dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.endpoint(endpoint)
// Catatan: Setel useCName ke true untuk mengaktifkan opsi CNAME. Jika tidak, Anda tidak dapat menggunakan nama domain kustom.
.useCName(true)
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
Kontrol waktu tunggu
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
import java.time.Duration;
public class Example {
public static void main(String[] args) {
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada.
String region = "<region-id>";
// Buat klien OSS dengan informasi yang telah dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
// Atur waktu tunggu untuk membangun koneksi. Nilai default adalah 5 detik.
.connectTimeout(Duration.ofSeconds(30))
// Atur waktu tunggu untuk membaca dan menulis data. Nilai default adalah 20 detik.
.readWriteTimeout(Duration.ofSeconds(30))
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
Kebijakan pengulangan
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
import com.aliyun.sdk.service.oss2.retry.*;
import java.time.Duration;
public class Example {
public static void main(String[] args) {
/*
* Deskripsi konfigurasi kebijakan pengulangan SDK:
*
* Kebijakan pengulangan default:
* Saat tidak ada kebijakan pengulangan yang dikonfigurasi, SDK menggunakan StandardRetryer sebagai implementasi klien default.
* Konfigurasi default-nya adalah sebagai berikut:
* - maxAttempts: Menetapkan jumlah maksimum upaya. Default adalah 3.
* - maxBackoff: Menetapkan waktu backoff maksimum dalam detik. Default adalah 20 detik.
* - baseDelay: Menetapkan waktu tunda dasar dalam detik. Default adalah 0,2 detik.
* - backoffDelayer: Menetapkan algoritma backoff. Default adalah algoritma backoff FullJitter.
* Rumus: [0.0, 1.0) * min(2^attempts * baseDelay, maxBackoff)
* - errorRetryables: Jenis kesalahan yang dapat diulang, termasuk kode status HTTP, kode kesalahan layanan, dan kesalahan klien.
*
* Saat terjadi kesalahan yang dapat diulang, konfigurasi yang disediakan digunakan untuk menunda lalu mengulang permintaan.
* Latensi keseluruhan permintaan meningkat seiring jumlah pengulangan. Jika konfigurasi default
* tidak memenuhi kebutuhan skenario Anda, Anda dapat mengonfigurasi parameter pengulangan atau memodifikasi implementasi pengulangan.
*/
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada.
String region = "<region-id>";
// Contoh konfigurasi kebijakan pengulangan:
// 1. Sesuaikan jumlah maksimum pengulangan (default adalah 3, di sini diatur menjadi 5).
Retryer customRetryer = StandardRetryer.newBuilder()
.maxAttempts(5)
.build();
// 2. Sesuaikan waktu tunda backoff.
// Sesuaikan baseDelay menjadi 0,5 detik (default 0,2 detik) dan maxBackoff menjadi 25 detik (default 20 detik).
// Retryer customRetryer = StandardRetryer.newBuilder()
// .backoffDelayer(new FullJitterBackoff(Duration.ofMillis(500), Duration.ofSeconds(25)))
// .build();
// 3. Sesuaikan algoritma backoff.
// Gunakan algoritma backoff tunda tetap alih-alih algoritma FullJitter default, dengan tunda 2 detik setiap kali.
// Retryer customRetryer = StandardRetryer.newBuilder()
// .backoffDelayer(new FixedDelayBackoff(Duration.ofSeconds(2)))
// .build();
// 4. Nonaktifkan kebijakan pengulangan.
// Untuk menonaktifkan semua upaya pengulangan, gunakan implementasi NopRetryer.
// Retryer customRetryer = new NopRetryer();
// Buat klien OSS dengan informasi yang telah dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.retryer(customRetryer)
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
Protokol HTTP/HTTPS
Anda dapat menggunakan disableSsl(true) untuk menonaktifkan HTTPS.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
public class Example {
public static void main(String[] args) {
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada.
String region = "<region-id>";
// Buat klien OSS dengan informasi yang telah dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
// Atur agar tidak menggunakan permintaan HTTPS.
.disableSsl(true)
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
Gunakan titik akhir internal
Anda dapat menggunakan titik akhir internal untuk mengakses sumber daya OSS dalam wilayah yang sama. Hal ini mengurangi biaya trafik dan meningkatkan kecepatan akses.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
public class Example {
public static void main(String[] args) {
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Metode 1: Tentukan wilayah dan atur useInternalEndpoint ke true.
// Tentukan wilayah tempat bucket berada.
String region = "<region-id>";
// // Metode 2: Langsung tentukan wilayah dan titik akhir.
// // Tentukan wilayah tempat bucket berada.
// String region = "<region-id>";
// // Tentukan titik akhir internal untuk wilayah bucket.
// String endpoint = "<endpoint>";
// Buat klien OSS dengan informasi yang telah dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.useInternalEndpoint(true)
// .endpoint(endpoint) // Jika menggunakan Metode 2, hapus komentar baris ini dan beri komentar pada baris sebelumnya.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
Gunakan titik akhir akselerasi transfer
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
public class Example {
public static void main(String[] args) {
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Metode 1: Tentukan wilayah dan atur useAccelerateEndpoint ke true.
// Tentukan wilayah tempat bucket berada.
String region = "<region-id>";
// // Metode 2: Langsung tentukan wilayah dan titik akhir akselerasi transfer.
// // Tentukan wilayah tempat bucket berada.
// String region = "<region-id>";
// // Tentukan titik akhir akselerasi transfer untuk wilayah bucket, misalnya 'https://oss-accelerate.aliyuncs.com'.
// String endpoint = "https://oss-accelerate.aliyuncs.com";
// Buat klien OSS dengan informasi yang telah dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.useAccelerateEndpoint(true)
// .endpoint(endpoint) // Jika menggunakan Metode 2, hapus komentar baris ini dan beri komentar pada baris sebelumnya.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
Gunakan domain privat
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
public class Example {
public static void main(String[] args) {
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada.
String region = "<region-id>";
// Tentukan domain privat Anda. Misalnya: https://service.corp.example.com
String endpoint = "https://service.corp.example.com";
// Buat klien OSS dengan informasi yang telah dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.endpoint(endpoint)
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
Gunakan HTTPClient kustom
Jika parameter konfigurasi standar tidak memenuhi kebutuhan Anda, Anda dapat menggunakan klien HTTP kustom.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
Contoh berikut menunjukkan cara mengonfigurasi HTTPClient kustom untuk klien sinkron (OSSClient). Jika Anda menggunakan klien asinkron (OSSAsyncClient), ganti Apache5HttpClientBuilder dengan Apache5AsyncHttpClientBuilder. Parameter konfigurasi lainnya tetap sama.
import com.aliyun.sdk.service.oss2.*;
import com.aliyun.sdk.service.oss2.credentials.*;
import com.aliyun.sdk.service.oss2.transport.HttpClient;
import com.aliyun.sdk.service.oss2.transport.HttpClientOptions;
import com.aliyun.sdk.service.oss2.transport.apache5client.Apache5HttpClientBuilder;
import java.time.Duration;
public class Example {
public static void main(String[] args) {
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Tentukan wilayah tempat bucket berada.
String region = "<region-id>";
// Atur parameter untuk klien HTTP.
HttpClientOptions httpClientOptions = HttpClientOptions.custom()
// Waktu tunggu koneksi. Nilai default adalah 5 detik.
.connectTimeout(Duration.ofSeconds(30))
// Waktu tunggu untuk membaca dan menulis data. Nilai default adalah 20 detik.
.readWriteTimeout(Duration.ofSeconds(30))
// Jumlah maksimum koneksi. Nilai default adalah 1024.
.maxConnections(2048)
// Menentukan apakah akan melewati verifikasi sertifikat. Secara default, ini bernilai false.
.insecureSkipVerify(false)
// Menentukan apakah akan mengaktifkan pengalihan HTTP. Secara default, ini dinonaktifkan.
.redirectsEnabled(false)
// Atur server proxy.
// .proxyHost("http://user:passswd@proxy.example-***.com")
.build();
// Buat klien HTTP dan masukkan parameter klien HTTP.
HttpClient httpClient = Apache5HttpClientBuilder.create()
.options(httpClientOptions)
.build();
// Buat klien OSS dengan informasi yang telah dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.httpClient(httpClient)
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}
Konfigurasi kredensial akses
OSS SDK for Java 2.0 menyediakan berbagai cara untuk mengonfigurasi kredensial akses. Pilih metode inisialisasi yang sesuai berdasarkan kebutuhan autentikasi dan otorisasi Anda.
Cara memilih kredensial akses
Gunakan Pasangan Kunci Akses Pengguna RAM
Anda dapat menginisialisasi penyedia kredensial dengan Pasangan Kunci Akses (ID AccessKey dan Rahasia AccessKey) dari Akun Alibaba Cloud atau Pengguna RAM. Metode ini cocok untuk aplikasi yang berjalan di lingkungan aman dan memerlukan akses jangka panjang ke OSS tanpa rotasi kredensial yang sering. Namun, metode ini mengharuskan Anda memelihara Pasangan Kunci Akses secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan.
-
Akun Alibaba Cloud memiliki izin penuh atas sumber dayanya. Kebocoran Pasangan Kunci Akses Akun Alibaba Cloud menimbulkan risiko keamanan signifikan. Kami menyarankan agar Anda menggunakan Pasangan Kunci Akses Pengguna RAM dengan izin minimum yang diperlukan, bukan Pasangan Kunci Akses Akun Alibaba Cloud.
-
Untuk informasi lebih lanjut tentang cara membuat Pasangan Kunci Akses untuk Pengguna RAM, lihat Buat Pasangan Kunci Akses. ID AccessKey dan Rahasia AccessKey Pengguna RAM hanya ditampilkan saat dibuat. Anda harus menyimpannya. Jika lupa, Anda harus membuat yang baru.
Konfigurasikan variabel lingkungan
Linux/macOS
-
Atur variabel lingkungan menggunakan Pasangan Kunci Akses Pengguna RAM.
export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID' export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET' -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
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)
Kode contoh
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
public class OSSExample {
public static void main(String[] args) {
// Muat informasi kredensial dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Buat klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Konfigurasi kredensial statis
Kode berikut menunjukkan cara menyematkan kredensial akses dengan secara eksplisit menyetel Pasangan Kunci Akses.
Jangan menyematkan kredensial akses di aplikasi produksi Anda. Metode ini hanya untuk tujuan pengujian.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.StaticCredentialsProvider;
public class OSSExample {
public static void main(String[] args) {
// Buat penyedia kredensial statis dan secara eksplisit atur Pasangan Kunci Akses.
// Ganti dengan ID AccessKey dan Rahasia AccessKey Pengguna RAM Anda.
CredentialsProvider credentialsProvider = new StaticCredentialsProvider(
"YOUR_ACCESS_KEY_ID",
"YOUR_ACCESS_KEY_SECRET"
);
// Buat klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Gunakan token STS
Jika aplikasi Anda memerlukan akses sementara ke OSS, Anda dapat menggunakan kredensial identitas sementara dari Security Token Service (STS). Kredensial ini terdiri dari ID AccessKey, Rahasia AccessKey, dan token keamanan. Metode ini mengharuskan Anda memelihara dan memperbarui token STS secara manual, yang dapat meningkatkan risiko keamanan dan kompleksitas pemeliharaan.
-
Untuk memperoleh token STS dengan cepat menggunakan OpenAPI, lihat AssumeRole - Dapatkan kredensial identitas sementara untuk peran RAM.
-
Untuk memperoleh token STS menggunakan SDK, lihat Gunakan token STS untuk mengakses OSS.
-
Anda harus menentukan waktu kedaluwarsa saat menghasilkan token STS. Token menjadi tidak valid setelah kedaluwarsa.
-
Untuk daftar titik akhir layanan STS, lihat Titik akhir layanan.
Konfigurasikan variabel lingkungan
-
Metode ini menggunakan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan token Layanan Token Keamanan (STS)) yang Anda peroleh dari STS, bukan Pasangan Kunci Akses Pengguna RAM.
-
ID AccessKey yang Anda peroleh dari STS diawali dengan "STS", misalnya, "STS.L4aBSCSJVMuKg5U1****".
Linux/macOS
export OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
export OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
export OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>
Windows
set OSS_ACCESS_KEY_ID=<STS_ACCESS_KEY_ID>
set OSS_ACCESS_KEY_SECRET=<STS_ACCESS_KEY_SECRET>
set OSS_SESSION_TOKEN=<STS_SECURITY_TOKEN>
Kode contoh
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
public class OSSExample {
public static void main(String[] args) {
// Muat informasi autentikasi yang diperlukan untuk mengakses OSS dari variabel lingkungan untuk verifikasi identitas.
CredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider();
// Buat klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Konfigurasi kredensial statis
Kode berikut menunjukkan cara menyematkan kredensial akses dengan secara eksplisit menyetel Pasangan Kunci Akses sementara.
Jangan menyematkan kredensial akses di aplikasi produksi Anda. Metode ini hanya untuk tujuan pengujian.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.StaticCredentialsProvider;
public class OSSExample {
public static void main(String[] args) {
// Tentukan ID AccessKey dan Rahasia AccessKey sementara yang diperoleh.
// Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan "STS".
String stsAccessKeyId = "STS.****************";
String stsAccessKeySecret = "yourAccessKeySecret";
String stsSecurityToken = "yourSecurityToken";
// Buat penyedia kredensial statis dan secara eksplisit atur Pasangan Kunci Akses sementara dan token keamanan STS.
CredentialsProvider credentialsProvider = new StaticCredentialsProvider(
stsAccessKeyId,
stsAccessKeySecret,
stsSecurityToken
);
// Buat klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Gunakan kredensial ARN Peran RAM
Untuk akses berizin ke OSS, seperti untuk akses lintas akun, Anda dapat menginisialisasi penyedia kredensial menggunakan Nama Sumber Daya Alibaba Cloud (ARN) dari Peran RAM. Metode ini menggunakan token Layanan Token Keamanan (STS). Saat Anda menentukan ARN Peran RAM, alat kredensial secara otomatis memanggil operasi API AssumeRole untuk meminta token STS dan memperbaruinya sebelum kedaluwarsa. Anda juga dapat menyetel parameter policy untuk lebih membatasi izin Peran RAM.
-
Akun Alibaba Cloud memiliki izin penuh atas sumber dayanya. Kebocoran Pasangan Kunci Akses Akun Alibaba Cloud menimbulkan risiko keamanan signifikan. Kami menyarankan agar Anda menggunakan Pasangan Kunci Akses Pengguna RAM dengan izin minimum yang diperlukan, bukan Pasangan Kunci Akses Akun Alibaba Cloud.
-
Untuk informasi lebih lanjut tentang cara membuat Pasangan Kunci Akses untuk Pengguna RAM, lihat Buat Pasangan Kunci Akses. ID AccessKey dan Rahasia AccessKey Pengguna RAM hanya ditampilkan saat dibuat. Anda harus menyimpannya. Jika lupa, Anda harus membuat yang baru.
-
Untuk informasi lebih lanjut tentang cara memperoleh ARN Peran RAM, lihat Buat Peran RAM.
Tambahkan dependensi
Tambahkan dependensi manajemen kredensial Alibaba Cloud ke file pom.xml Anda.
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>credentials-java</artifactId>
<version>0.3.4</version>
</dependency>
Konfigurasikan Pasangan Kunci Akses dan ARN Peran RAM sebagai kredensial akses
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProviderSupplier;
// Catatan: Impor berikut berasal dari dependensi eksternal credentials-java
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;
public class OSSExample {
public static void main(String[] args) {
// Konfigurasikan kredensial ARN Peran RAM.
Config credentialConfig = new Config()
.setType("ram_role_arn")
// Peroleh Pasangan Kunci Akses Pengguna RAM (ID AccessKey dan Rahasia AccessKey) dari variabel lingkungan.
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"))
// ARN Peran RAM yang akan diasumsikan. Contoh nilai: acs:ram::123456789012****:role/adminrole
// Anda dapat menyetel RoleArn melalui variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
.setRoleArn("acs:ram::123456789012****:role/adminrole")
// Nama sesi peran. Anda dapat menyetel RoleSessionName melalui variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
.setRoleSessionName("your-session-name")
// Atur kebijakan izin yang lebih restriktif. Ini opsional. Contoh nilai: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
.setPolicy("{\"Statement\": [{\"Action\": [\"*\"],\"Effect\": \"Allow\",\"Resource\": [\"*\"]}],\"Version\":\"1\"}")
// Atur periode validitas sesi peran dalam detik. Default adalah 3600 detik (1 jam). Ini opsional.
.setRoleSessionExpiration(3600);
Client credentialClient = new Client(credentialConfig);
// Buat penyedia kredensial untuk pemuatan kredensial dinamis.
CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
try {
com.aliyun.credentials.models.CredentialModel cred = credentialClient.getCredential();
return new Credentials(
cred.getAccessKeyId(),
cred.getAccessKeySecret(),
cred.getSecurityToken()
);
} catch (Exception e) {
throw new RuntimeException("Gagal memperoleh kredensial", e);
}
});
// Buat instans klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Gunakan kredensial Peran RAM ECS
Jika aplikasi Anda berjalan di instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes, Anda dapat menggunakan Peran RAM ECS untuk menginisialisasi penyedia kredensial. SDK secara otomatis mengambil dan memperbarui token STS sementara untuk peran yang dilampirkan ke instans tersebut. Metode ini menghilangkan kebutuhan untuk mengelola secara manual Pasangan Kunci Akses atau token STS. Untuk informasi lebih lanjut tentang cara membuat Peran RAM ECS, lihat Buat Peran RAM.
Tambahkan dependensi
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>credentials-java</artifactId>
<version>0.3.4</version>
</dependency>
Konfigurasikan Peran RAM ECS sebagai kredensial akses
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProviderSupplier;
// Catatan: Impor berikut berasal dari dependensi eksternal credentials-java
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;
public class OSSExample {
public static void main(String[] args) {
// Konfigurasikan kredensial Peran RAM ECS.
Config credentialConfig = new Config()
.setType("ecs_ram_role") // Jenis kredensial akses. Tetap sebagai ecs_ram_role.
.setRoleName("EcsRoleExample"); // Nama Peran RAM yang diberikan ke instans ECS. Parameter opsional. Jika tidak disetel, akan diambil secara otomatis. Kami sangat menyarankan untuk menyetelnya guna mengurangi permintaan.
Client credentialClient = new Client(credentialConfig);
// Buat penyedia kredensial untuk pemuatan kredensial dinamis.
CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
try {
com.aliyun.credentials.models.CredentialModel cred = credentialClient.getCredential();
return new Credentials(
cred.getAccessKeyId(),
cred.getAccessKeySecret(),
cred.getSecurityToken()
);
} catch (Exception e) {
throw new RuntimeException("Gagal memperoleh kredensial", e);
}
});
// Buat instans klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Gunakan kredensial ARN Peran OIDC
Di Container Service for Kubernetes, Anda dapat menggunakan RAM Roles for Service Accounts (RRSA) untuk kontrol izin detail halus tingkat pod. Ini berguna untuk kluster multi-penyewa di mana Anda tidak ingin semua pod mewarisi izin dari peran RAM node pekerja. Dengan RRSA, SDK menggunakan token OpenID Connect (OIDC) yang dimount ke dalam pod untuk mengasumsikan Peran RAM tertentu dan memperoleh token STS sementara. Proses ini otomatis dan menghilangkan kebutuhan untuk mengelola kredensial secara manual. Untuk informasi lebih lanjut, lihat Gunakan RRSA untuk memberikan izin RAM ke ServiceAccount.
Tambahkan dependensi
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>credentials-java</artifactId>
<version>0.3.4</version>
</dependency>
Konfigurasikan ARN Peran OIDC sebagai kredensial akses
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProviderSupplier;
// Catatan: Impor berikut berasal dari dependensi eksternal credentials-java
import com.aliyun.credentials.Client;
import com.aliyun.credentials.models.Config;
public class OSSExample {
public static void main(String[] args) {
// Konfigurasikan kredensial ARN Peran OIDC.
Config credentialConfig = new Config()
// Tentukan jenis kredensial. Tetap sebagai oidc_role_arn.
.setType("oidc_role_arn")
// ARN Peran RAM. Anda dapat menyetel RoleArn melalui variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
.setRoleArn(System.getenv("ALIBABA_CLOUD_ROLE_ARN"))
// ARN penyedia OIDC. Anda dapat menyetel OidcProviderArn melalui variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
.setOidcProviderArn(System.getenv("ALIBABA_CLOUD_OIDC_PROVIDER_ARN"))
// Jalur file token OIDC. Anda dapat menyetel OidcTokenFilePath melalui variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
.setOidcTokenFilePath(System.getenv("ALIBABA_CLOUD_OIDC_TOKEN_FILE"))
// Nama sesi peran. Anda dapat menyetel RoleSessionName melalui variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
.setRoleSessionName("your-session-name")
// Atur kebijakan izin yang lebih restriktif. Ini opsional. Contoh nilai: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
.setPolicy("{\"Statement\": [{\"Action\": [\"*\"],\"Effect\": \"Allow\",\"Resource\": [\"*\"]}],\"Version\":\"1\"}")
// Atur periode validitas sesi peran dalam detik. Default adalah 3600 detik (1 jam). Ini opsional.
.setRoleSessionExpiration(3600);
Client credentialClient = new Client(credentialConfig);
// Buat penyedia kredensial untuk pemuatan kredensial dinamis.
CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
try {
com.aliyun.credentials.models.CredentialModel cred = credentialClient.getCredential();
return new Credentials(
cred.getAccessKeyId(),
cred.getAccessKeySecret(),
cred.getSecurityToken()
);
} catch (Exception e) {
throw new RuntimeException("Gagal memperoleh kredensial", e);
}
});
// Buat instans klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Gunakan kredensial akses kustom
Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat mengimplementasikan metode kustom untuk memperoleh kredensial. SDK Java menyediakan berbagai cara untuk melakukan ini.
Implementasikan melalui antarmuka Supplier
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProviderSupplier;
public class OSSExample {
public static void main(String[] args) {
// Buat penyedia kredensial kustom.
CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
// TODO: Implementasikan logika pengambilan kredensial kustom Anda.
// Kembalikan kredensial jangka panjang.
return new Credentials("access_key_id", "access_key_secret");
// Kembalikan token STS (jika diperlukan).
// return new Credentials("sts_access_key_id", "sts_access_key_secret", "security_token");
});
// Buat klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Implementasikan antarmuka CredentialsProvider
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.Credentials;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
public class CustomCredentialsProvider implements CredentialsProvider {
@Override
public Credentials getCredentials() {
// TODO: Implementasikan logika pengambilan kredensial kustom Anda.
// Kembalikan kredensial jangka panjang.
return new Credentials("access_key_id", "access_key_secret");
// Kembalikan token STS (jika diperlukan).
// Untuk kredensial sementara, Anda perlu memperbaruinya berdasarkan waktu kedaluwarsanya.
// return new Credentials("sts_access_key_id", "sts_access_key_secret", "security_token");
}
}
public class OSSExample {
public static void main(String[] args) {
// Buat penyedia kredensial kustom.
CredentialsProvider credentialsProvider = new CustomCredentialsProvider();
// Buat klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Akses anonim
Jika Anda hanya perlu mengakses sumber daya OSS baca-publik, Anda dapat menggunakan akses anonim tanpa memberikan kredensial.
Sebelum menjalankan kode contoh, ganti<region-id>dengan wilayah dan titik akhir yang sebenarnya, sepertiap-southeast-1.
import com.aliyun.sdk.service.oss2.OSSClient;
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.AnonymousCredentialsProvider;
public class OSSExample {
public static void main(String[] args) {
// Buat penyedia kredensial anonim.
CredentialsProvider credentialsProvider = new AnonymousCredentialsProvider();
// Buat klien OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("<region-id>") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan klien yang telah dibuat untuk operasi selanjutnya...
// Catatan: Akses anonim hanya dapat digunakan untuk sumber daya dengan izin baca-publik.
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}
Kode contoh
|
Klasifikasi fitur |
Deskripsi contoh |
Versi Sinkronisasi |
Versi asinkron |
|
Bucket |
Buat bucket |
||
|
Daftar bucket |
|||
|
Peroleh informasi bucket |
|||
|
Dapatkan wilayah bucket |
|||
|
Peroleh statistik kapasitas penyimpanan |
|||
|
Hapus bucket |
|||
|
Unggah file |
Unggah sederhana |
||
|
Unggah tambahan |
|||
|
Unggah multi-bagian |
|||
|
Daftar tugas unggah multi-bagian |
|||
|
Daftar bagian yang diunggah |
|||
|
Batalkan unggah multi-bagian |
|||
|
Unduh file |
Unduh sederhana |
||
|
Manajemen file |
Salin file |
||
|
Periksa apakah file ada | |||
|
Daftar file |
|||
|
Daftar file V2 |
|||
|
Hapus file |
|||
|
Hapus beberapa file |
|||
|
Dapatkan metadata file |
|||
|
Objek arsip |
Pulihkan file |
||
|
Bersihkan file yang dipulihkan |
|||
|
Tautan simbolik |
Buat tautan simbolik |
||
|
Dapatkan tautan simbolik |
|||
|
Penandaan objek |
Atur tag objek |
||
|
Dapatkan tag objek |
|||
|
Hapus tag objek |
|||
|
Kontrol akses |
Atur ACL bucket |
||
|
Dapatkan ACL bucket |
|||
|
Atur ACL file |
|||
|
Dapatkan ACL objek |
|||
|
Pengendalian versi |
Atur pengendalian versi |
||
|
Dapatkan status pengendalian versi |
|||
|
Daftar versi objek |
|||
|
Akses lintas domain |
Atur aturan CORS |
||
|
Dapatkan aturan CORS |
|||
|
Hapus aturan CORS |
|||
|
Permintaan preflight |
|||
|
Fitur sistem |
Kueri informasi titik akhir |