All Products
Search
Document Center

Object Storage Service:OSS Kotlin SDK V2 (Preview)

Last Updated:Mar 04, 2026

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:

image

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 publishToMavenLocal

Tambahkan 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 && ls

Konfigurasikan 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

  1. 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'" >> ~/.bashrc
  2. Jalankan perintah berikut agar perubahan berlaku.

    source ~/.bashrc
  3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.

    echo $OSS_ACCESS_KEY_ID
    echo $OSS_ACCESS_KEY_SECRET

macOS

  1. Jalankan perintah berikut di terminal untuk melihat jenis shell default.

    echo $SHELL
  2. Lakukan langkah berikut berdasarkan jenis shell default Anda.

    Zsh

    1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.zshrc.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc
    2. Jalankan perintah berikut agar perubahan berlaku.

      source ~/.zshrc
    3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

    Bash

    1. Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file ~/.bash_profile.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile
    2. Jalankan perintah berikut agar perubahan berlaku.

      source ~/.bash_profile
    3. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.

      echo $OSS_ACCESS_KEY_ID
      echo $OSS_ACCESS_KEY_SECRET

Windows

CMD

  1. Jalankan perintah berikut di CMD.

    setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
    setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
  2. Jalankan perintah berikut untuk memeriksa apakah variabel lingkungan telah berlaku.

    echo %OSS_ACCESS_KEY_ID%
    echo %OSS_ACCESS_KEY_SECRET%

PowerShell

  1. 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)
  2. 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 ekstensi use, resource akan dilepas secara otomatis sehingga Anda tidak perlu memanggil close secara manual.

  • Karena pembuatan dan penghapusan OSSClient memakan waktu, gunakan pola singleton untuk menggunakan kembali instans OSSClient. Untuk mencegah kebocoran resource, panggil close secara 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: Standard

Konfigurasi client

Konfigurasi apa saja yang didukung oleh client?

Nama Parameter

Deskripsi

region

(Wajib) Region tempat permintaan dikirim.

credentialsProvider

(Wajib) Atur kredensial akses.

endpoint

Endpoint

httpTransport

Lapisan transport HTTP.

retryMaxAttempts

Jumlah maksimum upaya untuk permintaan HTTP. Default adalah 3.

retryer

Implementasi retry untuk permintaan HTTP.

connectTimeout

Timeout koneksi. Default adalah 10 detik.

readWriteTimeout

Timeout baca/tulis data. Default adalah 20 detik.

insecureSkipVerify

Lewati verifikasi sertifikat SSL. Sertifikat SSL diverifikasi secara default.

enabledRedirect

Aktifkan pengalihan HTTP. Dinonaktifkan secara default.

proxyHost

Atur server proxy.

signatureVersion

Versi signature. Default adalah v4.

disableSsl

Anda tidak perlu mengonfigurasi permintaan HTTPS karena HTTPS digunakan secara default.

usePathStyle

Gunakan permintaan gaya path (bukan permintaan gaya virtual-hosted). Default menggunakan domain bucket-hosted.

useCName

Gunakan nama domain kustom. Dinonaktifkan secara default.

useDualStackEndpoint

Gunakan titik akhir dual-stack. Dinonaktifkan secara default.

useAccelerateEndpoint

Gunakan titik akhir percepatan. Dinonaktifkan secara default.

useInternalEndpoint

Menentukan apakah akan menggunakan titik akhir internal dalam satu region untuk akses. Opsi ini dinonaktifkan secara default.

additionalHeaders

Tentukan header permintaan tambahan yang ditandatangani. Hanya berlaku dengan signature V4.

userAgent

Tentukan informasi User-Agent tambahan.

disableUploadCRC64Check

Nonaktifkan pemeriksaan CRC-64 pada unggahan. Diaktifkan secara default.

disableDownloadCRC64Check

Nonaktifkan pemeriksaan CRC-64 pada unduhan. Diaktifkan secara default.

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

Metode inisialisasi penyedia kredensial

Skenario

Dukungan Kotlin SDK V2

Kredensial dasar

Validitas kredensial

Metode rotasi atau refresh kredensial

Gunakan AccessKey pengguna RAM

Untuk aplikasi yang dideploy di lingkungan aman dan stabil yang tidak rentan terhadap serangan eksternal. Aplikasi ini memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa rotasi kredensial yang sering.

Dukungan bawaan

AccessKey

Jangka panjang

Rotasi manual

Gunakan kredensial akses sementara STS

Untuk aplikasi yang dideploy di lingkungan tidak tepercaya. Anda ingin mengontrol periode validitas dan izin untuk akses.

Dukungan bawaan

Token STS

Sementara

Refresh manual

Gunakan kredensial akses kustom

Jika metode konfigurasi kredensial sebelumnya tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan cara memperoleh kredensial.

Dukungan bawaan

Kustom

Kustom

Custom

Akses anonim

Untuk mengakses resource OSS baca-publik tanpa menyediakan kredensial apa pun.

Dukungan bawaan

Tidak ada

Tidak ada

Tidak ada

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.

Penting
  • 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

  1. 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'
  2. 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.

Peringatan

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

Penting
  • 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.

Peringatan

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-hangzhou

Jalankan 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

PutBucket.kt

Cantumkan bucket

ListBuckets.kt

Ambil Informasi Bucket

GetBucketInfo.kt

Dapatkan region bucket

GetBucketLocation.kt

Ambil statistik kapasitas penyimpanan

GetBucketStat.kt

Hapus bucket

DeleteBucket.kt

Periksa apakah bucket ada

IsBucketExist.kt

Unggah File

Unggah sederhana

PutObject.kt

Unggah Tambahan

AppendObject.kt

Unggah multi-bagian: Inisialisasi

InitiateMultipartUpload.kt

Unggah multi-bagian: Unggah bagian

UploadPart.kt

Unggah multi-bagian: Selesaikan unggahan

CompleteMultipartUpload.kt

Cantumkan tugas unggah multi-bagian

ListMultipartUploads.kt

Cantumkan bagian yang diunggah

ListParts.kt

Batalkan unggahan multi-bagian

AbortMultipartUpload.kt

Unduh File

Unduh sederhana

GetObject.kt

Unduh objek ke file lokal

GetObjectToFile.kt

Manajemen File

Salin File

CopyObject.kt

Periksa apakah objek ada

HeadObject.kt

Periksa apakah objek ada

IsObjectExist.kt

Cantumkan file.

ListObjects.kt

Cantumkan objek V2

ListObjectsV2.kt

Hapus file

DeleteObject.kt

Hapus beberapa objek

DeleteMultipleObjects.kt

Dapatkan metadata objek

GetObjectMeta.kt

Objek arsip

Pulihkan File

RestoreObject.kt

Tautan simbolik

Buat tautan simbolik

PutSymlink.kt

Dapatkan tautan simbolik

GetSymlink.kt

Tagging objek

Atur tag objek

PutObjectTagging.kt

Dapatkan tag objek

GetObjectTagging.kt

Hapus tag objek

DeleteObjectTagging.kt

Kontrol akses

Atur ACL bucket

PutBucketAcl.kt

Dapatkan ACL bucket

GetBucketAcl.kt

Atur ACL objek

PutObjectAcl.kt

Dapatkan ACL objek

GetObjectAcl.kt

Pengendalian versi

Atur pengendalian versi

PutBucketVersioning.kt

Dapatkan status pengendalian versi

GetBucketVersioning.kt

URL yang ditandatangani

Hasilkan URL yang ditandatangani

Presign.kt

Fitur sistem

Kueri Informasi Endpoint

DescribeRegions.kt