全部产品
Search
文档中心

Object Storage Service:OSS C# SDK V2

更新时间:Mar 26, 2026

GitHub | SDK releases

Quick start

Ikuti langkah-langkah berikut untuk mulai menggunakan OSS SDK for C# 2.0:

image

Environment preparation

  • Memerlukan .NET Framework 4.7.1 atau versi yang lebih baru.

  • Memerlukan .NET Standard 2.0 atau versi yang lebih baru.

  • Memerlukan .NET 5.0 atau versi yang lebih baru.

  • Jika lingkungan komputasi Anda tidak memenuhi persyaratan ini, ikuti langkah-langkah berikut:

    • Untuk .NET Framework: Unduh dan instal .NET Framework 4.7.1 atau versi yang lebih baru dari situs resmi Microsoft.

    • Untuk .NET Standard: Sebagai spesifikasi, .NET Standard didukung oleh implementasi .NET seperti .NET Framework atau .NET. Pastikan Anda telah menginstal implementasi .NET yang kompatibel.

    • Untuk .NET: Unduh dan instal .NET 5.0 atau versi yang lebih baru dari situs resmi .NET.

Install the SDK

Kami menyarankan menggunakan versi terbaru OSS SDK for C# V2 agar kode contoh dalam topik ini berjalan sebagaimana mestinya.

Install using NuGet

  • Periksa apakah NuGet sudah terinstal:

    • Pastikan NuGet Package Manager telah terinstal di Visual Studio. Jika belum, buka Visual Studio Installer melalui ToolsGet Tools and Features. Pada tab Workloads, pilih .NET desktop development atau ASP.NET and web development. Workload ini secara otomatis menyertakan NuGet Package Manager.

  • Buka proyek:

    • Buat proyek baru atau buka proyek yang sudah ada di Visual Studio.

  • Buka NuGet Package Manager:

    • Pada menu bar, pilih ToolsNuGet Package ManagerManage NuGet Packages for Solution.

  • Cari dan instal SDK:

    • Pada tab Browse di NuGet Package Manager, cari AlibabaCloud.OSS.V2.

    • Dalam hasil pencarian, temukan dan pilih AlibabaCloud.OSS.V2, lalu lihat detailnya dan pilih versi stabil terbaru.

    • Klik Install dan tunggu hingga proses instalasi selesai.

  • Verifikasi instalasi:

    • Setelah instalasi selesai, AlibabaCloud.OSS.V2 akan muncul di bawah References pada Solution Explorer. Anda kini dapat menggunakan fitur-fitur SDK dalam proyek Anda.

Import project

  • Clone repositori GitHub:

    • Buka command prompt atau Git Bash, lalu jalankan perintah berikut untuk meng-clone repositori:

      git clone https://github.com/aliyun/alibabacloud-oss-csharp-sdk-v2.git
  • Tambahkan proyek ke solusi Anda:

    • Di Visual Studio, klik kanan Solution Anda dan pilih AddExisting Project....

    • Arahkan ke direktori kode sumber yang telah di-clone, pilih file AlibabaCloud.OSS.V2.csproj, lalu klik Open.

  • Tambahkan referensi proyek:

    • Klik kanan proyek Anda dan pilih AddReference....

    • Pada kotak dialog, buka tab Projects, pilih proyek AlibabaCloud.OSS.V2, lalu klik OK.

Configure access credentials

Konfigurasikan kredensial akses dengan menggunakan pasangan AccessKey milik pengguna RAM.

  1. Dari Konsol RAM, buat pengguna RAM dengan permanent AccessKey pair, simpan pasangan AccessKey tersebut, lalu berikan izin AliyunOSSFullAccess kepada pengguna tersebut.

  2. Atur variabel lingkungan menggunakan pasangan AccessKey pengguna RAM.

    Linux

    1. Jalankan perintah berikut untuk menambahkan 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
      1. Jalankan perintah berikut untuk menerapkan perubahan.

        source ~/.bashrc
      2. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    macOS

    1. Jalankan perintah berikut untuk memeriksa shell default Anda.

      echo $SHELL
      1. Ikuti langkah-langkah berikut sesuai dengan shell default Anda.

        Zsh

        1. Jalankan perintah berikut untuk menambahkan 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 untuk menerapkan perubahan.

          source ~/.zshrc
        3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

        Bash

        1. Jalankan perintah berikut untuk menambahkan 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 untuk menerapkan perubahan.

          source ~/.bash_profile
        3. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Jalankan perintah berikut di CMD untuk mengatur variabel lingkungan.

      setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID"
      setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"
      1. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.

        echo %OSS_ACCESS_KEY_ID%
        echo %OSS_ACCESS_KEY_SECRET%

    PowerShell

    1. Jalankan perintah berikut di PowerShell untuk mengatur variabel lingkungan.

      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
      [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
      1. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.

        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)

Initialize the client

Untuk menjalankan contoh ini, inisialisasi OSSClient dengan wilayah dan titik akhir.

using System.Text; // Impor namespace System.Text untuk menangani pengkodean karakter, seperti UTF-8.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk SDK Alibaba Cloud OSS guna menyederhanakan kode selanjutnya.

var region = "cn-hangzhou"; // Wajib diisi. Wilayah tempat bucket berada. Contohnya, untuk China (Hangzhou), atur parameter ini menjadi "cn-hangzhou".
var bucket = "your-bucket-name";  // Wajib diisi. Nama bucket tujuan.
var endpoint = null as string;  // Opsional. Titik akhir untuk mengakses OSS. Jika null, SDK akan menghasilkan titik akhir berdasarkan wilayah. Contohnya, titik akhir untuk China (Hangzhou) adalah "https://oss-cn-hangzhou.aliyuncs.com".
var key = "your-object-key"; // Wajib diisi. Kunci objek yang akan diunggah. Format contoh: folder/objectName.

