全部产品
Search
文档中心

Object Storage Service:OSS SDK for C# V2.0

更新时间:Dec 18, 2025

GitHub | SDK Releases

Integrasi cepat

Prosedur berikut menjelaskan cara mengintegrasikan OSS SDK for C# 2.0:

image

Persiapan lingkungan

  • SDK mendukung .NET Framework 4.7.1 dan versi yang lebih baru.

  • SDK mendukung .NET Standard 2.0 dan versi yang lebih baru.

  • SDK mendukung .NET 5.0 dan versi yang lebih baru.

  • Jika Anda belum memiliki lingkungan .NET yang diperlukan atau versi Anda sudah usang, ikuti langkah-langkah berikut:

    • Untuk .NET Framework: Kunjungi situs resmi Microsoft untuk mengunduh dan menginstal .NET Framework 4.7.1 atau versi yang lebih baru.

    • Untuk .NET Standard: .NET Standard adalah spesifikasi implementasi yang didukung oleh berbagai platform .NET, seperti .NET Framework dan .NET. Pastikan Anda telah menginstal implementasi .NET yang kompatibel.

    • Untuk .NET: Kunjungi situs resmi .NET untuk mengunduh dan menginstal .NET 5.0 atau versi yang lebih baru.

Instal SDK

Gunakan versi terbaru OSS SDK for C# V2 agar kode contoh dalam topik ini dapat berjalan sebagaimana mestinya.

Instal menggunakan NuGet

  • Periksa apakah NuGet telah diinstal:

    • Pastikan manajer paket NuGet telah diinstal di Visual Studio. Jika belum, buka Visual Studio Installer melalui menu Tools -> Get Tools and Features. Pada tab Workloads, pilih .NET desktop development atau ASP.NET and web development. Manajer paket NuGet secara otomatis disertakan dalam workload tersebut.

  • Buka proyek:

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

  • Buka NuGet Package Manager:

    • Pada menu bar, pilih Tools -> NuGet Package Manager -> Manage 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. Pastikan Anda memilih versi stabil terbaru.

    • Klik Install untuk menginstal paket tersebut. Tunggu hingga proses instalasi selesai.

  • Verifikasi instalasi:

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

Instal dengan mengimpor proyek

  • 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 solusi Anda, lalu pilih Add -> Existing 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, lalu pilih Add -> Reference....

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

Konfigurasi kredensial akses

Konfigurasikan kredensial akses menggunakan pasangan AccessKey pengguna RAM.

  1. Di Konsol RAM, buat pengguna RAM yang menggunakan Permanent AccessKey Pair, simpan pasangan AccessKey tersebut, lalu berikan izin AliyunOSSFullAccess kepada pengguna RAM tersebut.

  2. Konfigurasikan variabel lingkungan menggunakan pasangan AccessKey pengguna RAM.

    Linux

    1. Jalankan perintah berikut di antarmuka baris perintah untuk menambahkan pengaturan variabel lingkungan ke file ~/.bashrc.

      echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc
      echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc
      1. Jalankan perintah berikut untuk menerapkan konfigurasi.

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

        echo $OSS_ACCESS_KEY_ID
        echo $OSS_ACCESS_KEY_SECRET

    macOS

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

      echo $SHELL
      1. Ikuti langkah-langkah sesuai 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 untuk menerapkan konfigurasi.

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

          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 untuk menerapkan konfigurasi.

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

          echo $OSS_ACCESS_KEY_ID
          echo $OSS_ACCESS_KEY_SECRET

    Windows

    CMD

    1. Jalankan perintah berikut di Command Prompt.

      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 dikonfigurasi.

        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. Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.

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

Inisialisasi klien

Inisialisasi OSSClient berdasarkan wilayah dan titik akhir, lalu jalankan kode uji.

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

var region = "cn-hangzhou"; // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
var bucket = "your bucket name";  // Wajib. Nama bucket tujuan.
var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
var key = "your object key"; // Wajib. Nama objek yang akan diunggah. Formatnya adalah folder/objectName.

