Quick start
Ikuti langkah-langkah berikut untuk mulai menggunakan OSS SDK for C# 2.0:
Environment preparation
Memerlukan
.NET Framework 4.7.1atau versi yang lebih baru.Memerlukan
.NET Standard 2.0atau versi yang lebih baru.Memerlukan
.NET 5.0atau 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 Tools → Get 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 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, lalu lihat detailnya dan pilih versi stabil terbaru.Klik Install dan tunggu hingga proses instalasi selesai.
Verifikasi instalasi:
Setelah instalasi selesai,
AlibabaCloud.OSS.V2akan 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 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 dan pilih Add → Reference....
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.
Dari Konsol RAM, buat pengguna RAM dengan permanent AccessKey pair, simpan pasangan AccessKey tersebut, lalu berikan izin
AliyunOSSFullAccesskepada pengguna tersebut.Atur variabel lingkungan menggunakan pasangan AccessKey pengguna RAM.
Linux
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'" >> ~/.bashrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bashrcJalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
macOS
Jalankan perintah berikut untuk memeriksa shell default Anda.
echo $SHELLIkuti langkah-langkah berikut sesuai dengan shell default Anda.
Zsh
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'" >> ~/.zshrcJalankan perintah berikut untuk menerapkan perubahan.
source ~/.zshrcJalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
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_profileJalankan perintah berikut untuk menerapkan perubahan.
source ~/.bash_profileJalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Windows
CMD
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"Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah diatur.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
PowerShell
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)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
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_IDOSS_ACCESS_KEY_SECRETtrueUse 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.
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.
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
Konfigurasikan variabel lingkungan menggunakan pasangan AccessKey pengguna RAM.
Linux
-
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-
Terapkan perubahan.
source ~/.bashrc -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
Jalankan perintah berikut di terminal untuk melihat jenis shell default:
echo $SHELL-
Konfigurasikan variabel lingkungan berdasarkan jenis shell default.
Zsh
-
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 -
Terapkan perubahan.
source ~/.zshrc -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
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 -
Terapkan perubahan.
source ~/.bash_profile -
Periksa apakah variabel lingkungan telah berlaku:
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
Jalankan perintah berikut di CMD:
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"-
Periksa apakah variabel lingkungan berlaku:
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
-
PowerShell
-
Jalankan perintah berikut di PowerShell:
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)-
Periksa apakah variabel lingkungan berlaku:
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
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.
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.
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.
Untuk mendapatkan kredensial identitas sementara dengan memanggil operasi OpenAPI, lihat AssumeRole - Obtain temporary identity credentials for a role session.
Untuk mendapatkan kredensial identitas sementara menggunakan SDK, lihat Use temporary identity credentials from Security Token Service (STS) to access OSS.
Token secara otomatis menjadi tidak valid setelah masa berlaku habis.
Untuk daftar titik akhir STS, lihat Endpoints.
Environment variables
Atur variabel lingkungan menggunakan kredensial identitas sementara.
macOS, Linux, dan Unix
PeringatanGunakan 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
PeringatanGunakan 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>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.
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.
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.
Tambahkan dependensi Aliyun.Credentials.
dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.jsonKonfigurasikan 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.
Tambahkan dependensi Aliyun.Credentials.
dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.jsonKonfigurasikan 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.
Tambahkan dependensi Aliyun.Credentials.
dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json
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 |
Unggah objek menggunakan URL yang ditandatangani (C# SDK V2) | |