// Muat konfigurasi SDK default. Ini secara otomatis membaca kredensial (seperti pasangan AccessKey) dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit atur penyedia untuk menggunakan variabel lingkungan dalam autentikasi (OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET).
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah dalam konfigurasi.
cfg.Region = region;
// Jika titik akhir kustom ditentukan, maka akan menggantikan nilai default.
if(endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Buat instance klien OSS menggunakan konfigurasi tersebut.
using var client = new OSS.Client(cfg);

// Tentukan konten yang akan diunggah. Contoh ini menggunakan string, tetapi Anda juga dapat menggunakan aliran file atau array byte.
var content = "hello oss!";
// Konversi string menjadi array byte berkode UTF-8 dan bungkus dalam MemoryStream.
// MemoryStream cocok untuk unggahan kecil. Untuk file besar, pertimbangkan menggunakan FileStream.
var bodyStream = new MemoryStream(Encoding.UTF8.GetBytes(content));

// Unggah objek secara asinkron.
var result = await client.PutObjectAsync(new OSS.Models.PutObjectRequest()
{
    Bucket = bucket,    // Nama bucket tujuan.
    Key = key,          // Kunci unik untuk objek dalam bucket. 
    Body = bodyStream   // Aliran konten yang akan diunggah.
});

// Cetak hasil unggahan.
Console.WriteLine("PutObject done");
Console.WriteLine($"StatusCode: {result.StatusCode}");  // Kode status HTTP.
Console.WriteLine($"RequestId: {result.RequestId}");  // ID permintaan, digunakan untuk troubleshooting bersama Alibaba Cloud.
Console.WriteLine("Response Headers:");  // Header respons.
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Cetak semua header respons.

Unggahan yang berhasil menghasilkan output berikut:

PutObject done
StatusCode: 200
RequestId: 68808D6D6A91E53037F7AAE9
Response Headers:
Server : AliyunOSS
Date : Wed, 23 Jul 2025 07:21:17 GMT
Connection : keep-alive
x-oss-request-id : 68808D6D6A91E53037F7AAE9
Vary : Origin
ETag : "968205D07B5A124D6ADA9336826C2C90"
x-oss-hash-crc64ecma : 11833582957755287462
x-oss-version-id : CAEQpgEYgYCA3fPQ2MEZIiA2ZmI4NGZkZWQzMWY0ZDZkOTFmMjUxYzRkNGMxODdkZg--
x-oss-server-time : 90
Content-Length : 0
Content-MD5 : loIF0HtaEk1q2pM2gmwskA==

Client configuration

Opsi konfigurasi klien

Parameter

Description

Example

Region

(Wajib diisi) Wilayah tujuan untuk permintaan.

Configuration.Region = "cn-hangzhou"

Endpoint

Titik akhir layanan.

Configuration.Endpoint = "oss-cn-hangzhou.aliyuncs.com"

RetryMaxAttempts

Jumlah maksimum percobaan ulang untuk permintaan yang gagal.

Configuration.RetryMaxAttempts = 5

Retryer

Implementasi retry untuk permintaan HTTP.

Configuration.Retryer = new Retry.DefaultRetryer()

HttpTransport

Klien HTTP kustom.

Configuration.HttpTransport = new HttpTransport()

CredentialsProvider

(Wajib diisi) Penyedia kredensial akses.

Configuration.CredentialsProvider = new EnvironmentVariableCredentialsProvider()

UsePathStyle

Menentukan apakah akan menggunakan akses gaya path. Secara default, klien menggunakan akses gaya virtual-hosted.

Configuration.UsePathStyle = true

UseCName

Menentukan apakah akan menggunakan nama domain kustom. Nilai default adalah false.

Configuration.UseCName = true

ConnectTimeout

Timeout untuk membuat koneksi. Nilai default adalah 10 detik.

Configuration.ConnectTimeout = TimeSpan.FromSeconds(30)

ReadWriteTimeout

Timeout untuk membaca dan menulis data. Nilai default adalah 20 detik.

Configuration.ReadWriteTimeout = TimeSpan.FromMinutes(2)

InsecureSkipVerify

Menentukan apakah akan melewati verifikasi sertifikat SSL. Nilai default adalah false.

Configuration.InsecureSkipVerify = true

EnabledRedirect

Menentukan apakah akan mengaktifkan pengalihan HTTP. Nilai default adalah false.

Configuration.EnabledRedirect = true

ProxyHost

Alamat server proxy.

Configuration.ProxyHost = "http://proxy.example.com:8080"

SignatureVersion

Versi signature. Nilai default adalah "v4".

Configuration.SignatureVersion = "v4"

DisableSsl

Menentukan apakah akan menonaktifkan HTTPS. Nilai default adalah false.

Configuration.DisableSsl = true

UseDualStackEndpoint

Menentukan apakah akan menggunakan titik akhir dual-stack. Nilai default adalah false.

Configuration.UseDualStackEndpoint = true

UseAccelerateEndpoint

Menentukan apakah akan menggunakan titik akhir percepatan. Nilai default adalah false.

Configuration.UseAccelerateEndpoint = true

UseInternalEndpoint

Menentukan apakah akan menggunakan titik akhir internal. Nilai default adalah false.

Configuration.UseInternalEndpoint = true

DisableUploadCrc64Check

Menentukan apakah akan menonaktifkan pemeriksaan CRC64 untuk unggahan. Nilai default adalah false.

Configuration.DisableUploadCrc64Check = true

DisableDownloadCrc64Check

Menentukan apakah akan menonaktifkan pemeriksaan CRC64 untuk unduhan. Nilai default adalah false.

Configuration.DisableDownloadCrc64Check = true

AdditionalHeaders

Menentukan header permintaan tambahan yang ditandatangani. Parameter ini hanya berlaku untuk signature v4.

Configuration.AdditionalHeaders = new List<string> { "x-oss-meta-*" }

UserAgent

Menentukan informasi User-Agent tambahan.

Configuration.UserAgent = "MyApp/1.0"

Using a custom domain name

Saat Anda mengakses OSS menggunakan nama domain default, Anda mungkin mengalami masalah seperti penolakan akses file atau file yang tidak dapat dipratinjau. Dengan mengakses OSS menggunakan nama domain kustom, Anda tidak hanya dapat mempratinjau file langsung di browser, tetapi juga menggunakan akselerasi CDN untuk distribusi.

using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk SDK OSS guna menyederhanakan kode.

var region = "cn-hangzhou"; // Wajib diisi. Tentukan wilayah bucket. Contohnya, gunakan "cn-hangzhou" untuk China (Hangzhou).
var endpoint = "https://www.example-***.com";  // Wajib diisi. Tentukan nama domain kustom Anda, seperti "www.example-***.com".

// Muat konfigurasi default SDK OSS. Ini secara otomatis membaca kredensial (seperti pasangan AccessKey) dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Konfigurasikan klien untuk mendapatkan kredensial dari variabel lingkungan <code>OSS_ACCESS_KEY_ID
OSS_ACCESS_KEY_SECRETtrue

Use an internal endpoint

Menggunakan titik akhir internal untuk mengakses sumber daya OSS di wilayah yang sama mengurangi biaya transfer data dan meningkatkan kecepatan akses.

using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk SDK Alibaba Cloud OSS agar lebih praktis.

var region = "cn-hangzhou"; // Wajib diisi: Wilayah tempat bucket berada, misalnya 'cn-hangzhou' untuk China (Hangzhou).
var endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";  // Opsional: Titik akhir internal untuk akses OSS. Contohnya, titik akhir untuk China (Hangzhou) adalah https://oss-cn-hangzhou-internal.aliyuncs.com.

// Muat konfigurasi default SDK OSS, yang secara otomatis membaca kredensial (misalnya, pasangan AccessKey) dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Atur penyedia kredensial untuk menggunakan variabel lingkungan dalam autentikasi (OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET).
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah bucket.
cfg.Region = region;
// Jika titik akhir ditentukan, maka akan menggantikan titik akhir default.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Alternatifnya, atur cfg.UseInternalEndpoint = true untuk secara otomatis menggunakan titik akhir internal.
// cfg.UseInternalEndpoint = true;

// Buat klien OSS dari konfigurasi tersebut.
using var client = new OSS.Client(cfg);

// Gunakan klien yang dibuat untuk operasi selanjutnya...

Use an acceleration endpoint

using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk SDK Alibaba Cloud OSS agar lebih ringkas.

var region = "cn-hangzhou"; // Wajib diisi. Wilayah bucket Anda. Contohnya, di China (Hangzhou), atur nilai ini menjadi "cn-hangzhou".
var endpoint = "https://oss-accelerate.aliyuncs.com";  // Opsional. Titik akhir percepatan untuk wilayah bucket.

// Muat konfigurasi SDK default, yang secara otomatis membaca kredensial seperti pasangan AccessKey Anda dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit konfigurasikan penyedia kredensial untuk menggunakan variabel lingkungan dalam autentikasi.
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah untuk klien.
cfg.Region = region;
// Jika titik akhir kustom ditentukan, maka akan menggantikan nilai default.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Alternatifnya, atur cfg.UseAccelerateEndpoint = true untuk secara otomatis menggunakan titik akhir percepatan.
// cfg.UseAccelerateEndpoint = true;

// Buat instance klien OSS dengan konfigurasi tersebut.
using var client = new OSS.Client(cfg);

// Gunakan klien untuk operasi selanjutnya.	

Use a dedicated domain name

using OSS = AlibabaCloud.OSS.V2; // Membuat alias untuk SDK Alibaba Cloud OSS agar lebih mudah digunakan.

var region = "cn-hangzhou"; // Wajib diisi. Wilayah bucket Anda. Contohnya, atur nilai ini menjadi "cn-hangzhou" untuk China (Hangzhou).
var endpoint = "https://service.corp.example.com";  // Wajib diisi. Nama domain khusus Anda. Contohnya: https://service.corp.example.com.

// Memuat konfigurasi SDK default, yang secara otomatis membaca kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit mengatur penyedia kredensial untuk menggunakan variabel lingkungan dalam autentikasi (OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET).
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Mengatur wilayah dalam konfigurasi.
cfg.Region = region;
// Jika titik akhir kustom ditentukan, maka akan menggantikan nilai default.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Membuat instance klien OSS dari konfigurasi tersebut.
using var client = new OSS.Client(cfg);

// Gunakan klien yang dibuat untuk melakukan operasi selanjutnya...	

Use a Gov Cloud endpoint

Contoh ini menunjukkan cara mengonfigurasi OSSClient dengan titik akhir Alibaba Gov Cloud.

using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk SDK Alibaba Cloud OSS agar lebih mudah digunakan.

var region = "cn-north-2-gov-1"; // Wajib diisi. Wilayah bucket. Untuk China North 2 (Ali Gov 1), gunakan "cn-north-2-gov-1".
// Wajib diisi. Titik akhir internal untuk wilayah bucket. Untuk China North 2 (Ali Gov 1), gunakan "https://oss-cn-north-2-gov-1-internal.aliyuncs.com".
// Untuk menggunakan protokol HTTP, atur titik akhir menjadi "http://oss-cn-north-2-gov-1-internal.aliyuncs.com".
var endpoint = "https://oss-cn-north-2-gov-1-internal.aliyuncs.com";

// Muat konfigurasi SDK default. Ini membaca kredensial, seperti AccessKey, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Atur penyedia untuk menggunakan variabel lingkungan dalam autentikasi. Variabelnya adalah `OSS_ACCESS_KEY_ID` dan `OSS_ACCESS_KEY_SECRET`.
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// Atur wilayah dalam konfigurasi.
cfg.Region = region;
// Jika ditentukan, titik akhir akan menggantikan nilai default.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Buat klien OSS dari konfigurasi tersebut.
using var client = new OSS.Client(cfg);

// Gunakan klien untuk operasi selanjutnya...	

Access credential configuration

OSS menyediakan beberapa metode untuk menginisialisasi kredensial. Pilih metode berdasarkan kebutuhan autentikasi dan otorisasi Anda.

Memilih kredensial akses

Metode inisialisasi

Skenario

Prasyarat

Kredensial dasar

Masa berlaku

Metode refresh

Gunakan pasangan AccessKey pengguna RAM

Untuk aplikasi di lingkungan aman dan stabil yang memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa rotasi kredensial yang sering.

Ya

Pasangan AccessKey

Jangka panjang

Rotasi manual

Gunakan token STS

Untuk aplikasi di lingkungan tidak tepercaya yang memerlukan durasi akses dan izin yang terkontrol.

Ya

Token STS

Sementara

Refresh manual

Gunakan ARN peran RAM

Untuk aplikasi yang memerlukan akses delegasi ke layanan Alibaba Cloud, seperti untuk akses lintas akun.

Ya

Token STS

Sementara

Auto-refresh

Gunakan peran RAM ECS

Untuk aplikasi yang berjalan di sumber daya komputasi Alibaba Cloud, seperti instance ECS, instance ECI, atau node pekerja di Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan ARN peran OIDC

Untuk aplikasi tidak tepercaya yang berjalan di node pekerja Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan penyedia kredensial kustom

Jika metode di atas tidak memenuhi kebutuhan Anda, Anda dapat mengimplementasikan penyedia kredensial kustom.

Custom

Kustom

Custom

Kustom

RAM user's AccessKey pair

Inisialisasi penyedia kredensial dengan pasangan AccessKey (ID AccessKey dan rahasia AccessKey) dari akun Alibaba Cloud atau pengguna RAM untuk aplikasi yang berada di lingkungan aman, memerlukan akses OSS jangka panjang, dan tidak mendukung rotasi kredensial yang sering. Namun, metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, sehingga meningkatkan risiko keamanan dan kompleksitas pemeliharaan.

Peringatan
  • Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kebocoran pasangan AccessKey akun Alibaba Cloud Anda mengekspos sistem terhadap risiko keamanan yang signifikan. Kami menyarankan agar Anda tidak menggunakan pasangan AccessKey akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey pengguna RAM yang hanya memiliki izin minimal yang diperlukan.

  • Untuk membuat pasangan AccessKey untuk pengguna RAM, lihat Create an AccessKey pair. ID AccessKey dan rahasia AccessKey pengguna RAM hanya ditampilkan saat pembuatan. Anda harus segera menyimpannya. Jika Anda lupa pasangan AccessKey tersebut, buat yang baru.

Environment variables

  1. Konfigurasikan variabel lingkungan menggunakan pasangan AccessKey pengguna RAM.

    Linux

    1. Jalankan perintah berikut di CLI untuk menambahkan konfigurasi 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
      1. Terapkan perubahan.

        source ~/.bashrc
      2. Periksa 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
      1. Konfigurasikan variabel lingkungan berdasarkan jenis shell default.

        Zsh

        1. Jalankan perintah berikut untuk menambahkan konfigurasi 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. Terapkan perubahan.

          source ~/.zshrc
        3. Periksa apakah variabel lingkungan telah berlaku:

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

        Bash

        1. Jalankan perintah berikut untuk menambahkan konfigurasi 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. Terapkan perubahan.

          source ~/.bash_profile
        3. Periksa 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"
      1. Periksa apakah variabel lingkungan 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)
      1. Periksa apakah variabel lingkungan berlaku:

        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User)
        [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
  2. Setelah mengubah variabel lingkungan sistem, restart atau refresh lingkungan kompilasi dan runtime Anda—seperti IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan backend—agar memuat variabel terbaru.

  3. Gunakan variabel lingkungan untuk meneruskan informasi kredensial.

    using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS guna menyederhanakan penggunaan selanjutnya.
    
    var region = "cn-hangzhou";  // Wajib diisi. Wilayah tempat bucket berada. Contohnya, untuk wilayah China (Hangzhou), atur wilayah menjadi "cn-hangzhou".
    var endpoint = null as string;  // Opsional. Titik akhir OSS. Contohnya, untuk wilayah China (Hangzhou), titik akhir adalah "https://oss-cn-hangzhou.aliyuncs.com".
    
    // Muat konfigurasi SDK OSS default. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
    var cfg = OSS.Configuration.LoadDefault();
    // Secara eksplisit atur penyedia kredensial untuk menggunakan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET dalam autentikasi.
    cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
    // Atur wilayah bucket dalam konfigurasi.
    cfg.Region = region;   
    // Jika titik akhir ditentukan, maka akan menggantikan titik akhir default. 
    if(endpoint != null) 
    {
        cfg.Endpoint = endpoint;
    } 
    
    // Buat instance klien OSS menggunakan konfigurasi tersebut.
    using var client = new OSS.Client(cfg);

Static credentials

Kode contoh berikut menunjukkan cara menyematkan kredensial akses secara langsung dengan menentukan pasangan AccessKey.

Peringatan

Jangan menyematkan kredensial akses dalam aplikasi produksi. Metode ini hanya untuk tujuan pengujian.

using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS guna menyederhanakan penggunaan selanjutnya.

var region = "cn-hangzhou";  // Wajib diisi. Wilayah tempat bucket berada. Contohnya, untuk wilayah China (Hangzhou), atur wilayah menjadi "cn-hangzhou".
var endpoint = null as string;  // Opsional. Titik akhir OSS. Contohnya, untuk wilayah China (Hangzhou), titik akhir adalah "https://oss-cn-hangzhou.aliyuncs.com".

var cfg = OSS.Configuration.LoadDefault();

// Tentukan ID AccessKey dan rahasia AccessKey pengguna RAM.
var access_key_id = "yourAccessKeyId";
var access_key_secret = "yourAccessKeySecret";
// Buat penyedia kredensial statis dan secara eksplisit atur ID AccessKey dan rahasia AccessKey pengguna RAM.
cfg.CredentialsProvider = new OSS.Credentials.StaticCredentialsProvider(access_key_id,access_key_secret);

// Atur wilayah bucket dalam konfigurasi.
cfg.Region = region;   
// Jika titik akhir ditentukan, maka akan menggantikan titik akhir default. 
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

// Buat instance klien OSS menggunakan konfigurasi tersebut.
using var client = new OSS.Client(cfg);

Use temporary STS credentials

Metode ini mengharuskan Anda memelihara token STS secara manual, sehingga menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan. Anda juga harus merefresh token STS secara manual untuk akses sementara berulang.

Penting

Environment variables

  1. Atur variabel lingkungan menggunakan kredensial identitas sementara.

    macOS, Linux, dan Unix

    Peringatan
    • Gunakan kredensial identitas sementara (Access Key ID, Access Key secret, dan token keamanan) yang diperoleh dari STS, bukan Access Key ID dan Access Key secret pengguna RAM.

    • Perhatikan bahwa Access Key ID yang diperoleh dari STS diawali dengan "STS.", contohnya "STS.L4aBSCSJVMuKg5U1****".

    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

    Peringatan
    • Gunakan kredensial identitas sementara (Access Key ID, Access Key secret, dan token keamanan) yang diperoleh dari STS, bukan Access Key ID dan Access Key secret pengguna RAM.

    • Perhatikan bahwa Access Key ID yang diperoleh dari STS diawali dengan "STS.", contohnya "STS.L4aBSCSJVMuKg5U1****".

    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>
  2. Sediakan kredensial melalui variabel lingkungan.

    using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS agar lebih mudah digunakan.
    
    var region = "cn-hangzhou";  // Wajib diisi. Wilayah tempat bucket Anda berada. Untuk contoh ini, "cn-hangzhou" menunjukkan China (Hangzhou).
    var endpoint = null as string;  // Opsional. Titik akhir untuk mengakses OSS. Titik akhir untuk China (Hangzhou) adalah "https://oss-cn-hangzhou.aliyuncs.com".
    
    // Muat konfigurasi SDK OSS default, yang secara otomatis membaca kredensial dari variabel lingkungan.
    var cfg = OSS.Configuration.LoadDefault();
    // Secara eksplisit atur penyedia untuk menggunakan variabel lingkungan dalam autentikasi (OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, OSS_SESSION_TOKEN).
    cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
    // Atur wilayah untuk konfigurasi.
    cfg.Region = region;   
    // Jika titik akhir ditentukan, maka akan menggantikan nilai default. 
    if(endpoint != null) 
    {
        cfg.Endpoint = endpoint;
    } 
    
    // Buat klien OSS dari konfigurasi tersebut.
    using var client = new OSS.Client(cfg);

Static credentials

Kode berikut menunjukkan cara menyematkan kredensial akses secara langsung dengan mengatur Access Key ID sementara, Access Key secret sementara, dan token keamanan.

Peringatan

Jangan menyematkan kredensial akses dalam aplikasi di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.

using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS agar lebih mudah digunakan.

var region = "cn-hangzhou";  // Wajib diisi. Wilayah tempat bucket Anda berada. Untuk contoh ini, "cn-hangzhou" menunjukkan China (Hangzhou).
var endpoint = null as string;  // Opsional. Titik akhir untuk mengakses OSS. Titik akhir untuk China (Hangzhou) adalah "https://oss-cn-hangzhou.aliyuncs.com".

var cfg = OSS.Configuration.LoadDefault();

// Tentukan ID Access Key sementara dan rahasia Access Key sementara dari STS. Ini berbeda dari kredensial akun Alibaba Cloud Anda.
// ID Access Key dari STS diawali dengan awalan "STS." seperti yang ditunjukkan pada contoh di bawah.
var access_key_id = "STS.****************";
var access_key_secret = "yourAccessKeySecret";
// Sediakan token keamanan yang diperoleh dari STS.
var securityToken = "yourSecurityToken";
// Buat penyedia kredensial statis dan secara eksplisit atur ID Access Key sementara, rahasia Access Key sementara, dan token keamanan.
cfg.CredentialsProvider = new OSS.Credentials.StaticCredentialsProvider(access_key_id, access_key_secret, securityToken);

// Atur wilayah untuk konfigurasi.
cfg.Region = region;   
// Jika titik akhir ditentukan, maka akan menggantikan nilai default. 
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

// Buat klien OSS dari konfigurasi tersebut.
using var client = new OSS.Client(cfg);

Use a RAM role ARN

Jika aplikasi Anda memerlukan akses delegasi ke OSS, seperti dalam skenario lintas akun, Anda dapat menginisialisasi penyedia kredensial dengan ARN peran RAM. Metode ini menggunakan token STS secara internal. Saat Anda memberikan ARN peran RAM, utilitas Credentials secara otomatis memanggil operasi AssumeRole untuk mengambil token STS dan merefresh-nya sebelum masa berlaku habis. Anda juga dapat memberikan nilai pada parameter policy untuk lebih membatasi izin peran RAM tersebut.

Penting
  • Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Jika pasangan AccessKey akun Alibaba Cloud Anda bocor, sistem Anda akan terpapar risiko keamanan yang signifikan. Untuk keamanan yang lebih baik, gunakan pasangan AccessKey dari pengguna RAM dengan izin minimal yang diperlukan.

  • Untuk membuat pasangan AccessKey untuk pengguna RAM, lihat Create an AccessKey pair. ID AccessKey dan rahasia AccessKey hanya ditampilkan saat pembuatan. Anda harus menyimpan pasangan AccessKey tersebut. Jika Anda lupa pasangan AccessKey, buat yang baru.

  • Untuk mendapatkan ARN peran RAM, lihat Create a role.

  1. Tambahkan dependensi Aliyun.Credentials.

    dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json
  2. Konfigurasikan kredensial akses menggunakan pasangan AccessKey dan ARN peran RAM.

    using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS agar lebih praktis.
    
    var region = "cn-hangzhou";  // Wajib diisi. Wilayah bucket. Contohnya, untuk China (Hangzhou), atur wilayah menjadi "cn-hangzhou".
    var endpoint = null as string;  // Opsional. Titik akhir akses OSS. Contohnya, untuk China (Hangzhou), atur titik akhir menjadi "https://oss-cn-hangzhou.aliyuncs.com".
    
    // Konfigurasi kredensial Alibaba Cloud untuk mengasumsikan peran RAM dengan ARN.
    // Untuk contoh jenis kredensial lainnya, lihat https://github.com/aliyun/credentials-csharp.
    var credConfig = new Aliyun.Credentials.Models.Config()
    {
        // Atur jenis kredensial menjadi "ram_role_arn".
        Type = "ram_role_arn",
        // Baca ID AccessKey dari variabel lingkungan.
        AccessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"),
        // Baca rahasia AccessKey dari variabel lingkungan.
        AccessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET"),
        // ARN peran RAM. Format: acs:ram::USER_ID:role/ROLE_NAME.
        // Anda juga dapat mengaturnya menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
        RoleArn = "acs:ram::***************:role/******",
        // Nama sesi peran, digunakan untuk identifikasi.
        RoleSessionName = "<RoleSessionName>",
        // Opsional. Kebijakan untuk membatasi izin token STS.
        Policy = "<Policy>",
        // Opsional. Masa berlaku token STS dalam detik.
        RoleSessionExpiration = 3600,
    };
    
    // Buat instance klien kredensial untuk mendapatkan kredensial sementara.
    var credClient = new Aliyun.Credentials.Client(credConfig);
    
    // Sesuaikan kredensial umum ke format penyedia yang dibutuhkan oleh SDK OSS.
    var credentialsProvider = new OSS.Credentials.CredentialsProvideFunc(() =>
    {
        // Ambil kredensial sementara.
        var credential = credClient.GetCredential();
    
        // Bangun objek kredensial yang dibutuhkan oleh SDK OSS.
        return new OSS.Credentials.Credentials(
            credential.AccessKeyId,      // ID AccessKey sementara.
            credential.AccessKeySecret,  // Rahasia AccessKey sementara.
            credential.SecurityToken);   // Token STS.
    });
    
    // Muat konfigurasi default SDK OSS.
    // Penyedia kustom menggantikan perilaku default, yaitu memuat kredensial dari variabel lingkungan.
    var cfg = OSS.Configuration.LoadDefault();
    // Atur wilayah OSS.
    cfg.Region = region;
    // Atur penyedia kredensial kustom.
    cfg.CredentialsProvider = credentialsProvider;
    
    // Jika titik akhir kustom ditentukan, maka akan menggantikan pengaturan default.
    if (endpoint != null)
    {
        cfg.Endpoint = endpoint;
    }
    
    // Buat instance klien OSS dari konfigurasi tersebut.
    using var client = new OSS.Client(cfg);
    
    // Buat paginator untuk operasi ListBuckets
    // guna mengambil semua bucket OSS di akun saat ini.
    var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());
    
    // Iterasi secara asinkron melalui hasil paginasi untuk bucket.
    Console.WriteLine("Buckets:");
    await foreach (var page in paginator.IterPageAsync())
    {
        // Iterasi melalui bucket pada setiap halaman.
        foreach (var bucket in page.Buckets ?? [])
        {
            // Keluarkan informasi bucket: nama, kelas penyimpanan, dan lokasi.
            Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}");
        }
    }
    