// Muat konfigurasi default SDK OSS. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit tentukan bahwa variabel lingkungan digunakan untuk memperoleh kredensial verifikasi identitas. Formatnya adalah 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, titik akhir default akan ditimpa.
if(endpoint != null)
{
    cfg.Endpoint = endpoint;
}

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

// Konten objek yang akan diunggah. Contoh konten: string sederhana "hello oss!". Dalam skenario aktual, kontennya bisa berupa aliran file atau larik byte.
var content = "hello oss!";
// Ubah string menjadi larik byte berkode UTF-8, lalu bungkus ke dalam MemoryStream.
// MemoryStream digunakan untuk memproses aliran data di memori dan cocok untuk mengunggah file kecil. Gunakan FileStream untuk file besar.
var bodyStream = new MemoryStream(Encoding.UTF8.GetBytes(content));

// Panggil metode PutObjectAsync untuk mengunggah objek secara asinkron. Anda harus meneruskan objek permintaan yang berisi bucket, key, dan body.
// Metode ini mengunggah data dalam bodyStream ke path key yang ditentukan di bucket yang ditentukan.
var result = await client.PutObjectAsync(new OSS.Models.PutObjectRequest()
{
    Bucket = bucket,    // Nama bucket tujuan.
    Key = key,          // Kunci unik objek dalam bucket. 
    Body = bodyStream   // Aliran konten yang akan diunggah. Dalam contoh ini, berupa data string di memori.
});

// Cetak hasil pengunggahan.
Console.WriteLine("PutObject done");  // Pesan yang menunjukkan operasi telah selesai.
Console.WriteLine($"StatusCode: {result.StatusCode}");  // Kode status HTTP.
Console.WriteLine($"RequestId: {result.RequestId}");  // ID permintaan, yang digunakan untuk troubleshooting.
Console.WriteLine("Response Headers:");  // Informasi header respons.
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value));  // Telusuri dan cetak semua header respons.

Setelah menjalankan kode tersebut, hasil berikut dikembalikan. Ini menunjukkan bahwa file berhasil diunggah:

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

Konfigurasi klien

Opsi konfigurasi klien

Parameter

Deskripsi

Contoh

Region

(Wajib) Wilayah tempat permintaan dikirim.

Configuration.Region = "cn-hangzhou"

Endpoint

Titik akhir

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) Kredensial akses.

Configuration.CredentialsProvider = new EnvironmentVariableCredentialsProvider()

UsePathStyle

Menentukan apakah akan menggunakan akses bergaya path. Secara default, digunakan akses bergaya virtual-hosted.

Configuration.UsePathStyle = true

UseCName

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

Configuration.UseCName = true

ConnectTimeout

Periode timeout untuk membuat koneksi. Nilai default: 10 detik.

Configuration.ConnectTimeout = TimeSpan.FromSeconds(30)

ReadWriteTimeout

Periode timeout untuk membaca dan menulis data. Nilai default: 20 detik.

Configuration.ReadWriteTimeout = TimeSpan.FromMinutes(2)

InsecureSkipVerify

Menentukan apakah akan melewati verifikasi sertifikat SSL. Secara default, sertifikat SSL diverifikasi.

Configuration.InsecureSkipVerify = true

EnabledRedirect

Menentukan apakah akan mengaktifkan pengalihan HTTP. Secara default, pengalihan HTTP dinonaktifkan.

Configuration.EnabledRedirect = true

ProxyHost

Konfigurasikan server proxy.

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

SignatureVersion

Versi signature. Nilai default: v4.

Configuration.SignatureVersion = "v4"

DisableSsl

Menentukan apakah akan menggunakan permintaan HTTP. Secara default, digunakan permintaan HTTPS.

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

Menonaktifkan pemeriksaan redundansi siklik 64-bit (CRC64) untuk pengunggahan. Secara default, pemeriksaan ini diaktifkan.

Configuration.DisableUploadCrc64Check = true

DisableDownloadCrc64Check

