OSS SDK for Java V2 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, situs web, dan perusahaan yang memerlukan penyimpanan file berbasis cloud.
Integrasi cepat
Ikuti langkah-langkah berikut untuk mengintegrasikan OSS SDK for Java V2.
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, unduh dan instal Java.Instal SDK
Anda dapat menggunakan Maven untuk menginstal OSS SDK for Java V2.
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
Dapatkan versi terbaru OSS SDK for Java V2 dari Github, lalu bangun dan instal menggunakan Maven:
mvn clean install -DskipTests -Dgpg.skip=trueKonfigurasikan kredensial akses
Atur pasangan AccessKey pengguna RAM sebagai variabel lingkungan untuk menggunakannya sebagai kredensial.
Di Konsol RAM, buat pengguna RAM dan Permanent AccessKey Pair untuk akses. Simpan pasangan AccessKey tersebut dan berikan izin AliyunOSSFullAccess kepada pengguna.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'" >> ~/.bashrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrcJalankan 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 $SHELLIkuti 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'" >> ~/.zshrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrcJalankan 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_profileJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profileJalankan 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 client
Inisialisasi OSSClient dengan menentukan wilayah.
OSSClient mengimplementasikan AutoCloseable. Jika Anda membuat instans menggunakan pernyataan try-with-resources, resource akan dilepas secara otomatis sehingga Anda tidak perlu memanggil close() secara manual.
Pembuatan dan penghancuran instans OSSClient bisa 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 untuk mencegah kebocoran resource.
Sync OSSClient
Jika Anda ingin menunggu operasi selesai sebelum melanjutkan, gunakan OSSClient sinkron.
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 = "cn-hangzhou";
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);
}
}
}Asynchronous OSSClient
Jika Anda ingin memproses beberapa operasi OSS secara bersamaan tanpa menunggu hasil setiap operasi, gunakan OSSClient asinkron.
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 = "cn-hangzhou";
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:
bucket: name: examplebucket01, region: cn-hangzhou, storageClass: Standard
bucket: name: examplebucket02, region: cn-hangzhou, storageClass: StandardKonfigurasi client
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. Jika Anda menggunakan nama domain kustom untuk mengakses OSS, Anda dapat mempratinjau file langsung di browser dan menggunakan CDN untuk pengiriman konten yang dipercepat.
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. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Tentukan nama domain kustom Anda. Misalnya, www.example-***.com.
String endpoint = "https://www.example-***.com";
// Buat client OSS dengan informasi yang dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.endpoint(endpoint)
// Catatan: Atur useCName ke true untuk mengaktifkan opsi CNAME. Jika tidak, Anda tidak dapat menggunakan nama domain kustom.
.useCName(true)
.build()) {
// Gunakan client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}Kontrol timeout
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. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Buat client OSS dengan informasi yang dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
// Atur timeout untuk membuat koneksi. Nilai default adalah 5 detik.
.connectTimeout(Duration.ofSeconds(30))
// Atur timeout untuk membaca dan menulis data. Nilai default adalah 20 detik.
.readWriteTimeout(Duration.ofSeconds(30))
.build()) {
// Gunakan client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}Kebijakan pengulangan
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 client 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 delay dasar dalam detik. Default adalah 0,2 detik.
* - backoffDelayer: Menetapkan algoritma backoff. Default adalah algoritma FullJitter.
* Formula: [0.0, 1.0) * min(2^attempts * baseDelay, maxBackoff)
* - errorRetryables: Jenis kesalahan yang dapat diulang, termasuk kode status HTTP, kode kesalahan layanan, dan kesalahan client.
*
* 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. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// 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 delay 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 delay tetap alih-alih algoritma FullJitter default, dengan delay 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 client OSS dengan informasi yang dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.retryer(customRetryer)
.build()) {
// Gunakan client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}Protokol HTTP/HTTPS
Anda dapat menggunakan disableSsl(true) untuk menonaktifkan protokol HTTPS.
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. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Buat client OSS dengan informasi yang dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
// Atur agar tidak menggunakan permintaan HTTPS.
.disableSsl(true)
.build()) {
// Gunakan client yang 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 resource OSS dalam wilayah yang sama guna mengurangi biaya trafik dan meningkatkan kecepatan akses.
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. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// // Metode 2: Langsung tentukan wilayah dan titik akhir.
// // Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
// String region = "cn-hangzhou";
// // Tentukan titik akhir internal untuk wilayah bucket tersebut. Untuk China (Hangzhou), titik akhirnya adalah 'oss-cn-hangzhou-internal.aliyuncs.com'.
// String endpoint = "oss-cn-hangzhou-internal.aliyuncs.com";
// Buat client OSS dengan informasi yang 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 client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}Gunakan titik akhir akselerasi transfer
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. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// // Metode 2: Langsung tentukan wilayah dan titik akhir akselerasi transfer.
// // Tentukan wilayah tempat bucket berada. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
// String region = "cn-hangzhou";
// // Tentukan titik akhir akselerasi transfer untuk wilayah bucket tersebut, misalnya 'https://oss-accelerate.aliyuncs.com'.
// String endpoint = "https://oss-accelerate.aliyuncs.com";
// Buat client OSS dengan informasi yang 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 client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}Gunakan domain privat
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. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Tentukan domain privat Anda. Misalnya: https://service.corp.example.com
String endpoint = "https://service.corp.example.com";
// Buat client OSS dengan informasi yang dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.endpoint(endpoint)
.build()) {
// Gunakan client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}Gunakan nama domain Alibaba Gov Cloud
Kode contoh berikut menunjukkan cara mengonfigurasi OSSClient menggunakan nama domain Alibaba Gov Cloud.
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 dan titik akhir.
// Tentukan wilayah tempat bucket berada. Untuk Alibaba Gov Cloud 1 China (Beijing), atur wilayah menjadi cn-north-2-gov-1.
String region = "cn-north-2-gov-1";
// Tentukan titik akhir internal untuk wilayah bucket tersebut. Untuk Alibaba Gov Cloud 1 China (Beijing), titik akhirnya adalah 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
// Untuk menentukan protokol HTTP, atur domain menjadi 'http://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
String endpoint = "https://oss-cn-north-2-gov-1-internal.aliyuncs.com";
// Buat client OSS dengan informasi yang dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.endpoint(endpoint)
.build()) {
// Gunakan client yang 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 HTTP client kustom.
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. Misalnya, untuk China (Hangzhou), atur wilayah menjadi cn-hangzhou.
String region = "cn-hangzhou";
// Atur parameter untuk HTTP client.
HttpClientOptions httpClientOptions = HttpClientOptions.custom()
// Timeout koneksi. Nilai default adalah 5 detik.
.connectTimeout(Duration.ofSeconds(30))
// Timeout 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 verifikasi sertifikat dilewati. Secara default, ini false.
.insecureSkipVerify(false)
// Menentukan apakah pengalihan HTTP diaktifkan. Secara default, ini dinonaktifkan.
.redirectsEnabled(false)
// Atur server proxy.
// .proxyHost("http://user:passswd@proxy.example-***.com")
.build();
// Buat HTTP client dan masukkan parameter HTTP client.
HttpClient httpClient = Apache5HttpClientBuilder.create()
.options(httpClientOptions)
.build();
// Buat client OSS dengan informasi yang dikonfigurasi.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region(region)
.httpClient(httpClient)
.build()) {
// Gunakan client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Error occurred: " + e.getMessage());
}
}
}Konfigurasi kredensial akses
OSS SDK for Java V2 menyediakan berbagai cara untuk mengonfigurasi kredensial akses. Anda dapat memilih metode inisialisasi yang sesuai berdasarkan kebutuhan autentikasi dan otorisasi Anda.
Cara memilih kredensial akses
Gunakan pasangan AccessKey pengguna RAM
Anda dapat menginisialisasi penyedia kredensial menggunakan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) akun Alibaba Cloud atau pengguna RAM. Metode ini cocok jika aplikasi Anda diterapkan di lingkungan aman dan stabil, tidak rentan terhadap serangan eksternal, memerlukan akses jangka panjang ke OSS, dan tidak memungkinkan rotasi kredensial yang sering. Namun, metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, yang menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan.
Akun Alibaba Cloud memiliki izin penuh atas resource-nya. Jika pasangan AccessKey bocor, ini menimbulkan risiko keamanan signifikan bagi sistem Anda. Kami menyarankan agar Anda tidak menggunakan pasangan AccessKey akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey pengguna RAM dengan izin minimal yang diperlukan.
Untuk informasi lebih lanjut tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat AccessKey. Pasangan AccessKey pengguna RAM hanya ditampilkan saat dibuat. Anda harus menyimpan pasangan AccessKey tersebut. Jika Anda lupa, Anda harus membuat yang baru.
Konfigurasikan variabel lingkungan
Linux/macOS
Konfigurasikan variabel lingkungan dengan pasangan AccessKey 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
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 client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan client yang 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 mengatur pasangan AccessKey secara eksplisit.
Jangan menyematkan kredensial akses di aplikasi produksi Anda; metode ini hanya untuk tujuan pengujian.
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 atur secara eksplisit pasangan AccessKey.
// Ganti dengan ID AccessKey dan Rahasia AccessKey pengguna RAM Anda.
CredentialsProvider credentialsProvider = new StaticCredentialsProvider(
"YOUR_ACCESS_KEY_ID",
"YOUR_ACCESS_KEY_SECRET"
);
// Buat client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan client yang 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 (ID AccessKey, Rahasia AccessKey, dan token) yang diperoleh dari Security Token Service (STS) untuk menginisialisasi penyedia kredensial. Namun, metode ini mengharuskan Anda memelihara token STS secara manual, sehingga menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan. Selain itu, untuk melakukan beberapa akses sementara ke OSS, Anda harus memperbarui token STS secara manual.
Untuk mendapatkan token STS dengan cepat menggunakan OpenAPI, lihat AssumeRole - Dapatkan kredensial identitas sementara untuk peran RAM.
Untuk mendapatkan token STS menggunakan SDK, lihat Gunakan token STS untuk mengakses OSS.
Anda harus menentukan waktu kedaluwarsa saat menghasilkan token STS. Token tersebut akan menjadi tidak valid dan tidak dapat digunakan setelah melewati waktu kedaluwarsa.
Untuk daftar titik akhir layanan STS, lihat Titik akhir layanan.
Konfigurasikan variabel lingkungan
Metode ini menggunakan kredensial identitas sementara—berupa ID AccessKey, Rahasia AccessKey, dan Token Keamanan—yang diperoleh dari STS, bukan pasangan AccessKey pengguna RAM.
ID AccessKey yang diperoleh 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
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 client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan client yang 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 mengatur pasangan AccessKey sementara secara eksplisit.
Jangan menyematkan kredensial akses di aplikasi produksi Anda; metode ini hanya untuk tujuan pengujian.
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 sementara dan Rahasia AccessKey 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 atur secara eksplisit pasangan AccessKey sementara dan token STS.
CredentialsProvider credentialsProvider = new StaticCredentialsProvider(
stsAccessKeyId,
stsAccessKeySecret,
stsSecurityToken
);
// Buat client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}Gunakan kredensial ARN peran RAM
Jika aplikasi Anda memerlukan akses berotorisasi ke OSS untuk skenario seperti akses lintas akun, Anda dapat menggunakan ARN peran RAM untuk menginisialisasi penyedia kredensial. Implementasi dasarnya memanfaatkan token dari Security Token Service (STS). Saat Anda menentukan ARN peran RAM, alat kredensial akan memperoleh token STS dan secara otomatis memanggil operasi API AssumeRole untuk meminta token baru sebelum token saat ini kedaluwarsa. Selain itu, Anda dapat mengatur parameter policy guna membatasi izin peran RAM.
Akun Alibaba Cloud memiliki izin penuh atas resource-nya. Jika pasangan AccessKey bocor, hal ini menimbulkan risiko keamanan signifikan bagi sistem Anda. Kami menyarankan agar Anda tidak menggunakan pasangan AccessKey akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey pengguna RAM dengan izin minimal yang diperlukan.
Untuk informasi lebih lanjut tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat AccessKey. ID AccessKey dan Rahasia AccessKey pengguna RAM hanya ditampilkan saat dibuat. Anda harus menyimpannya dengan aman. Jika lupa, Anda perlu membuat pasangan AccessKey baru.
Untuk informasi lebih lanjut tentang cara memperoleh ARN peran RAM, lihat CreateRole - 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 AccessKey dan ARN peran RAM sebagai kredensial akses
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 AccessKey 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 mengatur RoleArn melalui variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
.setRoleArn("acs:ram::123456789012****:role/adminrole")
// Nama sesi peran. Anda dapat mengatur RoleSessionName melalui variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
.setRoleSessionName("your-session-name")
// Atur kebijakan izin yang lebih ketat. 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.Credentials cred = credentialClient.getCredential();
return new Credentials(
cred.getAccessKeyId(),
cred.getAccessKeySecret(),
cred.getSecurityToken()
);
} catch (Exception e) {
throw new RuntimeException("Gagal memperoleh kredensial", e);
}
});
// Buat instans client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada, misalnya China (Hangzhou).
.build()) {
// Gunakan client untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}Gunakan kredensial peran RAM ECS
Jika aplikasi Anda berjalan di instance ECS, instance ECI, atau node pekerja Container Service for Kubernetes, kami menyarankan penggunaan peran RAM ECS untuk menginisialisasi penyedia kredensial. Implementasi dasarnya menggunakan token STS. Peran RAM ECS memungkinkan Anda mengaitkan peran dengan instance ECS, instance ECI, atau node pekerja Container Service for Kubernetes, sehingga token STS dapat diperbarui secara otomatis di dalam instance tersebut. Pendekatan ini menghilangkan kebutuhan untuk menyediakan pasangan AccessKey atau token STS secara manual, sekaligus mengurangi risiko terkait pemeliharaan kredensial. Untuk informasi lebih lanjut tentang cara memperoleh peran RAM ECS, lihat CreateRole - 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
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 instance ECS. Parameter opsional. Jika tidak diatur, akan diambil secara otomatis. Kami sangat menyarankan untuk mengaturnya guna mengurangi permintaan.
Client credentialClient = new Client(credentialConfig);
// Buat penyedia kredensial untuk pemuatan kredensial dinamis.
CredentialsProvider credentialsProvider = new CredentialsProviderSupplier(() -> {
try {
com.aliyun.credentials.models.Credentials cred = credentialClient.getCredential();
return new Credentials(
cred.getAccessKeyId(),
cred.getAccessKeySecret(),
cred.getSecurityToken()
);
} catch (Exception e) {
throw new RuntimeException("Gagal memperoleh kredensial", e);
}
});
// Buat instans client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada, misalnya China (Hangzhou).
.build()) {
// Gunakan client untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}Gunakan kredensial ARN peran OIDC
Setelah Anda mengonfigurasi peran RAM untuk node pekerja di Container Service for Kubernetes, aplikasi dalam pod pada node tersebut dapat memperoleh token STS dari peran terkait melalui layanan meta global, mirip dengan aplikasi yang dijalankan di ECS. Namun, jika Anda menjalankan aplikasi tidak tepercaya di kluster kontainer—misalnya, aplikasi yang diajukan pelanggan yang kode sumbernya tidak dapat Anda akses—Anda mungkin ingin mencegah aplikasi tersebut memperoleh token STS dari peran RAM instance yang terkait dengan node pekerja melalui layanan meta global. Untuk melindungi resource cloud Anda sekaligus memungkinkan aplikasi tidak tepercaya ini memperoleh token STS yang diperlukan secara aman dan menerapkan prinsip hak istimewa minimal di tingkat aplikasi, Anda dapat menggunakan fitur RAM Roles for Service Account (RRSA). Implementasi dasar RRSA menggunakan token STS. Kluster kontainer Alibaba Cloud membuat dan memasang file token OIDC service account yang sesuai untuk setiap pod aplikasi, serta menyuntikkan informasi konfigurasi terkait ke dalam variabel lingkungan. Alat kredensial kemudian memperoleh token STS dari peran terikat dengan memanggil API AssumeRoleWithOIDC dari layanan STS, menggunakan informasi konfigurasi dari variabel lingkungan tersebut. Pendekatan ini menghilangkan kebutuhan untuk menyediakan pasangan AccessKey atau token STS secara manual, sehingga mengurangi risiko yang terkait dengan pemeliharaan manual. Untuk informasi lebih lanjut, lihat Konfigurasikan izin RAM ServiceAccount melalui RRSA untuk mencapai isolasi izin pod.
Tambahkan dependensi
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>credentials-java</artifactId>
<version>0.3.4</version>
</dependency>Konfigurasikan ARN peran OIDC sebagai kredensial akses
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 mengatur RoleArn melalui variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
.setRoleArn(System.getenv("ALIBABA_CLOUD_ROLE_ARN"))
// ARN penyedia OIDC. Anda dapat mengatur OidcProviderArn melalui variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN.
.setOidcProviderArn(System.getenv("ALIBABA_CLOUD_OIDC_PROVIDER_ARN"))
// Jalur file token OIDC. Anda dapat mengatur OidcTokenFilePath melalui variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE.
.setOidcTokenFilePath(System.getenv("ALIBABA_CLOUD_OIDC_TOKEN_FILE"))
// Nama sesi peran. Anda dapat mengatur RoleSessionName melalui variabel lingkungan ALIBABA_CLOUD_ROLE_SESSION_NAME.
.setRoleSessionName("your-session-name")
// Atur kebijakan izin yang lebih ketat. 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.Credentials cred = credentialClient.getCredential();
return new Credentials(
cred.getAccessKeyId(),
cred.getAccessKeySecret(),
cred.getSecurityToken()
);
} catch (Exception e) {
throw new RuntimeException("Gagal memperoleh kredensial", e);
}
});
// Buat instans client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada, misalnya China (Hangzhou).
.build()) {
// Gunakan client 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 menyesuaikan cara memperoleh kredensial tersebut. SDK Java mendukung berbagai metode implementasi untuk tujuan ini.
Implementasikan melalui antarmuka Supplier
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 client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}Implementasikan antarmuka CredentialsProvider
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 client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan client yang dibuat untuk operasi selanjutnya...
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}Akses anonim
Jika Anda hanya perlu mengakses sumber daya Object Storage Service (OSS) dengan izin public-read, Anda dapat menggunakan akses anonim tanpa menyediakan kredensial apa pun.
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 client OSS.
try (OSSClient client = OSSClient.newBuilder()
.credentialsProvider(credentialsProvider)
.region("cn-hangzhou") // Tentukan wilayah tempat bucket berada.
.build()) {
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
// Catatan: Akses anonim hanya dapat digunakan untuk sumber daya dengan izin public-read.
} catch (Exception e) {
System.err.println("Operasi gagal: " + e.getMessage());
}
}
}Kode contoh
Klasifikasi fitur | Deskripsi contoh | Versi sinkron | Versi asinkron |
Bucket | Buat bucket | ||
Daftar bucket | |||
Dapatkan informasi bucket | |||
Dapatkan wilayah bucket | |||
Dapatkan statistik penyimpanan bucket | |||
Hapus bucket | |||
Unggah file | Unggah sederhana | ||
Unggah append | |||
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 | |||
Tag objek | Atur tag objek | ||
Dapatkan tag objek | |||
Hapus tag objek | |||
Resource Access Management | Atur ACL bucket | ||
Dapatkan ACL bucket | |||
Atur ACL objek | |||
Dapatkan ACL objek | |||
Pemberian 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 |