Use an ECS RAM role

Jika aplikasi Anda berjalan di instance ECS, instance ECI, atau node pekerja Container Service for Kubernetes, kami menyarankan Anda menggunakan peran RAM ECS untuk menginisialisasi penyedia kredensial. Pendekatan ini menggunakan token STS. Peran RAM ECS memungkinkan Anda mengaitkan peran dengan instance ECS, instance ECI, atau node pekerja Container Service for Kubernetes untuk secara otomatis merefresh token STS di dalam instance. Metode ini menghilangkan risiko keamanan dan beban pemeliharaan dari pengelolaan manual pasangan AccessKey atau token STS. Untuk informasi selengkapnya, lihat CreateRole.

  1. Tambahkan dependensi Aliyun.Credentials.

    dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json
  2. Konfigurasikan kredensial akses menggunakan peran RAM ECS.

    using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK OSS guna menyederhanakan penggunaan.
    using Aliyun.Credentials.Models;
    
    // Wajib diisi. Wilayah tempat bucket berada. Contohnya, untuk China (Hangzhou), atur wilayah menjadi "cn-hangzhou".
    var region = "cn-hangzhou";
    // Opsional. Titik akhir untuk mengakses OSS. Contohnya, untuk China (Hangzhou), titik akhir adalah "https://oss-cn-hangzhou.aliyuncs.com".
    var endpoint = null as string;
    
    // Buat konfigurasi kredensial untuk autentikasi dengan peran RAM ECS.
    var credConfig = new Aliyun.Credentials.Models.Config()
    {
        // Jenis kredensial.
        Type = "ecs_ram_role",
        // Nama peran. Opsional. Peran akan diambil secara otomatis jika parameter ini dihilangkan. Atur parameter ini untuk mengurangi jumlah permintaan.
        RoleName = "<RoleName>"
    };
    
    // Buat klien kredensial untuk mendapatkan kredensial akses sementara.
    var credClient = new Aliyun.Credentials.Client(credConfig);
    
    // Bungkus kredensial dalam fungsi penyedia untuk SDK OSS.
    var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() =>
    {
        // Dapatkan kredensial sementara.
        var credential = credClient.GetCredential();
    
        // Bangun objek kredensial yang dibutuhkan oleh SDK OSS.
        return new OSS.Credentials.Credentials(
            credential.AccessKeyId,      // ID AccessKey sementara.
            credential.AccessKeySecret,  // Rahasia AccessKey sementara.
            credential.SecurityToken);   // Token STS.
    });
    
    // Muat konfigurasi klien OSS default.
    var cfg = OSS.Configuration.LoadDefault();
    
    // Atur wilayah OSS.
    cfg.Region = region;
    
    // Atur penyedia kredensial kustom.
    cfg.CredentialsProvider = credentialsProvider;
    
    // Jika titik akhir kustom ditentukan, maka akan menggantikan pengaturan default.
    if (endpoint != null)
    {
        cfg.Endpoint = endpoint;
    }
    
    // Buat instance klien OSS dari konfigurasi tersebut.
    using var client = new OSS.Client(cfg);
    
    // Ambil semua bucket OSS di bawah akun peran saat ini.
    var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());
    
    // Iterasi secara asinkron melalui hasil paginasi bucket.
    Console.WriteLine("Buckets:");
    await foreach (var page in paginator.IterPageAsync())
    {
        // Iterasi melalui bucket pada setiap halaman.
        foreach (var bucket in page.Buckets ?? [])
        {
            // Keluarkan informasi bucket: nama, kelas penyimpanan, dan lokasi.
            Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}");
        }
    }