Menonaktifkan pemeriksaan CRC64 untuk pengunduhan. Secara default, pemeriksaan ini diaktifkan.

Configuration.DisableDownloadCrc64Check = true

AdditionalHeaders

Header permintaan tambahan yang akan ditandatangani. Parameter ini hanya berlaku untuk signature V4.

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

UserAgent

Informasi User-Agent tambahan.

Configuration.UserAgent = "MyApp/1.0"

Gunakan nama domain kustom

Jika Anda menggunakan titik akhir OSS default untuk mengakses objek, objek tersebut mungkin tidak dapat diakses atau gagal dipratinjau di browser. Anda dapat memetakan nama domain kustom untuk mengakses OSS. Hal ini memungkinkan Anda mempratinjau objek di browser dan menggunakan CDN untuk mempercepat pengiriman konten.

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

var region = "cn-hangzhou"; // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
var endpoint = "https://www.example-***.com";  // Wajib. Nama domain kustom Anda. Contoh: www.example-***.com.

// Muat konfigurasi default SDK OSS. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit tentukan bahwa variabel lingkungan digunakan untuk memperoleh kredensial verifikasi identitas. Formatnya adalah 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, titik akhir default akan ditimpa.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Perhatikan bahwa Anda harus mengatur nilai menjadi true untuk mengaktifkan opsi CNAME. Jika tidak, Anda tidak dapat menggunakan nama domain kustom.
cfg.UseCName = true;

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

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

Gunakan titik akhir internal

Anda dapat menggunakan titik akhir internal untuk mengakses sumber daya OSS di wilayah yang sama. Hal ini mengurangi biaya trafik dan meningkatkan kecepatan akses.

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

var region = "cn-hangzhou"; // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
var endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com";  // Opsional. Titik akhir internal yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou-internal.aliyuncs.com.

// Muat konfigurasi default SDK OSS. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit tentukan bahwa variabel lingkungan digunakan untuk memperoleh kredensial verifikasi identitas. Formatnya adalah 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, titik akhir default akan ditimpa.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Anda juga dapat mengatur cfg.UseInternalEndpoint = true untuk mengonfigurasi titik akhir internal tanpa perlu menentukan titik akhir internal secara eksplisit.
// cfg.UseInternalEndpoint = true;

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

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

Gunakan titik akhir percepatan OSS

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

var region = "cn-hangzhou"; // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
var endpoint = "https://oss-accelerate.aliyuncs.com";  // Opsional. Titik akhir percepatan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi 'https://oss-accelerate.aliyuncs.com'.

// Muat konfigurasi default SDK OSS. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit tentukan bahwa variabel lingkungan digunakan untuk memperoleh kredensial verifikasi identitas. Formatnya adalah 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, titik akhir default akan ditimpa.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

// Anda juga dapat mengatur cfg.UseAccelerateEndpoint = true untuk mengonfigurasi titik akhir percepatan tanpa perlu menentukan titik akhir percepatan secara eksplisit.
// cfg.UseAccelerateEndpoint = true;

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

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

Gunakan nama domain pribadi

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

var region = "cn-hangzhou"; // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
var endpoint = "https://service.corp.example.com";  // Wajib. Nama domain khusus Anda. Contoh: https://service.corp.example.com.

// Muat konfigurasi default SDK OSS. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit tentukan bahwa variabel lingkungan digunakan untuk memperoleh kredensial verifikasi identitas. Formatnya adalah 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, titik akhir default akan ditimpa.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

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

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

Gunakan titik akhir Alibaba Gov Cloud

Kode contoh berikut menunjukkan cara mengonfigurasi OSSClient menggunakan titik akhir Gov Cloud.

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

var region = "cn-north-2-gov-1"; // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China North 2 (Ali Gov 1), atur region menjadi cn-north-2-gov-1.
// Wajib. Titik akhir internal wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China North 2 (Ali Gov 1), atur endpoint menjadi 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com'.
// Untuk menggunakan protokol HTTP, atur endpoint 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 default SDK OSS. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
var cfg = OSS.Configuration.LoadDefault();
// Secara eksplisit tentukan bahwa variabel lingkungan digunakan untuk memperoleh kredensial verifikasi identitas. Formatnya adalah 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, titik akhir default akan ditimpa.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

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

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

