Integrasikan Alibaba Cloud OSS ke dalam aplikasi Kotlin dan Android Anda menggunakan OSS Kotlin SDK V2 untuk mengunggah, mengunduh, dan mengelola file.
GitHub | Panduan Pengembang OSS Kotlin SDK V2
Mulai Cepat
Mulai menggunakan OSS Kotlin SDK V2:

Prasyarat
-
Kotlin: 2.1.0 atau versi lebih baru
-
Java: Java 8+ saat runtime (Java 11+ untuk build dari source)
-
Platform yang didukung: JVM (Desktop / Server), Android, JavaScript (Node.js dan browser), WebAssembly (wasmJs untuk Node.js dan browser), iOS (iosArm64 dan iosSimulatorArm64), serta macOS (macosArm64)
Verifikasi versi Kotlin di file build.gradle.kts Anda. Lakukan upgrade jika versinya lebih lama dari 2.1.0.
Instal SDK
Instal OSS Kotlin SDK V2 dengan Gradle (disarankan).
Opsi 1: Dependensi Gradle (disarankan)
Tambahkan dependensi ke build.gradle.kts:
dependencies {
implementation("com.aliyun:kotlin-oss-v2:<latest-version>")
// Untuk fitur tambahan (seperti API berbagi sumber daya lintas asal)
// implementation("com.aliyun:kotlin-oss-v2-extension:0.1.0-dev")
}
Paket:
-
kotlin-oss-v2: API inti untuk operasi bucket, operasi objek, dan fitur lanjutan (paginator, presigning) -
kotlin-oss-v2-extension: API ekstensi untuk fitur konfigurasi bucket seperti CORS, logging, inventory, dan gaya gambar
Opsi 2: Membangun dari sumber
Clone OSS Kotlin SDK V2 terbaru dari GitHub dan build dengan Gradle:
# Clone proyek
$ git clone https://github.com/aliyun/alibabacloud-oss-kotlin-sdk-v2.git
# Masuk ke direktori
$ cd alibabacloud-oss-kotlin-sdk-v2/
# Publish ke MavenLocal
$ ./gradlew clean publishToMavenLocal
Tambahkan mavenLocal ke konfigurasi repositori Anda:
repositories {
...
mavenLocal()
}
Tambahkan dependensi ke proyek Anda:
implementation("com.aliyun:kotlin-oss-v2:<latest-version>")
// implementation("com.aliyun:kotlin-oss-v2-extension:<latest-version>")
Opsi 3: Impor dependensi secara manual
# Clone proyek
$ git clone https://github.com/aliyun/alibabacloud-oss-kotlin-sdk-v2.git
# Masuk ke direktori
$ cd aliyun-oss-kotlin-sdk-v2/
# Jalankan skrip packaging
$ ./gradlew :oss-sdk:assemble
# ./gradlew :oss-sdk-extension:assemble
# Menggunakan aar sebagai contoh
# Masuk ke direktori output build tempat paket dihasilkan
$ cd oss-sdk/build/outputs/aar && ls
# cd oss-sdk-extension/build/outputs/aar && ls
Konfigurasikan kredensial akses
Simpan pasangan AccessKey Pengguna RAM sebagai variabel lingkungan.
Buat Pengguna RAM dengan akses AccessKey permanen di Konsol RAM, simpan pasangan AccessKey tersebut, dan berikan izin AliyunOSSFullAccess kepada pengguna.
Linux
-
Tambahkan variabel lingkungan ke
~/.bashrc.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc -
Terapkan perubahan.
source ~/.bashrc -
Verifikasi variabel lingkungan.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
-
Periksa shell default Anda.
echo $SHELL -
Lanjutkan berdasarkan shell default Anda.
Zsh
-
Tambahkan variabel lingkungan ke
~/.zshrc.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Terapkan perubahan.
source ~/.zshrc -
Verifikasi variabel lingkungan.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Tambahkan variabel lingkungan ke
~/.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 -
Terapkan perubahan.
source ~/.bash_profile -
Verifikasi variabel lingkungan.
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" -
Verifikasi variabel lingkungan.
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) -
Verifikasi variabel lingkungan.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
Inisialisasi client
Inisialisasi OSSClient dengan Wilayah dan titik akhir.
-
OSSClient mengimplementasikan
Closeable. Saat digunakan dengan fungsi ekstensiuse, resource dilepas secara otomatis tanpa perlu memanggilclose. -
Pembuatan dan penghapusan OSSClient bersifat mahal. Gunakan kembali instans singleton, dan panggil
closesebelum aplikasi Anda keluar untuk menghindari kebocoran resource.
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
import com.aliyun.kotlin.sdk.service.oss2.models.ListBucketsRequest
import com.aliyun.kotlin.sdk.service.oss2.paginator.listBucketsPaginator
suspend fun main() {
val region = "cn-hangzhou"
// Gunakan konfigurasi default SDK
// Muat kredensial dari variabel lingkungan
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
}
OSSClient.create(config).use { client ->
// Gunakan paginator untuk menampilkan semua bucket
client.listBucketsPaginator(ListBucketsRequest {}).collect { result ->
result.buckets?.forEach { bucket ->
println("bucket: name:${bucket.name}, region:${bucket.region}, storageClass:${bucket.storageClass}")
}
}
}
}
Output menampilkan semua bucket di seluruh wilayah dalam akun Anda:
bucket: name: examplebucket01, region: cn-hangzhou, storageClass: Standard
bucket: name: examplebucket02, region: cn-hangzhou, storageClass: Standard
Konfigurasi client
Gunakan nama domain kustom
Nama domain kustom memungkinkan pratinjau langsung di browser dan akselerasi CDN untuk file yang dihosting di OSS.
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
suspend fun main() {
// Tentukan wilayah tempat bucket berada. Misalnya, untuk China East 1 (Hangzhou), atur Region ke cn-hangzhou
val region = "cn-hangzhou"
// Masukkan domain kustom Anda. Misalnya, www.example-***.com
val endpoint = "https://www.example-***.com"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
this.endpoint = endpoint
// Catatan: atur ini ke true untuk mengaktifkan opsi CNAME; jika tidak, domain kustom tidak dapat digunakan
this.useCName = true
credentialsProvider = EnvironmentVariableCredentialsProvider()
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Pengaturan timeout
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
import kotlin.time.Duration.Companion.seconds
suspend fun main() {
val region = "cn-hangzhou"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
// Atur timeout pembentukan koneksi; default adalah 10 detik
connectTimeout = 30.seconds
// Atur timeout untuk membaca/menulis data dalam aplikasi; default adalah 20 detik
readWriteTimeout = 30.seconds
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Kebijakan retry
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
import com.aliyun.kotlin.sdk.service.oss2.retry.StandardRetryer
import com.aliyun.kotlin.sdk.service.oss2.retry.FullJitterBackoff
import com.aliyun.kotlin.sdk.service.oss2.retry.FixedDelayBackoff
import com.aliyun.kotlin.sdk.service.oss2.retry.NopRetryer
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.seconds
suspend fun main() {
/*
* Konfigurasi kebijakan retry SDK:
*
* Kebijakan retry default:
* Saat tidak ada kebijakan retry yang dikonfigurasi, SDK menggunakan StandardRetryer sebagai implementasi default client, dengan konfigurasi default berikut:
* - maxAttempts: menetapkan jumlah maksimum upaya. Default 3
* - maxBackoff: menetapkan waktu backoff maksimum. Default 20 detik
* - baseDelay: menetapkan delay dasar. Default 200 milidetik
* - backoffDelayer: menetapkan algoritma backoff. Secara default menggunakan algoritma backoff FullJitter
* Rumus perhitungan: [0.0, 1.0) * min(2^attempts * baseDelay, maxBackoff)
* - errorRetryable: jenis kesalahan yang dapat di-retry, termasuk kode status HTTP, kode kesalahan layanan, kesalahan client, dan sebagainya
*
* Saat terjadi kesalahan yang dapat di-retry, konfigurasi yang diberikan digunakan untuk memberi jeda lalu mencoba ulang permintaan.
* Total delay permintaan meningkat seiring jumlah retry. Jika konfigurasi default tidak sesuai kebutuhan Anda,
* Anda dapat mengonfigurasi parameter retry atau mengubah implementasi retry.
*/
val region = "cn-hangzhou"
// Contoh konfigurasi kebijakan retry:
// 1. Menyesuaikan jumlah maksimum retry (default 3; diatur ke 5 di sini)
val customRetryer = StandardRetryer.newBuilder()
.setMaxAttempts(5)
.build()
// 2. Menyesuaikan delay backoff
// Sesuaikan baseDelay menjadi 500 milidetik (default 200 ms) dan maxBackoff menjadi 25 detik (default 20 detik)
// val customRetryer = StandardRetryer.newBuilder()
// .setBackoffDelayer(FullJitterBackoff(500.milliseconds, 25.seconds))
// .build()
// 3. Menyesuaikan algoritma backoff
// Gunakan algoritma backoff fixed-delay alih-alih algoritma FullJitter default, dengan jeda 2 detik setiap kali
// val customRetryer = StandardRetryer.newBuilder()
// .setBackoffDelayer(FixedDelayBackoff(2.seconds))
// .build()
// 4. Menonaktifkan kebijakan retry
// Untuk menonaktifkan semua upaya retry, gunakan implementasi NopRetryer
// val customRetryer = NopRetryer()
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
retryer = customRetryer
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Protokol HTTP/HTTPS
Atur disableSsl = true untuk menggunakan HTTP alih-alih HTTPS.
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
suspend fun main() {
val region = "cn-hangzhou"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
// Nonaktifkan permintaan HTTPS
disableSsl = true
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Gunakan titik akhir internal
Gunakan jaringan internal untuk mengakses sumber daya OSS di wilayah yang sama, sehingga mengurangi biaya traffic dan meningkatkan performa.
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
suspend fun main() {
// Pendekatan 1: tentukan Region dan atur useInternalEndpoint ke true
val region = "cn-hangzhou"
// Pendekatan 2: tentukan Region dan Endpoint secara langsung
// val region = "cn-hangzhou"
// val endpoint = "oss-cn-hangzhou-internal.aliyuncs.com"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
useInternalEndpoint = true
// Jika Anda menggunakan pendekatan 2, hapus komentar baris berikut dan beri komentar pada baris di atas
// this.endpoint = endpoint
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Gunakan akselerasi transfer
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
suspend fun main() {
// Pendekatan 1: tentukan Region dan atur useAccelerateEndpoint ke true
val region = "cn-hangzhou"
// Pendekatan 2: tentukan Region dan Endpoint akselerasi transfer secara langsung
// val region = "cn-hangzhou"
// val endpoint = "https://oss-accelerate.aliyuncs.com"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
useAccelerateEndpoint = true
// Jika Anda menggunakan pendekatan 2, hapus komentar baris berikut dan beri komentar pada baris di atas
// this.endpoint = endpoint
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Gunakan domain khusus
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
suspend fun main() {
val region = "cn-hangzhou"
// Masukkan domain privat Anda. Misalnya: https://service.corp.example.com
val endpoint = "https://service.corp.example.com"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
this.endpoint = endpoint
credentialsProvider = EnvironmentVariableCredentialsProvider()
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Gunakan Titik akhir China Government Cloud
Konfigurasikan OSSClient dengan titik akhir Wilayah dan titik akhir.
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
suspend fun main() {
// Tentukan wilayah tempat bucket berada. Misalnya, untuk China North 2 Alibaba Gov Cloud 1, atur Region ke cn-north-2-gov-1
val region = "cn-north-2-gov-1"
// Tentukan titik akhir internal untuk wilayah tempat bucket berada. Misalnya, untuk China North 2 Alibaba Gov Cloud 1
// Untuk menggunakan protokol HTTP, tentukan domain sebagai 'http://oss-cn-north-2-gov-1-internal.aliyuncs.com'
val endpoint = "https://oss-cn-north-2-gov-1-internal.aliyuncs.com"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
this.endpoint = endpoint
credentialsProvider = EnvironmentVariableCredentialsProvider()
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Konfigurasi kredensial akses
OSS Kotlin SDK V2 mendukung berbagai jenis kredensial. Pilih salah satu berdasarkan kebutuhan keamanan dan akses Anda.
Bagaimana cara memilih jenis kredensial?
Use the AccessKey of a RAM user
Untuk aplikasi di lingkungan yang aman dan stabil yang memerlukan akses OSS jangka panjang, inisialisasi penyedia kredensial dengan Pasangan Kunci Akses (AccessKey ID dan AccessKey Secret) dari Pengguna RAM. Metode ini memerlukan manajemen dan rotasi kunci secara manual.
-
Akun Alibaba Cloud memiliki akses penuh ke semua sumber daya. Kebocoran AccessKey menimbulkan risiko keamanan yang signifikan. Gunakan AccessKey Pengguna RAM dengan izin least-privilege sebagai gantinya.
-
Untuk membuat AccessKey Pengguna RAM, buka Create an AccessKey. AccessKey ID dan Secret hanya ditampilkan saat pembuatan. Simpan segera — jika hilang, buat pasangan baru.
Konfigurasi variabel lingkungan
Linux/macOS
-
Tetapkan AccessKey Pengguna RAM sebagai variabel lingkungan:
export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID' export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET' -
Verifikasi:
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)
Contoh kode
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
suspend fun main() {
// Muat kredensial dari variabel lingkungan untuk otentikasi
val credentialsProvider = EnvironmentVariableCredentialsProvider()
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan wilayah tempat bucket berada
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Konfigurasi kredensial statis
Masukkan kredensial secara langsung dalam kode (hanya untuk pengujian).
Jangan menyematkan kredensial dalam aplikasi produksi. Metode ini hanya untuk pengujian.
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.StaticCredentialsProvider
suspend fun main() {
// Buat penyedia kredensial statis, atur secara eksplisit kunci akses
// Ganti dengan AccessKey ID dan AccessKey Secret RAM user Anda
val credentialsProvider = StaticCredentialsProvider(
accessKeyId = "YOUR_ACCESS_KEY_ID",
accessKeySecret = "YOUR_ACCESS_KEY_SECRET"
)
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan wilayah tempat bucket berada
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Use STS temporary credentials
Untuk aplikasi yang memerlukan akses OSS sementara dan terbatas cakupannya, inisialisasi penyedia kredensial dengan kredensial sementara STS (AccessKey ID, AccessKey Secret, dan Security Token). Anda harus melakukan refresh token secara manual sebelum masa berlaku habis.
-
Token STS akan kedaluwarsa pada waktu yang ditentukan saat pembuatan dan tidak dapat digunakan setelah itu.
Konfigurasi variabel lingkungan
-
Ini adalah kredensial sementara STS (AccessKey ID, AccessKey Secret, dan Security Token), bukan Pasangan Kunci Akses Pengguna RAM.
-
AccessKey ID dari STS diawali dengan "STS", contohnya "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>
Contoh kode
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider
suspend fun main() {
// Muat informasi otentikasi yang diperlukan untuk mengakses OSS dari variabel lingkungan, digunakan untuk otentikasi
val credentialsProvider = EnvironmentVariableCredentialsProvider()
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan wilayah tempat bucket berada
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Konfigurasi kredensial statis
Masukkan kredensial sementara secara langsung dalam kode (hanya untuk pengujian).
Jangan menyematkan kredensial dalam aplikasi produksi. Metode ini hanya untuk pengujian.
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.StaticCredentialsProvider
suspend fun main() {
// Masukkan AccessKey ID dan AccessKey Secret sementara yang diperoleh
// Perhatikan bahwa Access Key ID yang diperoleh dari layanan STS diawali dengan STS
val stsAccessKeyId = "STS.****************"
val stsAccessKeySecret = "yourAccessKeySecret"
val stsSecurityToken = "yourSecurityToken"
// Buat penyedia kredensial statis, atur secara eksplisit kunci akses sementara dan token keamanan STS
val credentialsProvider = StaticCredentialsProvider(
accessKeyId = stsAccessKeyId,
accessKeySecret = stsAccessKeySecret,
securityToken = stsSecurityToken
)
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan wilayah tempat bucket berada
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Use custom credentials
Jika jenis kredensial bawaan tidak memenuhi kebutuhan Anda, implementasikan antarmuka CredentialsProvider untuk membuat penyedia kredensial kustom.
Implementasikan antarmuka CredentialsProvider
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.Credentials
import com.aliyun.kotlin.sdk.service.oss2.credentials.CredentialsProvider
class CustomCredentialsProvider : CredentialsProvider {
override suspend fun getCredentials(): Credentials {
// TODO: implementasikan logika pengambilan kredensial kustom Anda
// Kembalikan kredensial jangka panjang
return Credentials("access_key_id", "access_key_secret")
// Kembalikan kredensial sementara STS (jika diperlukan)
// Untuk kredensial sementara, lakukan refresh berdasarkan waktu kedaluwarsa
// return Credentials("sts_access_key_id", "sts_access_key_secret", "security_token")
}
}
suspend fun main() {
// Buat penyedia kredensial kustom
val credentialsProvider = CustomCredentialsProvider()
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan wilayah tempat bucket berada
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Gunakan RefreshCredentialsProvider untuk refresh otomatis
Bungkus penyedia kredensial Anda dengan RefreshCredentialsProvider agar dilakukan refresh secara otomatis:
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.CredentialsProvider
import com.aliyun.kotlin.sdk.service.oss2.credentials.RefreshCredentialsProvider
import kotlin.time.Duration.Companion.seconds
suspend fun main() {
// Penyedia kredensial asli Anda
val baseProvider: CredentialsProvider = CustomCredentialsProvider()
// Bungkus dengan RefreshCredentialsProvider untuk melakukan refresh kredensial secara otomatis
// Interval refresh default adalah 300 detik
val credentialsProvider = RefreshCredentialsProvider(
provider = baseProvider,
refreshInterval = 300.seconds
)
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou"
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
}
}
Anonymous access
Akses sumber daya OSS public-read tanpa kredensial:
import com.aliyun.kotlin.sdk.service.oss2.ClientConfiguration
import com.aliyun.kotlin.sdk.service.oss2.OSSClient
import com.aliyun.kotlin.sdk.service.oss2.credentials.AnonymousCredentialsProvider
suspend fun main() {
// Buat penyedia kredensial anonim
val credentialsProvider = AnonymousCredentialsProvider()
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan wilayah tempat bucket berada
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang telah dibuat untuk operasi selanjutnya...
// Catatan: akses anonim hanya dapat mengakses sumber daya yang memiliki izin public-read
}
}
Jalankan contoh
Jalankan contoh CLI
# Build the project
./gradlew :sample:cli:build
# Masuk ke direktori program contoh
cd sample/cli/build/libs/
# Konfigurasikan kredensial akses melalui variabel lingkungan
export OSS_ACCESS_KEY_ID="your access key id"
export OSS_ACCESS_KEY_SECRET="your access key secret"
# Menggunakan ListBuckets sebagai contoh
java -jar cli-jvm.jar ListBuckets --region cn-hangzhou
Jalankan contoh UI
> - Jalankan `sample.composeApp` atau `sample[jvm]`
> - Masukkan `AccessKeyId`, `AccessKeySecret`, dan `Region`
> - Klik `Set Client` untuk menyelesaikan inisialisasi client
> - Menggunakan ListObjects sebagai contoh, masukkan nama bucket dan klik `ListObjects`
Contoh kode
|
Category |
Description |
Sample code |
|
Bucket |
Buat bucket |
|
|
Daftar bucket |
||
|
Dapatkan info bucket |
||
|
Dapatkan lokasi bucket |
||
|
Dapatkan statistik penyimpanan bucket |
||
|
Hapus bucket |
||
|
Periksa apakah bucket ada |
||
|
Upload |
Unggah sederhana |
|
|
Unggah Tambahan |
||
|
Unggah multi-bagian - Inisiasi |
||
|
Unggah multi-bagian - Unggah bagian |
||
|
Unggah multi-bagian - Selesaikan |
||
|
Daftar unggah multi-bagian |
||
|
Daftar bagian yang diunggah |
||
|
Batalkan unggah multi-bagian |
||
|
Download |
Unduh sederhana |
|
|
Unduh ke file lokal |
||
|
Object management |
Salin objek |
|
|
Periksa apakah objek ada (HeadObject) |
||
|
Periksa apakah objek ada (IsObjectExist) |
||
|
Daftar objek |
||
|
Daftar objek V2 |
||
|
Hapus objek |
||
|
Hapus beberapa objek |
||
|
Dapatkan metadata objek |
||
|
Archive |
Pulihkan objek |
|
|
Symbolic link |
Buat tautan simbolik |
|
|
Dapatkan tautan simbolik |
||
|
Object tagging |
Tetapkan tag objek |
|
|
Dapatkan tag objek |
||
|
Hapus tag objek |
||
|
Access control |
Tetapkan ACL bucket |
|
|
Dapatkan ACL bucket |
||
|
Tetapkan ACL objek |
||
|
Dapatkan ACL objek |
||
|
Versioning |
Atur Pengendalian Versi |
|
|
Dapatkan status Pengendalian versi |
||
|
Presigning |
Hasilkan URL yang ditandatangani sebelumnya |
|
|
System |
Kueri informasi Titik akhir |