Use an OIDC role ARN

Setelah Anda mengonfigurasi peran RAM untuk node pekerja di Container Service for Kubernetes, aplikasi dalam pod pada node tersebut dapat mengambil token STS peran terkait dari layanan metadata, mirip dengan aplikasi yang dideploy di instance ECS. Namun, jika Anda men-deploy aplikasi tidak tepercaya di kluster, seperti aplikasi dari pelanggan yang kodenya tidak dapat Anda periksa, Anda harus mencegah mereka mengambil token STS peran RAM instance yang terkait dengan node pekerja melalui layanan metadata. Untuk melindungi sumber daya cloud Anda sekaligus memungkinkan aplikasi tidak tepercaya ini mendapatkan token STS yang diperlukan secara aman, Anda dapat menggunakan RAM Roles for Service Accounts (RRSA) untuk menerapkan prinsip hak istimewa minimal di tingkat aplikasi. Kluster secara otomatis membuat file token OIDC akun layanan, memasangnya ke setiap pod, dan menyuntikkan detail konfigurasi sebagai variabel lingkungan. Utilitas kredensial kemudian memanggil operasi AssumeRoleWithOIDC dari Security Token Service (STS) untuk menukar token OIDC dengan token STS yang terikat pada peran. Metode ini menghilangkan risiko dan beban pemeliharaan dari pengelolaan pasangan AccessKey statis atau token STS. Untuk informasi selengkapnya, lihat Isolate pod permissions by using RRSA.

  1. Tambahkan dependensi Aliyun.Credentials.

    dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json
  1. Konfigurasikan kredensial akses menggunakan ARN peran OIDC.

    using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS guna menyederhanakan penggunaannya.
    using Aliyun.Credentials.Models;
    
    var region = "cn-hangzhou";  // Wajib diisi. Wilayah bucket. Contohnya, untuk China (Hangzhou), atur wilayah menjadi "cn-hangzhou".
    var endpoint = null as string;  // Opsional. Titik akhir untuk mengakses OSS. Contohnya, untuk China (Hangzhou), atur titik akhir menjadi "https://oss-cn-hangzhou.aliyuncs.com".
    
    // Buat konfigurasi kredensial untuk autentikasi menggunakan ARN peran OIDC.
    var credConfig = new Aliyun.Credentials.Models.Config()
    {
       // Jenis kredensial.
        Type = "oidc_role_arn",
        // Format: acs:ram::USER_ID:role/ROLE_NAME.
        // roleArn opsional. Anda dapat mengatur variabel lingkungan ALIBABA_CLOUD_ROLE_ARN sebagai gantinya.
        RoleArn = "<RoleArn>",
        // Format: acs:ram::USER_ID:oidc-provider/OIDC_PROVIDER_NAME.
        // OIDCProviderArn opsional. Anda dapat mengatur variabel lingkungan ALIBABA_CLOUD_OIDC_PROVIDER_ARN sebagai gantinya.
        OIDCProviderArn = "<OIDCProviderArn>",
        // Format: path.
        // OIDCTokenFilePath opsional. Anda dapat mengatur variabel lingkungan ALIBABA_CLOUD_OIDC_TOKEN_FILE sebagai gantinya.
        OIDCTokenFilePath = "/Users/xxx/xxx",
        // Nama sesi peran.
        RoleSessionName = "<RoleSessionName>",
        // Opsional. Membatasi izin token STS.
        Policy = "<Policy>",
        // Opsional. Masa berlaku token STS dalam detik.
        RoleSessionExpiration = 3600,
    };
    
    // Buat klien kredensial untuk mendapatkan kredensial akses sementara.
    var credClient = new Aliyun.Credentials.Client(credConfig);
    
    // Konversi kredensial umum ke penyedia kredensial yang dibutuhkan oleh SDK OSS.
    var credentialsProvider = new OSS.Credentials.CredentialsProvideFunc(() =>
    {
        // Dapatkan kredensial sementara.
        var credential = credClient.GetCredential();
    
        // Bangun objek kredensial yang dibutuhkan oleh SDK OSS.
        return new OSS.Credentials.Credentials(
            credential.AccessKeyId,      // ID AccessKey sementara.
            credential.AccessKeySecret,  // Rahasia AccessKey sementara.
            credential.SecurityToken);   // Token keamanan (token STS).
    });
    
    // Muat konfigurasi default klien OSS.
    var cfg = OSS.Configuration.LoadDefault();
    
    // Atur wilayah OSS.
    cfg.Region = region;
    
    // Atur penyedia kredensial kustom.
    cfg.CredentialsProvider = credentialsProvider;
    
    // Jika titik akhir kustom ditentukan, maka akan menggantikan pengaturan default.
    if (endpoint != null)
    {
        cfg.Endpoint = endpoint;
    }
    
    // Buat instance klien OSS dari konfigurasi tersebut.
    using var client = new OSS.Client(cfg);
    
    // Buat paginator untuk mengambil semua bucket OSS di bawah akun peran saat ini.
    var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());
    
    // Iterasi secara asinkron melalui hasil paginasi bucket.
    Console.WriteLine("Buckets:");
    await foreach (var page in paginator.IterPageAsync())
    {
        // Iterasi melalui bucket pada setiap halaman.
        foreach (var bucket in page.Buckets ?? [])
        {
            // Keluarkan informasi bucket: nama, kelas penyimpanan, dan lokasi.
            Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}");
        }
    }