Konfigurasi kredensial akses

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

Memilih kredensial akses

Metode inisialisasi penyedia kredensial

Skenario

Apakah diperlukan pasangan AccessKey atau token STS sebelumnya

Kredensial dasar

Periode validitas kredensial

Metode rotasi atau refresh kredensial

Gunakan pasangan AccessKey pengguna RAM

Aplikasi yang diterapkan di lingkungan aman dan stabil yang tidak rentan terhadap serangan eksternal serta memerlukan akses jangka panjang ke layanan Alibaba Cloud tanpa perlu rotasi kredensial yang sering.

Ya

AK

Jangka panjang

Rotasi manual

Gunakan token STS

Aplikasi yang diterapkan di lingkungan tidak tepercaya dan memerlukan kontrol atas periode validitas serta izin akses.

Ya

Token STS

Sementara

Refresh manual

Gunakan ARN peran RAM

Aplikasi yang memerlukan otorisasi untuk mengakses layanan Alibaba Cloud, seperti aplikasi yang perlu mengakses layanan Alibaba Cloud lintas akun Alibaba Cloud.

Ya

Token STS

Sementara

Auto-refresh

Gunakan peran RAM ECS

Aplikasi yang diterapkan pada instans ECS Alibaba Cloud, instans ECI, atau node pekerja Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan ARN peran OIDC

Aplikasi tidak tepercaya yang diterapkan pada node pekerja Container Service for Kubernetes.

Tidak

Token STS

Sementara

Auto-refresh

Gunakan kredensial akses kustom

Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat menyesuaikan metode untuk memperoleh kredensial.

Kustom

Kustom

Kustom

Kustom

Gunakan pasangan AccessKey pengguna RAM

Anda dapat menggunakan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) akun Alibaba Cloud atau pengguna RAM untuk menginisialisasi penyedia kredensial. Metode ini cocok jika aplikasi Anda diterapkan di lingkungan aman dan stabil, memerlukan akses jangka panjang ke sumber daya OSS, dan tidak memerlukan rotasi kredensial yang sering. Namun, metode ini mengharuskan Anda memelihara pasangan AccessKey secara manual, yang menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan.

Peringatan
  • Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Jika pasangan AccessKey akun Alibaba Cloud Anda bocor, sistem Anda akan menghadapi risiko keamanan yang signifikan. Jangan gunakan pasangan AccessKey akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey pengguna RAM yang telah diberikan 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 saat pasangan AccessKey dibuat. Anda harus menyimpan pasangan AccessKey tersebut saat membuatnya. Jika Anda lupa pasangan AccessKey tersebut, Anda harus membuat yang baru.

Variabel lingkungan

  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 tersebut.

        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 tersebut.

          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 tersebut.

          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. Lingkungan tersebut mencakup IDE, antarmuka baris perintah, aplikasi desktop lainnya, dan layanan backend. Hal ini memastikan bahwa variabel lingkungan sistem terbaru dimuat.

  3. Teruskan informasi kredensial menggunakan variabel lingkungan.

    using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS guna menyederhanakan penggunaan selanjutnya.
    
    var region = "cn-hangzhou";  // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
    var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
    
    // Muat konfigurasi default SDK OSS. Konfigurasi ini secara otomatis membaca informasi kredensial, seperti pasangan AccessKey, dari variabel lingkungan.
    var cfg = OSS.Configuration.LoadDefault();
    // Secara eksplisit tentukan bahwa variabel lingkungan digunakan untuk memperoleh kredensial verifikasi identitas. Formatnya adalah 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, titik akhir default akan ditimpa. 
    if(endpoint != null) 
    {
        cfg.Endpoint = endpoint;
    } 
    
    // Buat instance klien OSS berdasarkan konfigurasi tersebut.
    using var client = new OSS.Client(cfg);

