Integrasi cepat
Integrasikan OSS SDK for C# V2:
Prasyarat
-
Memerlukan
.NET Framework 4.7.1atau versi yang lebih baru. -
Mendukung
.NET Standard 2.0dan versi yang lebih baru. -
Mendukung
.NET 5.0dan versi yang lebih baru. -
Untuk menginstal atau memperbarui lingkungan .NET Anda:
-
Untuk .NET Framework: Kunjungi situs web resmi Microsoft untuk mengunduh dan menginstal .NET Framework 4.7.1 atau versi yang lebih baru.
-
Untuk .NET Standard: Pastikan implementasi .NET yang kompatibel telah diinstal (.NET Framework, .NET, atau platform pendukung lainnya).
-
Untuk .NET: Kunjungi situs web resmi .NET untuk mengunduh dan menginstal .NET 5.0 atau versi yang lebih baru.
-
Instal SDK
Gunakan OSS SDK for C# V2 terbaru agar kode contoh berjalan sesuai harapan.
Instal menggunakan NuGet
-
Periksa apakah NuGet sudah terinstal:
-
Pastikan NuGet telah diinstal di Visual Studio. Jika belum, buka Visual Studio Installer melalui Tools > Get Tools and Features, lalu pilih workload .NET desktop development atau ASP.NET and web development.
-
-
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. -
Pilih
AlibabaCloud.OSS.V2dari hasil pencarian. Pastikan Anda memilih versi stabil terbaru. -
Klik Install dan tunggu hingga proses instalasi selesai.
-
-
Verifikasi instalasi:
-
Setelah instalasi,
AlibabaCloud.OSS.V2muncul di bawah References dalam Solution Explorer.
-
Instal dengan mengimpor proyek
-
Clone repositori GitHub:
-
Buka command prompt atau Git Bash dan 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 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 yang muncul, buka tab Projects, temukan dan pilih proyek
AlibabaCloud.OSS.V2, lalu klik OK.
-
Konfigurasi kredensial akses
Konfigurasikan kredensial akses menggunakan pasangan AccessKey pengguna RAM.
-
Di Konsol RAM, buat pengguna RAM dengan Permanent AccessKey Pair. Simpan pasangan AccessKey tersebut dan berikan izin
AliyunOSSFullAccesskepada pengguna RAM. -
Konfigurasikan variabel lingkungan menggunakan pasangan AccessKey pengguna RAM.
Linux
-
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-
Jalankan perintah berikut untuk menerapkan konfigurasi.
source ~/.bashrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
Jalankan perintah berikut di terminal untuk memeriksa jenis shell default.
echo $SHELL-
Ikuti langkah-langkah sesuai jenis shell default Anda.
Zsh
-
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.zshrc.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
Jalankan perintah berikut untuk menerapkan konfigurasi.
source ~/.zshrc -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
Jalankan perintah berikut untuk menambahkan pengaturan variabel lingkungan ke file
~/.bash_profile.echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bash_profile echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bash_profile -
Jalankan perintah berikut untuk menerapkan konfigurasi.
source ~/.bash_profile -
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
Jalankan perintah berikut di Command Prompt.
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 dikonfigurasi.
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
-
PowerShell
-
Jalankan perintah berikut di PowerShell.
[Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::SetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", "YOUR_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)-
Jalankan perintah berikut untuk memverifikasi bahwa variabel lingkungan telah dikonfigurasi.
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
Inisialisasi client
Inisialisasi OSSClient dengan wilayah dan titik akhir, lalu jalankan kode uji coba.
using System.Text; // Impor namespace System.Text untuk memproses pengkodean karakter, seperti string berkode UTF-8.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 OSS SDK. 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 mendapatkan 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 instans client 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 array byte.
var content = "hello oss!";
// Konversi string menjadi array 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, 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.
Pengunggahan 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==
Konfigurasi client
Gunakan nama domain kustom
Objek yang diakses melalui titik akhir OSS default mungkin tidak dapat dipratinjau di browser. Petakan nama domain kustom untuk mengakses OSS agar memungkinkan pratinjau di browser dan akselerasi CDN.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 OSS SDK. 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 mendapatkan 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 instans client OSS berdasarkan konfigurasi tersebut.
using var client = new OSS.Client(cfg);
// Gunakan client yang telah dibuat untuk melakukan operasi selanjutnya...
Gunakan titik akhir internal
Gunakan titik akhir internal untuk mengakses OSS di wilayah yang sama, sehingga mengurangi biaya trafik dan meningkatkan kecepatan akses.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 OSS SDK. 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 mendapatkan 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 instans client OSS berdasarkan konfigurasi tersebut.
using var client = new OSS.Client(cfg);
// Gunakan client yang telah dibuat untuk melakukan operasi selanjutnya...
Gunakan titik akhir percepatan transfer
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 OSS SDK. 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 mendapatkan 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 instans client OSS berdasarkan konfigurasi tersebut.
using var client = new OSS.Client(cfg);
// Gunakan client yang telah dibuat untuk melakukan operasi selanjutnya...
Gunakan nama domain pribadi
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 OSS SDK. 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 mendapatkan 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 instans client OSS berdasarkan konfigurasi tersebut.
using var client = new OSS.Client(cfg);
// Gunakan client yang telah dibuat untuk melakukan operasi selanjutnya...
Gunakan titik akhir Alibaba Gov Cloud
Konfigurasikan OSSClient dengan titik akhir Gov Cloud:
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 OSS SDK. 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 mendapatkan 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 instans client OSS berdasarkan konfigurasi tersebut.
using var client = new OSS.Client(cfg);
// Gunakan client yang telah dibuat untuk melakukan operasi selanjutnya...
Konfigurasi kredensial akses
OSS mendukung beberapa metode inisialisasi kredensial. Pilih salah satu sesuai kebutuhan autentikasi Anda.
Gunakan pasangan AccessKey pengguna RAM
Inisialisasi penyedia kredensial dengan pasangan AccessKey (ID AccessKey dan Rahasia AccessKey) pengguna RAM. Metode ini paling cocok untuk lingkungan aman yang memerlukan akses OSS jangka panjang tanpa rotasi kredensial yang sering. Pemeliharaan pasangan AccessKey secara manual diperlukan.
-
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kredensial yang bocor mengekspos sistem Anda terhadap risiko keamanan signifikan. Gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan sebagai gantinya.
-
ID AccessKey dan Rahasia AccessKey hanya ditampilkan saat pembuatan. Simpan segera — kredensial yang hilang tidak dapat dipulihkan. Buat pasangan AccessKey.
Variabel lingkungan
-
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 memodifikasi variabel lingkungan sistem, restart IDE, CLI, dan lingkungan runtime lainnya untuk memuat nilai yang diperbarui.
-
Teruskan informasi kredensial menggunakan variabel lingkungan.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 OSS SDK. 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 mendapatkan 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 instans client OSS berdasarkan konfigurasi tersebut. using var client = new OSS.Client(cfg);
Kredensial statis
Hard-code kredensial akses dengan mengatur pasangan AccessKey secara langsung.
Jangan menyematkan kredensial akses dalam aplikasi di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 atur secara eksplisit 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 instans client OSS berdasarkan konfigurasi tersebut.
using var client = new OSS.Client(cfg);
Gunakan token STS
Gunakan kredensial identitas sementara (ID AccessKey, Rahasia AccessKey, dan token keamanan) dari STS untuk menginisialisasi penyedia kredensial guna akses OSS sementara. Metode ini memerlukan pemeliharaan dan refresh token STS secara manual.
-
Dapatkan token STS dengan cepat dengan memanggil AssumeRole.
-
Dapatkan token STS menggunakan SDK: Gunakan token STS untuk mengakses OSS.
-
Anda harus menentukan waktu kedaluwarsa saat menghasilkan token STS. Token STS menjadi tidak valid dan tidak dapat digunakan setelah kedaluwarsa.
-
STS Endpoints.
Variabel lingkungan
-
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> -
-
Teruskan informasi kredensial menggunakan variabel lingkungan.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 OSS SDK. 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 mendapatkan 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 instans client OSS berdasarkan konfigurasi tersebut. using var client = new OSS.Client(cfg);
Kredensial statis
Hard-code kredensial akses dengan mengatur pasangan AccessKey sementara secara langsung.
Jangan menyematkan kredensial akses dalam aplikasi di lingkungan produksi. Metode ini hanya untuk tujuan pengujian.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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, 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 atur secara eksplisit ID AccessKey sementara, Rahasia AccessKey, 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 instans client OSS berdasarkan konfigurasi tersebut.
using var client = new OSS.Client(cfg);
Gunakan ARN peran RAM
Gunakan ARN peran RAM untuk menginisialisasi penyedia kredensial guna akses OSS lintas akun. Tool Credentials secara otomatis mendapatkan dan merefresh token STS melalui operasi AssumeRole. Gunakan parameter policy untuk membatasi izin.
-
Akun Alibaba Cloud memiliki izin penuh atas semua sumber daya. Kredensial yang bocor mengekspos sistem Anda terhadap risiko keamanan signifikan. Gunakan pasangan AccessKey pengguna RAM dengan izin minimum yang diperlukan sebagai gantinya.
-
ID AccessKey dan Rahasia AccessKey hanya ditampilkan saat pembuatan. Simpan segera — kredensial yang hilang tidak dapat dipulihkan. Buat pasangan AccessKey.
-
Dapatkan ARN peran RAM: Buat peran RAM.
-
Tambahkan dependensi Aliyun.Credentials.
dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json -
Konfigurasikan kredensial akses menggunakan pasangan AccessKey dan ARN peran RAM.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 lebih lanjut 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 instans klien kredensial untuk mendapatkan kredensial akses sementara. var credClient = new Aliyun.Credentials.Client(credConfig); // Konversi kredensial umum menjadi penyedia kredensial yang diperlukan oleh OSS SDK. var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() => { // Dapatkan kredensial sementara. var credential = credClient.GetCredential(); // Buat objek kredensial yang diperlukan oleh OSS SDK. return new OSS.Credentials.Credentials( credential.AccessKeyId, // ID AccessKey sementara. credential.AccessKeySecret, // Rahasia AccessKey sementara. credential.SecurityToken); // Token STS. }); // Muat konfigurasi default OSS SDK. // 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 instans client OSS berdasarkan konfigurasi tersebut. using var client = new OSS.Client(cfg); // Buat paginator untuk operasi ListBuckets. // Ini digunakan untuk mendapatkan semua bucket OSS di bawah akun 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()) { // Telusuri 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}"); } }
Gunakan peran RAM ECS
Untuk aplikasi pada instans ECS, instans ECI, atau node pekerja Container Service for Kubernetes, gunakan peran RAM ECS untuk menginisialisasi penyedia kredensial. Ini mengaitkan peran dengan instans atau node Container Service for Kubernetes untuk merefresh token STS secara otomatis tanpa manajemen kredensial manual. Buat peran RAM.
-
Tambahkan dependensi Aliyun.Credentials.
dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json -
Konfigurasikan kredensial akses menggunakan peran RAM ECS.
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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 tidak ditentukan, nama peran akan diperoleh secara otomatis. Kami menyarankan Anda mengatur parameter ini untuk mengurangi permintaan. RoleName = "<RoleName>" }; // Buat klien kredensial untuk mendapatkan kredensial akses sementara. var credClient = new Aliyun.Credentials.Client(credConfig); // Konversi kredensial umum menjadi penyedia kredensial yang diperlukan oleh OSS SDK. var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() => { // Dapatkan kredensial sementara. var credential = credClient.GetCredential(); // Buat objek kredensial yang diperlukan oleh OSS SDK. 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 instans client OSS berdasarkan konfigurasi tersebut. using var client = new OSS.Client(cfg); // Dapatkan 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()) { // Telusuri 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}"); } }
Gunakan ARN peran OIDC
Untuk aplikasi tidak tepercaya pada node pekerja Container Service for Kubernetes, gunakan RRSA (RAM Roles for Service Accounts) dengan ARN peran OIDC untuk mengisolasi izin tingkat pod. Kluster memasang file token OIDC ke setiap pod dan menyuntikkan konfigurasi ke variabel lingkungan. Tool Credentials memanggil AssumeRoleWithOIDC untuk mendapatkan token STS secara otomatis, sehingga menghilangkan manajemen kredensial manual. Isolasi izin Pod berdasarkan 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 Alibaba Cloud OSS SDK 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 mendapatkan kredensial akses sementara. var credClient = new Aliyun.Credentials.Client(credConfig); // Konversi kredensial umum menjadi penyedia kredensial yang diperlukan oleh OSS SDK. var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() => { // Dapatkan kredensial sementara. var credential = credClient.GetCredential(); // Buat objek kredensial yang diperlukan oleh OSS SDK. 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 instans client OSS berdasarkan konfigurasi tersebut. using var client = new OSS.Client(cfg); // Dapatkan 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()) { // Telusuri 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}"); } }
Gunakan kredensial akses kustom
Implementasikan penyedia kredensial kustom jika metode di atas tidak memenuhi kebutuhan Anda.
Gunakan kelas Credentials.CredentialsProviderFunc
using OSS = AlibabaCloud.OSS.V2; // Buat alias untuk Alibaba Cloud OSS SDK 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.
// Atur secara eksplisit 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.
// Konversi kredensial umum menjadi penyedia kredensial yang diperlukan oleh OSS SDK.
var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() =>
{
// Gunakan kredensial jangka panjang untuk membuat objek kredensial yang diperlukan oleh OSS SDK.
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 OSS SDK.
// 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 instans client OSS berdasarkan konfigurasi tersebut.
using var client = new OSS.Client(cfg);
// Dapatkan 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())
{
// Telusuri 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}");
}
}
Kode contoh
OSS SDK for C# V2 menyediakan kode contoh untuk operasi umum.
|
Contoh |
File contoh di GitHub |
|
Unggah objek menggunakan URL yang ditandatangani (C# SDK V2) |
|