Custom access credential

Jika metode konfigurasi kredensial di atas tidak sesuai, Anda dapat mengimplementasikan penyedia kustom.

Gunakan delegasi Credentials.CredentialsProvideFunc.

using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS agar lebih praktis.

var region = "cn-hangzhou";  // Wajib diisi. Wilayah tempat bucket berada. Contohnya, untuk China (Hangzhou), atur wilayah menjadi "cn-hangzhou".
var endpoint = null as string;  // Opsional. Titik akhir akses OSS. Contohnya, untuk China (Hangzhou), titik akhir adalah "https://oss-cn-hangzhou.aliyuncs.com".

// Kredensial ini hanya disetel untuk demonstrasi. Di produksi, ambil dari sumber aman, seperti variabel lingkungan.
var AccessKeyId = "your-access-key-id";  // Wajib diisi. ID AccessKey pengguna RAM atau kredensial akses sementara.
var AccessKeySecret = "your-access-key-secret";  // Wajib diisi. Rahasia AccessKey pengguna RAM atau kredensial akses sementara.
// var SecurityToken = "your-security-token";  // Opsional. Konfigurasikan variabel ini jika Anda menggunakan kredensial akses sementara.

// Konversi kredensial umum menjadi penyedia kredensial yang dibutuhkan oleh SDK OSS.
var credentialsProvider = new OSS.Credentials.CredentialsProvideFunc(() =>
{
   
    // Gunakan kredensial jangka panjang untuk membangun objek kredensial yang dibutuhkan oleh SDK OSS. 
    return new OSS.Credentials.Credentials(
        AccessKeyId,        // ID AccessKey pengguna RAM.
        AccessKeySecret);   // Rahasia AccessKey pengguna RAM.

    // Gunakan kredensial akses sementara untuk membangun objek kredensial yang dibutuhkan oleh SDK OSS. 
    // return new OSS.Credentials.Credentials(
    //     AccessKeyId,      // ID AccessKey sementara.
    //     AccessKeySecret,  // Rahasia AccessKey sementara.
    //     SecurityToken);   // Token keamanan.
});