Kredensial statis

Kode contoh berikut menunjukkan cara menyematkan kredensial akses dengan secara eksplisit mengatur pasangan AccessKey.

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 guna menyederhanakan penggunaan selanjutnya.

var region = "cn-hangzhou";  // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi 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.
cfg.Region = region;   
// Jika titik akhir ditentukan, titik akhir default akan ditimpa. 
if(endpoint != null) 
{
    cfg.Endpoint = endpoint;
} 

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

Gunakan token STS

Jika aplikasi Anda memerlukan akses sementara ke OSS, Anda dapat menggunakan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan token keamanan) yang diperoleh dari Security Token Service (STS) untuk menginisialisasi penyedia kredensial. Namun, metode ini mengharuskan Anda memelihara token STS secara manual, yang menimbulkan risiko keamanan dan meningkatkan kompleksitas pemeliharaan. Selain itu, untuk mengakses OSS secara sementara beberapa kali, Anda harus merefresh token STS secara manual.

Penting
  • Untuk informasi tentang cara cepat memperoleh token STS dengan memanggil operasi OpenAPI, lihat AssumeRole.

  • Untuk informasi tentang cara memperoleh token STS menggunakan SDK, lihat Gunakan token STS untuk mengakses OSS.

  • Anda harus menentukan waktu kedaluwarsa saat membuat token STS. Token STS akan menjadi tidak valid dan tidak dapat digunakan setelah kedaluwarsa.

  • Untuk daftar titik akhir STS, lihat Endpoints.

Variabel lingkungan

  1. Atur variabel lingkungan menggunakan kredensial identitas sementara.

    Mac OS X/Linux/Unix

    Peringatan
    • Gunakan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan token keamanan) yang diperoleh dari STS, bukan pasangan AccessKey pengguna RAM.

    • ID AccessKey yang diperoleh dari STS diawali dengan `STS.`, misalnya, `STS.L4aBSCSJVMuKg5U1****`.

    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 (ID AccessKey, Rahasia AccessKey, dan token keamanan) yang diperoleh dari STS, bukan pasangan AccessKey pengguna RAM.

    • ID AccessKey yang diperoleh dari STS diawali dengan `STS.`, misalnya, `STS.L4aBSCSJVMuKg5U1****`.

    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. Teruskan informasi kredensial menggunakan variabel lingkungan.

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

Kredensial statis

Kode contoh berikut menunjukkan cara menyematkan kredensial akses dengan secara eksplisit mengatur pasangan AccessKey sementara.

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 guna menyederhanakan penggunaan selanjutnya.

var region = "cn-hangzhou";  // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.

var cfg = OSS.Configuration.LoadDefault();

// Tentukan ID AccessKey sementara dan Rahasia AccessKey sementara, bukan ID AccessKey dan Rahasia AccessKey akun Alibaba Cloud.
// Perhatikan bahwa ID AccessKey yang diperoleh dari STS diawali dengan STS, seperti yang ditunjukkan dalam kode berikut.
var access_key_id = "STS.****************";
var access_key_secret = "yourAccessKeySecret";
// Tentukan token STS yang diperoleh.
var securityToken = "yourSecurityToken";
// Buat penyedia kredensial statis dan secara eksplisit atur ID AccessKey sementara, Rahasia AccessKey sementara, dan token STS.
cfg.CredentialsProvider = new OSS.Credentials.StaticCredentialsProvider(access_key_id, access_key_secret, securityToken);

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

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

Gunakan ARN peran RAM

Jika aplikasi Anda memerlukan otorisasi untuk mengakses OSS, seperti mengakses OSS lintas akun Alibaba Cloud yang berbeda, Anda dapat menggunakan Nama Sumber Daya Alibaba Cloud (ARN) peran RAM untuk menginisialisasi penyedia kredensial. Implementasi dasar metode ini menggunakan token STS. Saat Anda menentukan ARN peran RAM, alat Credentials memperoleh token STS dari STS. Alat ini juga memanggil operasi AssumeRole untuk meminta token STS baru sebelum sesi saat ini kedaluwarsa. Selain itu, Anda dapat memberikan nilai pada parameter policy untuk membatasi peran RAM ke set izin yang lebih kecil.

