Gunakan OSS Kotlin SDK V2 untuk mengintegrasikan Alibaba Cloud Object Storage Service (OSS) ke dalam aplikasi Kotlin dan Android Anda. SDK ini memungkinkan Anda mengunggah, mengunduh, dan mengelola file, serta ideal untuk aplikasi seluler dan pengembang lintas platform yang perlu melakukan operasi penyimpanan file di cloud.
GitHub | Panduan Pengembang OSS Kotlin SDK V2
Integrasi cepat
Proses integrasi OSS Kotlin SDK V2 adalah sebagai berikut:
Persiapkan lingkungan
Kotlin: Versi 2.1.0 atau lebih baru
Java: Java 8+ diperlukan untuk runtime; Java 11+ diperlukan untuk membangun dari source.
Platform yang Didukung: Android, Desktop (JVM)
Periksa versi Kotlin di file build.gradle.kts proyek Anda. Jika Kotlin belum terinstal atau versinya terlalu lama, tingkatkan ke versi yang sesuai.Instal SDK
Kami menyarankan menggunakan Gradle untuk menginstal OSS Kotlin SDK V2.
Metode 1: Dependensi Gradle (Direkomendasikan)
Tambahkan dependensi berikut ke file build.gradle.kts:
dependencies {
implementation("com.aliyun:kotlin-oss-v2:latest-version>")
// Untuk fitur ekstensi (seperti antarmuka cross-origin resource sharing)
// implementation("com.aliyun:kotlin-oss-v2-extension:0.1.0-dev")
}Deskripsi Paket:
kotlin-oss-v2: Menyediakan antarmuka dasar bucket, antarmuka terkait objek, dan antarmuka lanjutan (paginator, presigning).kotlin-oss-v2-extension: Berisi antarmuka terkait konfigurasi, seperti antarmuka cross-origin resource sharing.
Metode 2: Membangun dari sumber
Ambil versi terbaru OSS Kotlin SDK V2 dari GitHub, lalu bangun dan instal menggunakan Gradle:
# Clone proyek
$ git clone https://github.com/aliyun/alibabacloud-oss-kotlin-sdk-v2.git
# Masuk ke direktori
$ cd alibabacloud-oss-kotlin-sdk-v2/
# Publikasikan ke MavenLocal
$ ./gradlew clean publishToMavenLocalTambahkan mavenLocal ke konfigurasi repositori Anda:
repositories {
...
mavenLocal()
}Kemudian, tambahkan dependensi ke proyek Anda.
implementation("com.aliyun:kotlin-oss-v2:<latest-version>")
// implementation("com.aliyun:kotlin-oss-v2-extension:<latest-version>")Metode 3: Impor paket 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 pengemasan
$ ./gradlew :oss-sdk:assemble
# ./gradlew :oss-sdk-extension:assemble
# Ambil aar sebagai contoh
# Masuk ke direktori output pengemasan. Paket dihasilkan di direktori ini.
$ cd oss-sdk/build/outputs/aar && ls
# cd oss-sdk-extension/build/outputs/aar && lsKonfigurasikan kredensial akses
Atur pasangan AccessKey pengguna RAM sebagai variabel lingkungan untuk kredensial akses.
Di Konsol RAM, buat pengguna RAM yang menggunakan pasangan AccessKey permanen untuk akses. Simpan pasangan AccessKey tersebut, lalu berikan izin AliyunOSSFullAccess kepada pengguna tersebut.Linux
Jalankan perintah berikut di command-line interface (CLI) 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 agar perubahan berlaku.
source ~/.bashrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
Jalankan perintah berikut di terminal untuk melihat jenis shell default.
echo $SHELLLakukan langkah berikut berdasarkan 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 agar perubahan berlaku.
source ~/.zshrcJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.
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 agar perubahan berlaku.
source ~/.bash_profileJalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
Jalankan perintah berikut di CMD.
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
Jalankan perintah berikut di PowerShell.
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
Inisialisasi client
Inisialisasi OSSClient dengan region dan endpoint.
OSSClient mengimplementasikan antarmuka
Closeable. Saat menggunakan fungsi ekstensiuse, resource akan dilepas secara otomatis sehingga Anda tidak perlu memanggilclosesecara manual.Karena pembuatan dan penghapusan OSSClient memakan waktu, gunakan pola singleton untuk menggunakan kembali instans OSSClient. Untuk mencegah kebocoran resource, panggil
closesecara manual sebelum aplikasi berhenti.
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 SDK default.
// Muat kredensial dari variabel lingkungan.
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
}
OSSClient.create(config).use { client ->
// Gunakan paginator untuk mencantumkan semua bucket.
client.listBucketsPaginator(ListBucketsRequest {}).collect { result ->
result.buckets?.forEach { bucket ->
println("bucket: name:${bucket.name}, region:${bucket.region}, storageClass:${bucket.storageClass}")
}
}
}
}Output menampilkan bucket untuk akun saat ini di semua region:
bucket: name: examplebucket01, region: cn-hangzhou, storageClass: Standard
bucket: name: examplebucket02, region: cn-hangzhou, storageClass: StandardKonfigurasi client
Gunakan nama domain kustom
Saat mengakses OSS menggunakan nama domain default, Anda mungkin mengalami masalah seperti akses file diblokir atau ketidakmampuan untuk melihat pratinjau file. Namun, mengakses OSS melalui nama domain kustom memungkinkan browser melihat pratinjau file secara langsung dan mendukung akselerasi CDN.
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 region tempat bucket Anda berada. Misalnya, gunakan "cn-hangzhou" untuk China (Hangzhou).
val region = "cn-hangzhou"
// Masukkan nama domain kustom Anda. Contoh: www.example-***.com
val endpoint = "https://www.example-***.com"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
this.endpoint = endpoint
// Atur useCName ke true untuk mengaktifkan CNAME. Jika tidak, domain kustom tidak akan berfungsi.
this.useCName = true
credentialsProvider = EnvironmentVariableCredentialsProvider()
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk melakukan operasi selanjutnya...
}
}Kontrol 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 koneksi. Default adalah 10 detik.
connectTimeout = 30.seconds
// Atur timeout baca/tulis data. Default adalah 20 detik.
readWriteTimeout = 30.seconds
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk melakukan 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() {
/*
* Catatan konfigurasi kebijakan retry SDK:
*
* Kebijakan retry default:
* Jika tidak ada kebijakan retry yang dikonfigurasi, SDK menggunakan StandardRetryer secara default dengan pengaturan berikut:
* - maxAttempts: Jumlah maksimum upaya. Default adalah 3.
* - maxBackoff: Waktu backoff maksimum. Default adalah 20 detik.
* - baseDelay: Waktu delay dasar. Default adalah 200 milidetik.
* - backoffDelayer: Algoritma backoff. Default menggunakan FullJitter.
* Formula: [0.0, 1.0) * min(2^attempts * baseDelay, maxBackoff)
* - errorRetryable: Jenis kesalahan yang dapat diretry, termasuk kode status HTTP, kode kesalahan layanan, dan kesalahan klien.
*
* Saat terjadi kesalahan yang dapat diretry, permintaan akan ditunda dan dicoba ulang berdasarkan pengaturan ini.
* Total penundaan permintaan meningkat seiring setiap upaya retry.
* Jika pengaturan default tidak memenuhi kebutuhan Anda, konfigurasikan parameter retry atau ubah implementasi retry.
*/
val region = "cn-hangzhou"
// Contoh konfigurasi kebijakan retry:
// 1. Sesuaikan jumlah maksimum upaya retry (default adalah 3; diatur ke 5 di sini)
val customRetryer = StandardRetryer.newBuilder()
.setMaxAttempts(5)
.build()
// 2. Sesuaikan delay backoff
// Atur baseDelay ke 500 ms (default 200 ms) dan maxBackoff ke 25 s (default 20 s)
// val customRetryer = StandardRetryer.newBuilder()
// .setBackoffDelayer(FullJitterBackoff(500.milliseconds, 25.seconds))
// .build()
// 3. Sesuaikan algoritma backoff
// Gunakan backoff delay tetap alih-alih FullJitter, dengan delay 2 detik
// val customRetryer = StandardRetryer.newBuilder()
// .setBackoffDelayer(FixedDelayBackoff(2.seconds))
// .build()
// 4. Nonaktifkan retry sepenuhnya
// Gunakan NopRetryer untuk menonaktifkan semua upaya retry
// val customRetryer = NopRetryer()
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
retryer = customRetryer
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk melakukan operasi selanjutnya...
}
}Protokol HTTP/HTTPS
Anda dapat mengatur 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()
// Gunakan HTTP alih-alih HTTPS
disableSsl = true
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk melakukan operasi selanjutnya...
}
}Gunakan titik akhir internal dalam satu region
Mengakses resource OSS dalam satu region menggunakan titik akhir internal mengurangi biaya trafik dan meningkatkan kecepatan akses.
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() {
// Metode 1: Tentukan region dan atur useInternalEndpoint ke true
val region = "cn-hangzhou"
// Metode 2: Langsung tentukan region dan endpoint
// 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 menggunakan Metode 2, hapus komentar baris berikut dan beri komentar pada baris sebelumnya
// this.endpoint = endpoint
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk melakukan operasi selanjutnya...
}
}Gunakan titik akhir percepatan
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() {
// Metode 1: Tentukan region dan atur useAccelerateEndpoint ke true
val region = "cn-hangzhou"
// Metode 2: Langsung tentukan region dan titik akhir percepatan
// val region = "cn-hangzhou"
// val endpoint = "https://oss-accelerate.aliyuncs.com"
val config = ClientConfiguration.loadDefault().apply {
this.region = region
credentialsProvider = EnvironmentVariableCredentialsProvider()
useAccelerateEndpoint = true
// Jika menggunakan Metode 2, hapus komentar baris berikut dan beri komentar pada baris sebelumnya
// this.endpoint = endpoint
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk melakukan operasi selanjutnya...
}
}Gunakan domain privat
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. Contoh: 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 dibuat untuk melakukan operasi selanjutnya...
}
}Gunakan Titik Akhir Gov Cloud
Contoh berikut menunjukkan cara mengonfigurasi OSSClient menggunakan endpoint Alibaba Gov Cloud.
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 region tempat bucket Anda berada. Untuk Alibaba Gov Cloud 1 di China North 2, gunakan "cn-north-2-gov-1".
val region = "cn-north-2-gov-1"
// Tentukan endpoint internal untuk region tersebut. Untuk Alibaba Gov Cloud 1 di China North 2:
// Untuk menggunakan HTTP, atur endpoint ke '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 dibuat untuk melakukan operasi selanjutnya...
}
}Konfigurasikan kredensial akses
Alibaba Cloud Object Storage Service (OSS) Kotlin Software Development Kit (SDK) V2 menyediakan beberapa metode untuk mengonfigurasi kredensial akses. Pilih metode inisialisasi berdasarkan kebutuhan autentikasi dan otorisasi Anda.
Cara memilih kredensial akses
Gunakan AccessKey pengguna RAM
Jika aplikasi Anda dideploy di lingkungan aman dan stabil, memerlukan akses jangka panjang ke OSS, dan tidak mendukung rotasi kredensial yang sering, Anda dapat menginisialisasi penyedia kredensial dengan pasangan AccessKey (ID AccessKey dan rahasia AccessKey) dari akun Alibaba Cloud atau pengguna Resource Access Management (RAM). Metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan.
Akun Alibaba Cloud memiliki izin penuh untuk semua resource. 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 minimum yang diperlukan.
Untuk informasi selengkapnya tentang cara membuat pasangan AccessKey untuk pengguna RAM, lihat Buat Pasangan AccessKey. ID AccessKey dan rahasia AccessKey pengguna RAM hanya ditampilkan pada saat pembuatan. Segera simpan informasi tersebut. Jika Anda kehilangan pasangan AccessKey, 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)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 kredensial dari variabel lingkungan untuk verifikasi identitas.
val credentialsProvider = EnvironmentVariableCredentialsProvider()
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan region tempat bucket berada.
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk operasi selanjutnya...
}
}Konfigurasikan kredensial statis
Contoh kode berikut menunjukkan cara menyematkan kredensial akses secara langsung dan secara eksplisit menentukan pasangan AccessKey yang akan digunakan.
Jangan menyematkan kredensial akses dalam aplikasi di lingkungan 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 dan atur secara eksplisit pasangan AccessKey.
// Ganti dengan ID AccessKey dan rahasia AccessKey pengguna RAM Anda.
val credentialsProvider = StaticCredentialsProvider(
accessKeyId = "YOUR_ACCESS_KEY_ID",
accessKeySecret = "YOUR_ACCESS_KEY_SECRET"
)
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan region tempat bucket berada.
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk operasi selanjutnya...
}
}Gunakan kredensial akses sementara STS
Jika aplikasi Anda memerlukan akses sementara ke OSS, Anda dapat menginisialisasi penyedia kredensial dengan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan token Security Token Service) yang diperoleh dari Security Token Service (STS). Metode ini mengharuskan Anda memelihara token STS secara manual, yang meningkatkan risiko keamanan dan kompleksitas pemeliharaan. Selain itu, untuk mengakses OSS beberapa kali, Anda harus merefresh token STS secara manual.
Anda harus menentukan waktu hidup (TTL) saat menghasilkan token STS. Token tersebut akan kedaluwarsa secara otomatis setelah TTL yang ditentukan.
Konfigurasikan variabel lingkungan
Metode ini menggunakan kredensial identitas sementara (ID AccessKey, rahasia AccessKey, dan token Security Token Service) 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>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 autentikasi yang diperlukan untuk mengakses OSS dari variabel lingkungan untuk verifikasi identitas.
val credentialsProvider = EnvironmentVariableCredentialsProvider()
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan region tempat bucket berada.
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk operasi selanjutnya...
}
}Konfigurasikan kredensial statis
Contoh kode berikut menunjukkan cara menyematkan kredensial akses secara langsung dan secara eksplisit menentukan pasangan AccessKey sementara yang akan digunakan.
Jangan menyematkan kredensial akses dalam aplikasi di lingkungan 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() {
// Tentukan ID AccessKey sementara dan rahasia AccessKey sementara.
// Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan "STS."
val stsAccessKeyId = "STS.****************"
val stsAccessKeySecret = "yourAccessKeySecret"
val stsSecurityToken = "yourSecurityToken"
// Buat penyedia kredensial statis dan atur secara eksplisit pasangan AccessKey sementara dan token keamanan STS.
val credentialsProvider = StaticCredentialsProvider(
accessKeyId = stsAccessKeyId,
accessKeySecret = stsAccessKeySecret,
securityToken = stsSecurityToken
)
val config = ClientConfiguration.loadDefault().apply {
this.region = "cn-hangzhou" // Tentukan region tempat bucket berada.
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk operasi selanjutnya...
}
}Gunakan kredensial akses kustom
Jika metode konfigurasi kredensial sebelumnya tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan cara menyediakan kredensial. Kotlin SDK memungkinkan Anda menyesuaikan penyedia kredensial dengan mengimplementasikan antarmuka CredentialsProvider.
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 kustom Anda untuk memperoleh kredensial.
// Kembalikan kredensial jangka panjang.
return Credentials("access_key_id", "access_key_secret")
// Kembalikan kredensial sementara STS jika diperlukan.
// Untuk kredensial sementara, Anda harus merefresh berdasarkan waktu kedaluwarsanya.
// 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 region tempat bucket berada.
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk operasi selanjutnya...
}
}Gunakan RefreshCredentialsProvider untuk merefresh kredensial secara otomatis
Untuk merefresh kredensial secara otomatis, Anda dapat membungkus penyedia kredensial Anda dengan RefreshCredentialsProvider:
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 merefresh 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 dibuat untuk operasi selanjutnya...
}
}Akses anonim
Jika Anda hanya perlu mengakses resource OSS baca-publik, Anda dapat menggunakan akses anonim tanpa menyediakan kredensial apa pun.
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 region tempat bucket berada.
this.credentialsProvider = credentialsProvider
}
OSSClient.create(config).use { client ->
// Gunakan client yang dibuat untuk operasi selanjutnya...
// Catatan: Akses anonim hanya dapat digunakan untuk mengakses resource baca-publik.
}
}Jalankan contoh
Jalankan contoh CLI
# Kompilasi proyek
./gradlew :sample:cli:build
# Masuk ke folder program contoh
cd sample/cli/build/libs/
# Konfigurasikan kredensial akses menggunakan variabel lingkungan
export OSS_ACCESS_KEY_ID="your access key id"
export OSS_ACCESS_KEY_SECRET="your access key secret"
# Contoh: ListBuckets
java -jar cli-jvm.jar ListBuckets --region cn-hangzhouJalankan contoh UI
> - Jalankan `sample.composeApp` atau `sample[jvm]`.
> - Masukkan `AccessKeyId`, `AccessKeySecret`, dan `Region`.
> - Klik `Set Client` untuk menginisialisasi client.
> - Sebagai contoh, untuk mencantumkan objek, masukkan nama bucket dan klik `ListObjects`.Kode contoh
Kategorisasi fitur | Deskripsi contoh | Kode contoh |
Buckets | Buat bucket | |
Cantumkan bucket | ||
Ambil Informasi Bucket | ||
Dapatkan region bucket | ||
Ambil statistik kapasitas penyimpanan | ||
Hapus bucket | ||
Periksa apakah bucket ada | ||
Unggah File | Unggah sederhana | |
Unggah Tambahan | ||
Unggah multi-bagian: Inisialisasi | ||
Unggah multi-bagian: Unggah bagian | ||
Unggah multi-bagian: Selesaikan unggahan | ||
Cantumkan tugas unggah multi-bagian | ||
Cantumkan bagian yang diunggah | ||
Batalkan unggahan multi-bagian | ||
Unduh File | Unduh sederhana | |
Unduh objek ke file lokal | ||
Manajemen File | Salin File | |
Periksa apakah objek ada | ||
Periksa apakah objek ada | ||
Cantumkan file. | ||
Cantumkan objek V2 | ||
Hapus file | ||
Hapus beberapa objek | ||
Dapatkan metadata objek | ||
Objek arsip | Pulihkan File | |
Tautan simbolik | Buat tautan simbolik | |
Dapatkan tautan simbolik | ||
Tagging objek | Atur tag objek | |
Dapatkan tag objek | ||
Hapus tag objek | ||
Kontrol akses | Atur ACL bucket | |
Dapatkan ACL bucket | ||
Atur ACL objek | ||
Dapatkan ACL objek | ||
Pengendalian versi | Atur pengendalian versi | |
Dapatkan status pengendalian versi | ||
URL yang ditandatangani | Hasilkan URL yang ditandatangani | |
Fitur sistem | Kueri Informasi Endpoint |