// Muat konfigurasi default klien OSS.
var cfg = OSS.Configuration.LoadDefault();

// Atur wilayah OSS.
cfg.Region = region;

// Atur penyedia kredensial kustom.
cfg.CredentialsProvider = credentialsProvider;

// Titik akhir kustom, jika ditentukan, akan menggantikan nilai default.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Buat instance klien OSS dari konfigurasi tersebut.
using var client = new OSS.Client(cfg);

// Ambil semua bucket OSS di bawah akun peran saat ini.
var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());

// Iterasi secara asinkron melalui hasil paginasi untuk bucket.
Console.WriteLine("Buckets:");
await foreach (var page in paginator.IterPageAsync())
{
    // Iterasi melalui bucket pada setiap halaman.
    foreach (var bucket in page.Buckets ?? [])
    {
        // Keluarkan informasi bucket: nama, kelas penyimpanan, dan lokasi.
        Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}");
    }
}

Sample code

OSS SDK for C# V2 menyediakan banyak kode contoh untuk referensi atau penggunaan langsung dalam aplikasi Anda.

Contoh

File contoh di GitHub

Buat bucket (C# SDK V2)

PutBucket.cs

Daftar bucket (C# SDK V2)

ListBuckets.cs

Periksa apakah bucket ada (C# SDK V2)

IsBucketExist.cs

Dapatkan wilayah bucket (C# SDK V2)

GetBucketLocation.cs

Dapatkan informasi bucket (C# SDK V2)

GetBucketInfo.cs

Dapatkan kapasitas penyimpanan bucket (C# SDK V2)

GetBucketStat.cs

Hapus bucket (C# SDK V2)

DeleteBucket.cs

Unggahan sederhana menggunakan OSS SDK for C# V2

PutObject.cs

Unggahan append (C# SDK V2)

AppendObject.cs

Unggahan multipart (C# SDK V2)

MultipartUpload.cs

Unggahan form (C# SDK V2)

PostObject.cs

Unggah objek menggunakan URL yang ditandatangani (C# SDK V2)

PresignPutObject.cs

Unduh objek ke memori (C# SDK V2)

GetObject.cs

Unduh objek ke file lokal (C# SDK V2)

GetObjectToFile.cs

Unduh objek menggunakan URL yang ditandatangani (C# SDK V2)

PresignGetObject.cs

Salin objek (C# SDK V2)

CopyObject.cs

Periksa apakah objek ada (C# SDK V2)

IsObjectExist.cs

Daftar objek (C# SDK V2)

ListObjects.cs

Hapus objek (C# SDK V2)

DeleteObject.cs

Kelola tautan simbolik (C# SDK V2)

Atur tag objek (C# SDK V2)

PutObjectTagging.cs

Dapatkan tag objek (C# SDK V2)

GetObjectTagging.cs

Hapus tag objek (C# SDK V2)

DeleteObjectTagging.cs

Kelola ACL bucket (C# SDK V2)

Kelola ACL objek (C# SDK V2)

Kelola pengendalian versi (C# SDK V2)

Pemrosesan sinkron (C# SDK V2)

ProcessObject.cs

Pemrosesan asinkron (C# SDK V2)

AsyncProcessObject.cs