Penting
  • Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Jika pasangan AccessKey akun Alibaba Cloud Anda bocor, sistem Anda akan menghadapi risiko keamanan yang signifikan. Jangan gunakan pasangan AccessKey akun Alibaba Cloud. Sebagai gantinya, gunakan pasangan AccessKey pengguna RAM yang telah diberikan 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 saat pasangan AccessKey dibuat. Anda harus menyimpan pasangan AccessKey tersebut saat membuatnya. Jika Anda lupa pasangan AccessKey tersebut, Anda harus membuat yang baru.

  • Untuk informasi selengkapnya tentang cara memperoleh ARN peran RAM, 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 pasangan AccessKey dan ARN peran RAM.

    using OSS = AlibabaCloud.OSS.V2;  // Buat alias untuk SDK Alibaba Cloud OSS guna menyederhanakan penggunaan selanjutnya.
    
    var region = "cn-hangzhou";  // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
    var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
    
    // Konfigurasi kredensial Alibaba Cloud - Gunakan ARN peran RAM.
    // Untuk informasi selengkapnya tentang jenis kredensial, lihat https://github.com/aliyun/credentials-csharp.
    var credConfig = new Aliyun.Credentials.Models.Config()
    {
        // Tentukan jenis kredensial sebagai ARN peran RAM.
        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 mengatur parameter ini menggunakan variabel lingkungan ALIBABA_CLOUD_ROLE_ARN.
        RoleArn = "acs:ram::***************:role/******",
        // Nama sesi peran. Parameter ini digunakan untuk mengidentifikasi sesi saat ini.
        RoleSessionName = "<RoleSessionName>",
        // Opsional. Kebijakan izin yang akan diasumsikan.
        Policy = "<Policy>",
        // Opsional. Periode validitas token STS dalam detik.
        RoleSessionExpiration = 3600,
    };
    
    // Buat instance klien kredensial untuk memperoleh kredensial akses sementara.
    var credClient = new Aliyun.Credentials.Client(credConfig);
    
    // Konversikan kredensial umum menjadi penyedia kredensial yang diperlukan oleh SDK OSS.
    var credentialsProvider = new OSS.Credentials.CredentialsProvideFunc(() =>
    {
        // Peroleh kredensial sementara.
        var credential = credClient.GetCredential();
    
        // Buat objek kredensial yang diperlukan 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.
    // Secara default, informasi kredensial dimuat dari variabel lingkungan. Dalam contoh ini, ditimpa oleh kredensial kustom.
    var cfg = OSS.Configuration.LoadDefault();
    // Atur wilayah OSS.
    cfg.Region = region;
    // Atur penyedia kredensial kustom.
    cfg.CredentialsProvider = credentialsProvider;
    
    // Jika titik akhir kustom ditentukan, pengaturan default akan ditimpa.
    if (endpoint != null)
    {
        cfg.Endpoint = endpoint;
    }
    
    // Buat instance klien OSS berdasarkan konfigurasi tersebut.
    using var client = new OSS.Client(cfg);
    
    // Buat paginator untuk operasi ListBuckets.
    // Ini digunakan untuk memperoleh semua bucket OSS di bawah akun saat ini.
    var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());
    
    // Iterasi secara asinkron melalui hasil terpaginasi bucket.
    Console.WriteLine("Buckets:");
    await foreach (var page in paginator.IterPageAsync())
    {
        // Telusuri bucket di 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}");
        }
    }
    

Gunakan peran RAM ECS

Jika aplikasi Anda berjalan di instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes, kami menyarankan Anda menggunakan peran RAM ECS untuk menginisialisasi penyedia kredensial. Implementasi dasar metode ini menggunakan token STS. Peran RAM ECS memungkinkan Anda mengaitkan peran dengan instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes untuk secara otomatis merefresh token STS di dalam instans. Metode ini menghilangkan risiko keamanan dan beban pemeliharaan dari pengelolaan manual pasangan AccessKey atau token STS karena Anda tidak perlu menyediakannya. Untuk informasi selengkapnya tentang cara memperoleh peran RAM ECS, 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 Alibaba Cloud OSS guna menyederhanakan penggunaan selanjutnya.
    using Aliyun.Credentials.Models;
    
    var region = "cn-hangzhou";  // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
    var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
    
    // Buat konfigurasi kredensial dan gunakan peran RAM ECS untuk autentikasi.
    var credConfig = new Aliyun.Credentials.Models.Config()
    {
        // Jenis kredensial.
        Type = "ecs_ram_role",
        // Nama peran. Parameter ini opsional. Jika Anda tidak menentukan parameter ini, nama peran akan diperoleh secara otomatis. Kami menyarankan Anda mengatur parameter ini untuk mengurangi permintaan.
        RoleName = "<RoleName>"
    };
    
    // Buat klien kredensial untuk memperoleh kredensial akses sementara.
    var credClient = new Aliyun.Credentials.Client(credConfig);
    
    // Konversikan kredensial umum menjadi penyedia kredensial yang diperlukan oleh SDK OSS.
    var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() =>
    {
        // Peroleh kredensial sementara.
        var credential = credClient.GetCredential();
    
        // Buat objek kredensial yang diperlukan 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 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, pengaturan default akan ditimpa.
    if (endpoint != null)
    {
        cfg.Endpoint = endpoint;
    }
    
    // Buat instance klien OSS berdasarkan konfigurasi tersebut.
    using var client = new OSS.Client(cfg);
    
    // Peroleh semua bucket OSS di bawah akun peran saat ini.
    var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());
    
    // Iterasi secara asinkron melalui hasil terpaginasi bucket.
    Console.WriteLine("Buckets:");
    await foreach (var page in paginator.IterPageAsync())
    {
        // Telusuri bucket di 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}");
        }
    }

Gunakan ARN peran OIDC

Setelah Anda mengonfigurasi peran RAM untuk node pekerja di Container Service for Kubernetes, aplikasi dalam pod pada node tersebut dapat memperoleh token STS peran terkait melalui layanan meta global, mirip dengan aplikasi yang diterapkan di ECS. Namun, jika aplikasi tidak tepercaya diterapkan di kluster kontainer, Anda mungkin tidak ingin aplikasi tersebut memperoleh token STS peran RAM instans yang terkait dengan node pekerja melalui layanan meta global. Contoh aplikasi tidak tepercaya adalah aplikasi yang diajukan oleh pelanggan Anda yang kodenya tidak terbuka bagi Anda. Untuk menghindari kompromi keamanan sumber daya cloud Anda sekaligus memungkinkan aplikasi tidak tepercaya ini memperoleh token STS yang diperlukan secara aman dan meminimalkan izin di tingkat aplikasi, Anda dapat menggunakan fitur RAM Roles for Service Accounts (RRSA). Implementasi dasar metode ini menggunakan token STS. Kluster kontainer Alibaba Cloud membuat dan memasang file token OpenID Connect (OIDC) akun layanan yang sesuai untuk setiap pod aplikasi dan menyuntikkan informasi konfigurasi terkait ke dalam variabel lingkungan. Alat Credentials mengambil informasi konfigurasi dari variabel lingkungan dan memanggil operasi AssumeRoleWithOIDC STS untuk memperoleh token STS peran yang terikat. Metode ini menghilangkan risiko keamanan dan beban pemeliharaan dari pengelolaan manual pasangan AccessKey atau token STS karena Anda tidak perlu menyediakannya. Untuk informasi selengkapnya, lihat Isolasi izin Pod berdasarkan 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 penggunaan selanjutnya.
    using Aliyun.Credentials.Models;
    
    var region = "cn-hangzhou";  // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
    var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
    
    // Buat konfigurasi kredensial dan gunakan ARN peran OIDC untuk autentikasi.
    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_IdP_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. Kebijakan izin yang akan diasumsikan.
        Policy = "<Policy>",
        // Opsional. Periode validitas token STS.
        RoleSessionExpiration = 3600,
    };
    
    // Buat klien kredensial untuk memperoleh kredensial akses sementara.
    var credClient = new Aliyun.Credentials.Client(credConfig);
    
    // Konversikan kredensial umum menjadi penyedia kredensial yang diperlukan oleh SDK OSS.
    var credentialsProvider = new OSS.Credentials.CredentialsProvideFunc(() =>
    {
        // Peroleh kredensial sementara.
        var credential = credClient.GetCredential();
    
        // Buat objek kredensial yang diperlukan 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 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, pengaturan default akan ditimpa.
    if (endpoint != null)
    {
        cfg.Endpoint = endpoint;
    }
    
    // Buat instance klien OSS berdasarkan konfigurasi tersebut.
    using var client = new OSS.Client(cfg);
    
    // Peroleh semua bucket OSS di bawah akun peran saat ini.
    var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());
    
    // Iterasi secara asinkron melalui hasil terpaginasi bucket.
    Console.WriteLine("Buckets:");
    await foreach (var page in paginator.IterPageAsync())
    {
        // Telusuri bucket di 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}");
        }
    }

Gunakan kredensial akses kustom

Jika metode konfigurasi kredensial di atas tidak memenuhi kebutuhan Anda, Anda dapat mengimplementasikan metode kustom untuk memperoleh kredensial.

Gunakan antarmuka Credentials.CredentialsProvideFunc

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

var region = "cn-hangzhou";  // Wajib. Wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region menjadi cn-hangzhou.
var endpoint = null as string;  // Opsional. Titik akhir yang digunakan untuk mengakses OSS. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.

// Secara eksplisit atur kredensial akses. Ini hanya untuk tujuan demonstrasi. Dalam proyek aktual, Anda dapat memperoleh kredensial dari variabel lingkungan.
var AccessKeyId = "your AccessKeyId";  // Wajib. ID AccessKey pengguna RAM atau ID AccessKey sementara yang diperoleh dari STS.
var AccessKeySecret = "your AccessKeySecret";  // Wajib. Rahasia AccessKey pengguna RAM atau Rahasia AccessKey sementara yang diperoleh dari STS.
// var SecurityToken = "your STS Token";  // Opsional. Anda dapat mengonfigurasi variabel ini jika menggunakan kredensial akses sementara.

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

    // Gunakan kredensial akses sementara untuk membuat objek kredensial yang diperlukan oleh SDK OSS. 
    // return new OSS.Credentials.Credentials(
    //     AccessKeyId,      // ID AccessKey sementara.
    //     AccessKeySecret,  // Rahasia AccessKey sementara.
    //     SecurityToken);   // 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, pengaturan default akan ditimpa.
if (endpoint != null)
{
    cfg.Endpoint = endpoint;
}

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

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

// Iterasi secara asinkron melalui hasil terpaginasi bucket.
Console.WriteLine("Buckets:");
await foreach (var page in paginator.IterPageAsync())
{
    // Telusuri bucket di 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}");
    }
}

Kode contoh

OSS SDK for C# V2 menyediakan berbagai kode contoh untuk referensi 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

Peroleh wilayah bucket (C# SDK V2)

GetBucketLocation.cs

Peroleh informasi tentang bucket (C# SDK V2)

GetBucketInfo.cs

Peroleh kapasitas penyimpanan bucket (C# SDK V2)

GetBucketStat.cs

Hapus bucket (C# SDK V2)

DeleteBucket.cs

Unggah sederhana (C# SDK V2)

PutObject.cs

Unggah lampiran (C# SDK V2)

AppendObject.cs

Unggah multipart (C# SDK V2)

MultipartUpload.cs

Unggah formulir (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