クイックインテグレーション
OSS SDK for C# V2 のインテグレーション:
前提条件
-
.NET Framework 4.7.1以降が必要です。 -
.NET Standard 2.0以降をサポートしています。 -
.NET 5.0以降をサポートしています。 -
.NET 環境をインストールまたは更新するには:
-
.NET Framework の場合: Microsoft 公式サイトにアクセスして、.NET Framework 4.7.1 以降をダウンロードしてインストールします。
-
.NET Standard の場合: 互換性のある .NET 実装 (.NET Framework、.NET、またはその他のサポートプラットフォーム) がインストールされていることを確認します。
-
.NET の場合: .NET 公式サイトにアクセスして、.NET 5.0 以降をダウンロードしてインストールします。
-
SDK のインストール
サンプルコードが期待どおりに実行されるように、最新の OSS SDK for C# V2 を使用してください。
NuGet を使用したインストール
-
NuGet がインストールされているかの確認:
-
Visual Studio に NuGet がインストールされていることを確認します。インストールされていない場合は、[ツール] > [ツールと機能を取得] から Visual Studio Installer を開き、[.NET デスクトップ開発] または [ASP.NET と Web 開発] ワークロードを選択します。
-
-
プロジェクトを開く:
-
Visual Studio でプロジェクトを作成するか、既存のプロジェクトを開きます。
-
-
NuGet パッケージマネージャーを開く:
-
メニューバーで、[ツール] > [NuGet パッケージマネージャー] > [ソリューションの NuGet パッケージの管理] を選択します。
-
-
SDK の検索とインストール:
-
NuGet パッケージマネージャーの [参照] タブで、
AlibabaCloud.OSS.V2を検索します。 -
結果から
AlibabaCloud.OSS.V2を選択します。最新の安定バージョンを選択していることを確認してください。 -
[インストール] をクリックし、インストールが完了するのを待ちます。
-
-
インストールの確認:
-
インストール後、ソリューションエクスプローラーの [参照] の下に
AlibabaCloud.OSS.V2が表示されます。
-
プロジェクトのインポートによるインストール
-
GitHub リポジトリのクローン:
-
コマンドプロンプトまたは Git Bash を開き、次のコマンドを実行してリポジトリをクローンします。
git clone https://github.com/aliyun/alibabacloud-oss-csharp-sdk-v2.git
-
-
ソリューションにプロジェクトを追加する:
-
Visual Studio で、ソリューションを右クリックし、[追加] > [既存のプロジェクト...] を選択します。
-
クローンしたソースコードディレクトリを参照し、
AlibabaCloud.OSS.V2.csprojファイルを選択して、[開く] をクリックします。
-
-
プロジェクト参照の追加:
-
プロジェクトを右クリックし、[追加] > [参照...] を選択します。
-
表示されたダイアログボックスで、[プロジェクト] タブに移動し、
AlibabaCloud.OSS.V2プロジェクトを見つけて選択し、[OK] をクリックします。
-
アクセス認証情報の設定
RAM ユーザーの AccessKey ペアを使用してアクセス認証情報を設定します。
-
RAM コンソールで、永続的な AccessKey ペアを持つ RAM ユーザーを作成します。AccessKey ペアを保存し、RAM ユーザーに
AliyunOSSFullAccess権限を付与します。 -
RAM ユーザーの AccessKey ペアを使用して環境変数を設定します。
Linux
-
コマンドラインインターフェイスで次のコマンドを実行して、環境変数の設定を
~/.bashrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc-
次のコマンドを実行して設定を適用します。
source ~/.bashrc -
次のコマンドを実行して、環境変数が設定されていることを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを確認します。
echo $SHELL-
デフォルトのシェルタイプに応じた手順に従います。
Zsh
-
次のコマンドを実行して、環境変数の設定を
~/.zshrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
次のコマンドを実行して設定を適用します。
source ~/.zshrc -
次のコマンドを実行して、環境変数が設定されていることを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
次のコマンドを実行して、環境変数の設定を
~/.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 -
次のコマンドを実行して設定を適用します。
source ~/.bash_profile -
次のコマンドを実行して、環境変数が設定されていることを確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
コマンドプロンプトで次のコマンドを実行します。
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"-
次のコマンドを実行して、環境変数が設定されていることを確認します。
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
-
PowerShell
-
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)-
次のコマンドを実行して、環境変数が設定されていることを確認します。
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
クライアントの初期化
リージョンとエンドポイントで OSSClient を初期化し、テストコードを実行します。
using System.Text; // UTF-8 エンコード文字列などの文字コードを処理するために System.Text 名前空間をインポートします。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
var bucket = "your bucket name"; // 必須。送信先バケットの名前。
var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var key = "your object key"; // 必須。アップロードするオブジェクトの名前。フォーマットは folder/objectName です。
// OSS SDK のデフォルト設定をロードします。この設定は、環境変数から AccessKey ペアなどの認証情報を自動的に読み取ります。
var cfg = OSS.Configuration.LoadDefault();
// 環境変数を使用して本人確認のための認証情報を取得することを明示的に指定します。フォーマットは OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET です。
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// バケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。
if(endpoint != null)
{
cfg.Endpoint = endpoint;
}
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// アップロードするオブジェクトのコンテンツ。サンプルコンテンツ:単純な文字列 "hello oss!"。実際のシナリオでは、コンテンツはファイルストリームまたはバイト配列になります。
var content = "hello oss!";
// 文字列を UTF-8 エンコードのバイト配列に変換し、それを MemoryStream でラップします。
// MemoryStream はメモリ内のデータストリームを処理するために使用され、小さなファイルのアップロードに適しています。大きなファイルには FileStream を使用します。
var bodyStream = new MemoryStream(Encoding.UTF8.GetBytes(content));
// PutObjectAsync メソッドを呼び出して、オブジェクトを非同期にアップロードします。バケット、キー、およびボディを含むリクエストオブジェクトを渡す必要があります。
// このメソッドは、bodyStream 内のデータを指定されたバケットの指定されたキーパスにアップロードします。
var result = await client.PutObjectAsync(new OSS.Models.PutObjectRequest()
{
Bucket = bucket, // 送信先バケットの名前。
Key = key, // バケット内のオブジェクトの一意キー。
Body = bodyStream // アップロードするコンテンツストリーム。この例では、メモリ内の文字列データです。
});
// アップロード結果を出力します。
Console.WriteLine("PutObject done"); // 操作が完了したことを示すメッセージ。
Console.WriteLine($"StatusCode: {result.StatusCode}"); // HTTP ステータスコード。
Console.WriteLine($"RequestId: {result.RequestId}"); // トラブルシューティングに使用されるリクエスト ID。
Console.WriteLine("Response Headers:"); // レスポンスヘッダー情報。
result.Headers.ToList().ForEach(x => Console.WriteLine(x.Key + " : " + x.Value)); // すべてのレスポンスヘッダーを走査して出力します。
アップロードが成功すると、次の出力が返されます。
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==
クライアント設定
カスタムドメイン名の使用
デフォルトの OSS エンドポイントを介してアクセスされるオブジェクトは、ブラウザでプレビューできない場合があります。OSS へのアクセスにカスタムドメイン名をマッピングすることで、ブラウザのプレビューと CDN アクセラレーションを有効にできます。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
var endpoint = "https://www.example-***.com"; // 必須。ご利用のカスタムドメイン名。例:www.example-***.com。
// OSS SDK のデフォルト設定をロードします。この設定は、環境変数から AccessKey ペアなどの認証情報を自動的に読み取ります。
var cfg = OSS.Configuration.LoadDefault();
// 環境変数を使用して本人確認のための認証情報を取得することを明示的に指定します。フォーマットは OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET です。
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// バケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。
if (endpoint != null)
{
cfg.Endpoint = endpoint;
}
// CNAME オプションを有効にするには、値を true に設定する必要があります。そうしないと、カスタムドメイン名を使用できません。
cfg.UseCName = true;
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// 作成したクライアントを使用して後続の操作を実行します...
内部エンドポイントの使用
同じリージョンで OSS にアクセスするために内部エンドポイントを使用すると、トラフィックコストを削減し、アクセス速度を向上させることができます。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
var endpoint = "https://oss-cn-hangzhou-internal.aliyuncs.com"; // オプション。OSS へのアクセスに使用される内部エンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou-internal.aliyuncs.com に設定します。
// OSS SDK のデフォルト設定をロードします。この設定は、環境変数から AccessKey ペアなどの認証情報を自動的に読み取ります。
var cfg = OSS.Configuration.LoadDefault();
// 環境変数を使用して本人確認のための認証情報を取得することを明示的に指定します。フォーマットは OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET です。
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// バケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。
if (endpoint != null)
{
cfg.Endpoint = endpoint;
}
// cfg.UseInternalEndpoint = true を設定して、内部エンドポイントを指定せずに内部エンドポイントを設定することもできます。
// cfg.UseInternalEndpoint = true;
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// 作成したクライアントを使用して後続の操作を実行します...
転送アクセラレーションエンドポイントの使用
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
var endpoint = "https://oss-accelerate.aliyuncs.com"; // オプション。バケットが配置されているリージョンのアクセラレーションエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを 'https://oss-accelerate.aliyuncs.com' に設定します。
// OSS SDK のデフォルト設定をロードします。この設定は、環境変数から AccessKey ペアなどの認証情報を自動的に読み取ります。
var cfg = OSS.Configuration.LoadDefault();
// 環境変数を使用して本人確認のための認証情報を取得することを明示的に指定します。フォーマットは OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET です。
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// バケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。
if (endpoint != null)
{
cfg.Endpoint = endpoint;
}
// cfg.UseAccelerateEndpoint = true を設定して、アクセラレーションエンドポイントを指定せずにアクセラレーションエンドポイントを設定することもできます。
// cfg.UseAccelerateEndpoint = true;
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// 作成したクライアントを使用して後続の操作を実行します...
プライベートドメイン名の使用
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
var endpoint = "https://service.corp.example.com"; // 必須。ご利用の専用ドメイン名。例:https://service.corp.example.com。
// OSS SDK のデフォルト設定をロードします。この設定は、環境変数から AccessKey ペアなどの認証情報を自動的に読み取ります。
var cfg = OSS.Configuration.LoadDefault();
// 環境変数を使用して本人確認のための認証情報を取得することを明示的に指定します。フォーマットは OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET です。
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// バケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。
if (endpoint != null)
{
cfg.Endpoint = endpoint;
}
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// 作成したクライアントを使用して後続の操作を実行します...
Alibaba Gov Cloud エンドポイントの使用
Gov Cloud エンドポイントで OSSClient を設定します。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-north-2-gov-1"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国北部 2 (Ali Gov 1) リージョンにある場合、リージョンを cn-north-2-gov-1 に設定します。
// 必須。バケットが配置されているリージョンの内部エンドポイント。たとえば、バケットが中国北部 2 (Ali Gov 1) リージョンにある場合、エンドポイントを 'https://oss-cn-north-2-gov-1-internal.aliyuncs.com' に設定します。
// HTTP プロトコルを使用するには、エンドポイントを 'http://oss-cn-north-2-gov-1-internal.aliyuncs.com' に設定します。
var endpoint = "https://oss-cn-north-2-gov-1-internal.aliyuncs.com";
// OSS SDK のデフォルト設定をロードします。この設定は、環境変数から AccessKey ペアなどの認証情報を自動的に読み取ります。
var cfg = OSS.Configuration.LoadDefault();
// 環境変数を使用して本人確認のための認証情報を取得することを明示的に指定します。フォーマットは OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET です。
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
// バケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。
if (endpoint != null)
{
cfg.Endpoint = endpoint;
}
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// 作成したクライアントを使用して後続の操作を実行します...
アクセス認証情報の設定
OSS は複数の認証情報初期化メソッドをサポートしています。認証要件に基づいていずれかを選択してください。
RAM ユーザーの AccessKey ペアの使用
RAM ユーザーの AccessKey ペア (AccessKey ID と AccessKey Secret) を使用して認証情報プロバイダーを初期化します。頻繁な認証情報ローテーションなしで長期的な OSS アクセスが必要な安全な環境に最適です。手動での AccessKey ペアのメンテナンスが必要です。
-
Alibaba Cloud アカウント (root ユーザー) は、すべてのリソースに対する完全な権限を持っています。認証情報が漏洩すると、システムが重大なセキュリティリスクにさらされます。代わりに、最小限の必要権限を持つ RAM ユーザーの AccessKey ペアを使用してください。
-
AccessKey ID と AccessKey Secret は作成時にのみ表示されます。すぐに保存してください。紛失した認証情報は回復できません。AccessKey ペアの作成。
環境変数
-
RAM ユーザーの AccessKey ペアを使用して環境変数を設定します。
Linux
-
CLI で次のコマンドを実行して、環境変数の設定を
~/.bashrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.bashrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.bashrc-
変更を適用します。
source ~/.bashrc -
環境変数が有効になったか確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
macOS
-
ターミナルで次のコマンドを実行して、デフォルトのシェルタイプを表示します。
echo $SHELL-
デフォルトのシェルタイプに基づいて環境変数を設定します。
Zsh
-
次のコマンドを実行して、環境変数の設定を
~/.zshrcファイルに追加します。echo "export OSS_ACCESS_KEY_ID='YOUR_ACCESS_KEY_ID'" >> ~/.zshrc echo "export OSS_ACCESS_KEY_SECRET='YOUR_ACCESS_KEY_SECRET'" >> ~/.zshrc -
変更を適用します。
source ~/.zshrc -
環境変数が有効になったか確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
Bash
-
次のコマンドを実行して、環境変数の設定を
~/.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 -
変更を適用します。
source ~/.bash_profile -
環境変数が有効になったか確認します。
echo $OSS_ACCESS_KEY_ID echo $OSS_ACCESS_KEY_SECRET
-
-
Windows
CMD
-
CMD で次のコマンドを実行します。
setx OSS_ACCESS_KEY_ID "YOUR_ACCESS_KEY_ID" setx OSS_ACCESS_KEY_SECRET "YOUR_ACCESS_KEY_SECRET"-
環境変数が有効になったか確認します。
echo %OSS_ACCESS_KEY_ID% echo %OSS_ACCESS_KEY_SECRET%
-
PowerShell
-
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)-
環境変数が有効になったか確認します。
[Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_ID", [EnvironmentVariableTarget]::User) [Environment]::GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET", [EnvironmentVariableTarget]::User)
-
-
-
システム環境変数を変更した後、IDE、CLI、およびその他の実行環境を再起動して、更新された値をロードします。
-
環境変数を使用して認証情報を渡します。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。 var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 // OSS SDK のデフォルト設定をロードします。この設定は、環境変数から AccessKey ペアなどの認証情報を自動的に読み取ります。 var cfg = OSS.Configuration.LoadDefault(); // 環境変数を使用して本人確認のための認証情報を取得することを明示的に指定します。フォーマットは OSS_ACCESS_KEY_ID と OSS_ACCESS_KEY_SECRET です。 cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider(); // バケットのリージョンを設定します。 cfg.Region = region; // エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。 if(endpoint != null) { cfg.Endpoint = endpoint; } // 設定に基づいて OSS クライアントインスタンスを作成します。 using var client = new OSS.Client(cfg);
静的認証情報
AccessKey ペアを直接設定して、アクセス認証情報をハードコードします。
本番環境のアプリケーションにアクセス認証情報を埋め込まないでください。この方法はテスト目的でのみ使用します。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var cfg = OSS.Configuration.LoadDefault();
// RAM ユーザーの AccessKey ID と AccessKey Secret を指定します。
var access_key_id = "yourAccessKeyId";
var access_key_secret = "yourAccessKeySecret";
// 静的認証情報プロバイダーを作成し、RAM ユーザーの AccessKey ID と AccessKey Secret を明示的に設定します。
cfg.CredentialsProvider = new OSS.Credentials.StaticCredentialsProvider(access_key_id,access_key_secret);
// バケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。
if(endpoint != null)
{
cfg.Endpoint = endpoint;
}
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
STS トークンの使用
STS からの一時的な本人確認情報 (AccessKey ID、AccessKey Secret、およびセキュリティトークン) を使用して、一時的な OSS アクセスのための認証情報プロバイダーを初期化します。この方法では、手動での STS トークンのメンテナンスと更新が必要です。
-
AssumeRole を呼び出すことで、STS トークンを迅速に取得できます。
-
SDK を使用して STS トークンを取得する:STS トークンを使用して OSS にアクセスする。
-
STS トークンを生成する際には、有効期限を指定する必要があります。STS トークンは有効期限が切れると無効になり、使用できなくなります。
-
STS エンドポイント。
環境変数
-
一時的な本人確認情報を使用して環境変数を設定します。
Mac OS X/Linux/UNIX
警告-
RAM ユーザーの AccessKey ペアではなく、STS から取得した一時的な本人確認情報 (AccessKey ID、AccessKey Secret、およびセキュリティトークン) を使用します。
-
STS から取得した AccessKey ID は `STS.` で始まります。例:`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
警告-
RAM ユーザーの AccessKey ペアではなく、STS から取得した一時的な本人確認情報 (AccessKey ID、AccessKey Secret、およびセキュリティトークン) を使用します。
-
STS から取得した AccessKey ID は `STS.` で始まります。例:`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> -
-
環境変数を使用して認証情報を渡します。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。 var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 // OSS SDK のデフォルト設定をロードします。この設定は、環境変数から AccessKey ペアなどの認証情報を自動的に読み取ります。 var cfg = OSS.Configuration.LoadDefault(); // 環境変数を使用して本人確認のための認証情報を取得することを明示的に指定します。フォーマットは OSS_ACCESS_KEY_ID、OSS_ACCESS_KEY_SECRET、および OSS_SESSION_TOKEN です。 cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider(); // バケットのリージョンを設定します。 cfg.Region = region; // エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。 if(endpoint != null) { cfg.Endpoint = endpoint; } // 設定に基づいて OSS クライアントインスタンスを作成します。 using var client = new OSS.Client(cfg);
静的認証情報
一時的な AccessKey ペアを直接設定して、アクセス認証情報をハードコードします。
本番環境のアプリケーションにアクセス認証情報を埋め込まないでください。この方法はテスト目的でのみ使用します。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
var cfg = OSS.Configuration.LoadDefault();
// Alibaba Cloud アカウントの AccessKey ID と AccessKey Secret ではなく、一時的な AccessKey ID と AccessKey Secret を指定します。
// STS から取得した AccessKey ID は、次のコードに示すように STS で始まることに注意してください。
var access_key_id = "STS.****************";
var access_key_secret = "yourAccessKeySecret";
// 取得した STS トークンを指定します。
var securityToken = "yourSecurityToken";
// 静的認証情報プロバイダーを作成し、一時的な AccessKey ID、AccessKey Secret、および STS トークンを明示的に設定します。
cfg.CredentialsProvider = new OSS.Credentials.StaticCredentialsProvider(access_key_id, access_key_secret, securityToken);
// バケットのリージョンを設定します。
cfg.Region = region;
// エンドポイントが指定されている場合、デフォルトのエンドポイントは上書きされます。
if(endpoint != null)
{
cfg.Endpoint = endpoint;
}
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
RAM ロール ARN の使用
RAM ロール ARN を使用して、クロスアカウントの OSS アクセスのための認証情報プロバイダーを初期化します。Credentials ツールは、AssumeRole 操作を介して STS トークンを自動的に取得および更新します。policy パラメーターを使用して権限を制限します。
-
Alibaba Cloud アカウント (root ユーザー) は、すべてのリソースに対する完全な権限を持っています。認証情報が漏洩すると、システムが重大なセキュリティリスクにさらされます。代わりに、最小限の必要権限を持つ RAM ユーザーの AccessKey ペアを使用してください。
-
AccessKey ID と AccessKey Secret は作成時にのみ表示されます。すぐに保存してください。紛失した認証情報は回復できません。AccessKey ペアの作成。
-
RAM ロール ARN の取得:RAM ロールの作成。
-
Aliyun.Credentials の依存関係を追加します。
dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json -
AccessKey ペアと RAM ロール ARN を使用してアクセス認証情報を設定します。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。 var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 // Alibaba Cloud 認証情報の設定 - RAM ロール ARN を使用します。 // 認証情報の種類の詳細については、https://github.com/aliyun/credentials-csharp をご参照ください。 var credConfig = new Aliyun.Credentials.Models.Config() { // 認証情報の種類を RAM ロール ARN として指定します。 Type = "ram_role_arn", // 環境変数から AccessKey ID を読み取ります。 AccessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID"), // 環境変数から AccessKey Secret を読み取ります。 AccessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET"), // RAM ロールの ARN。フォーマット:acs:ram::USER_Id:role/ROLE_NAME。 // このパラメーターは、ALIBABA_CLOUD_ROLE_ARN 環境変数を使用して設定することもできます。 RoleArn = "acs:ram::***************:role/******", // ロールセッションの名前。このパラメーターは、現在のセッションを識別するために使用されます。 RoleSessionName = "<RoleSessionName>", // オプション。引き受ける権限ポリシー。 Policy = "<Policy>", // オプション。STS トークンの有効期間 (秒単位)。 RoleSessionExpiration = 3600, }; // 認証情報クライアントインスタンスを作成して、一時的なアクセス認証情報を取得します。 var credClient = new Aliyun.Credentials.Client(credConfig); // 共通の認証情報を OSS SDK が必要とする認証情報プロバイダーに変換します。 var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() => { // 一時的な認証情報を取得します。 var credential = credClient.GetCredential(); // OSS SDK が必要とする認証情報オブジェクトを構築します。 return new OSS.Credentials.Credentials( credential.AccessKeyId, // 一時的な AccessKey ID。 credential.AccessKeySecret, // 一時的な AccessKey Secret。 credential.SecurityToken); // STS トークン。 }); // OSS SDK のデフォルト設定をロードします。 // デフォルトでは、認証情報は環境変数からロードされます。この例では、カスタム認証情報で上書きされます。 var cfg = OSS.Configuration.LoadDefault(); // OSS リージョンを設定します。 cfg.Region = region; // カスタム認証情報プロバイダーを設定します。 cfg.CredentialsProvider = credentialsProvider; // カスタムエンドポイントが指定されている場合、デフォルト設定は上書きされます。 if (endpoint != null) { cfg.Endpoint = endpoint; } // 設定に基づいて OSS クライアントインスタンスを作成します。 using var client = new OSS.Client(cfg); // ListBuckets 操作のページネーターを作成します。 // これは、現在のアカウント配下のすべての OSS バケットを取得するために使用されます。 var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest()); // バケットのページ分割された結果を非同期に反復処理します。 Console.WriteLine("Buckets:"); await foreach (var page in paginator.IterPageAsync()) { // 各ページのバケットを走査します。 foreach (var bucket in page.Buckets ?? []) { // バケット情報 (名前、ストレージクラス、場所) を出力します。 Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}"); } }
ECS RAM ロールの使用
ECS インスタンス、ECI インスタンス、または Container Service for Kubernetes (ACK) ワーカーノード上のアプリケーションの場合、ECS RAM ロールを使用して認証情報プロバイダーを初期化します。これにより、インスタンスまたは ACK ノードにロールが関連付けられ、手動での認証情報管理なしで STS トークンが自動更新されます。RAM ロールの作成。
-
Aliyun.Credentials の依存関係を追加します。
dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json -
ECS RAM ロールを使用してアクセス認証情報を設定します。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。 using Aliyun.Credentials.Models; var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 // 認証情報設定を作成し、認証に ECS RAM ロールを使用します。 var credConfig = new Aliyun.Credentials.Models.Config() { // 認証情報の種類。 Type = "ecs_ram_role", // ロール名。このパラメーターはオプションです。このパラメーターを指定しない場合、ロール名は自動的に取得されます。リクエストを減らすために、このパラメーターを設定することを推奨します。 RoleName = "<RoleName>" }; // 認証情報クライアントを作成して、一時的なアクセス認証情報を取得します。 var credClient = new Aliyun.Credentials.Client(credConfig); // 共通の認証情報を OSS SDK が必要とする認証情報プロバイダーに変換します。 var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() => { // 一時的な認証情報を取得します。 var credential = credClient.GetCredential(); // OSS SDK が必要とする認証情報オブジェクトを構築します。 return new OSS.Credentials.Credentials( credential.AccessKeyId, // 一時的な AccessKey ID。 credential.AccessKeySecret, // 一時的な AccessKey Secret。 credential.SecurityToken); // STS トークン。 }); // OSS クライアントのデフォルト設定をロードします。 var cfg = OSS.Configuration.LoadDefault(); // OSS リージョンを設定します。 cfg.Region = region; // カスタム認証情報プロバイダーを設定します。 cfg.CredentialsProvider = credentialsProvider; // カスタムエンドポイントが指定されている場合、デフォルト設定は上書きされます。 if (endpoint != null) { cfg.Endpoint = endpoint; } // 設定に基づいて OSS クライアントインスタンスを作成します。 using var client = new OSS.Client(cfg); // 現在のロールアカウント配下のすべての OSS バケットを取得します。 var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest()); // バケットのページ分割された結果を非同期に反復処理します。 Console.WriteLine("Buckets:"); await foreach (var page in paginator.IterPageAsync()) { // 各ページのバケットを走査します。 foreach (var bucket in page.Buckets ?? []) { // バケット情報 (名前、ストレージクラス、場所) を出力します。 Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}"); } }
OIDC ロール ARN の使用
ACK ワーカーノード上の信頼できないアプリケーションの場合、RRSA (RAM Roles for Service Accounts) と OIDC ロール ARN を使用して、Pod レベルの権限を分離します。クラスターは OIDC トークンファイルを各 Pod にマウントし、環境変数に設定を注入します。Credentials ツールは AssumeRoleWithOIDC を呼び出して STS トークンを自動的に取得するため、手動での認証情報管理が不要になります。RRSA に基づく Pod 権限の分離。
-
Aliyun.Credentials の依存関係を追加します。
dotnet add package Aliyun.Credentials --source https://api.nuget.org/v3/index.json
-
OIDC ロール ARN を使用してアクセス認証情報を設定します。
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。 using Aliyun.Credentials.Models; var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。 var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。 // 認証情報設定を作成し、認証に OIDC ロール ARN を使用します。 var credConfig = new Aliyun.Credentials.Models.Config() { // 認証情報の種類。 Type = "oidc_role_arn", // フォーマット:acs:ram::USER_Id:role/ROLE_NAME。 // roleArn はオプションです。代わりに ALIBABA_CLOUD_ROLE_ARN 環境変数を設定できます。 RoleArn = "<RoleArn>", // フォーマット:acs:ram::USER_Id:oidc-provider/OIDC_IdP_name。 // OIDCProviderArn はオプションです。代わりに ALIBABA_CLOUD_OIDC_PROVIDER_ARN 環境変数を設定できます。 OIDCProviderArn = "<OIDCProviderArn>", // フォーマット:path。 // OIDCTokenFilePath はオプションです。代わりに ALIBABA_CLOUD_OIDC_TOKEN_FILE 環境変数を設定できます。 OIDCTokenFilePath = "/Users/xxx/xxx", // ロールセッションの名前。 RoleSessionName = "<RoleSessionName>", // オプション。引き受ける権限ポリシー。 Policy = "<Policy>", // オプション。STS トークンの有効期間。 RoleSessionExpiration = 3600, }; // 認証情報クライアントを作成して、一時的なアクセス認証情報を取得します。 var credClient = new Aliyun.Credentials.Client(credConfig); // 共通の認証情報を OSS SDK が必要とする認証情報プロバイダーに変換します。 var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() => { // 一時的な認証情報を取得します。 var credential = credClient.GetCredential(); // OSS SDK が必要とする認証情報オブジェクトを構築します。 return new OSS.Credentials.Credentials( credential.AccessKeyId, // 一時的な AccessKey ID。 credential.AccessKeySecret, // 一時的な AccessKey Secret。 credential.SecurityToken); // STS トークン。 }); // OSS クライアントのデフォルト設定をロードします。 var cfg = OSS.Configuration.LoadDefault(); // OSS リージョンを設定します。 cfg.Region = region; // カスタム認証情報プロバイダーを設定します。 cfg.CredentialsProvider = credentialsProvider; // カスタムエンドポイントが指定されている場合、デフォルト設定は上書きされます。 if (endpoint != null) { cfg.Endpoint = endpoint; } // 設定に基づいて OSS クライアントインスタンスを作成します。 using var client = new OSS.Client(cfg); // 現在のロールアカウント配下のすべての OSS バケットを取得します。 var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest()); // バケットのページ分割された結果を非同期に反復処理します。 Console.WriteLine("Buckets:"); await foreach (var page in paginator.IterPageAsync()) { // 各ページのバケットを走査します。 foreach (var bucket in page.Buckets ?? []) { // バケット情報 (名前、ストレージクラス、場所) を出力します。 Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}"); } }
カスタムアクセス認証情報の使用
上記の方法が要件を満たさない場合は、カスタム認証情報プロバイダーを実装します。
Credentials.CredentialsProviderFunc クラスの使用
using OSS = AlibabaCloud.OSS.V2; // Alibaba Cloud OSS SDK のエイリアスを作成して、後続の使用を簡素化します。
var region = "cn-hangzhou"; // 必須。バケットが配置されているリージョン。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
var endpoint = null as string; // オプション。OSS へのアクセスに使用されるエンドポイント。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
// アクセス認証情報を明示的に設定します。これはデモンストレーション目的のみです。実際のプロジェクトでは、環境変数から認証情報を取得できます。
var AccessKeyId = "your AccessKeyId"; // 必須。RAM ユーザーの AccessKey ID または STS から取得した一時的な AccessKey ID。
var AccessKeySecret = "your AccessKeySecret"; // 必須。RAM ユーザーの AccessKey Secret または STS から取得した一時的な AccessKey Secret。
// var SecurityToken = "your STS Token"; // オプション。一時的なアクセス認証情報を使用する場合に、この変数を設定できます。
// 共通の認証情報を OSS SDK が必要とする認証情報プロバイダーに変換します。
var credentialsProvider = new OSS.Credentials.CredentialsProviderFunc(() =>
{
// 長期的な認証情報を使用して、OSS SDK が必要とする認証情報オブジェクトを構築します。
return new OSS.Credentials.Credentials(
AccessKeyId, // RAM ユーザーの AccessKey ID。
AccessKeySecret); // RAM ユーザーの AccessKey Secret。
// 一時的なアクセス認証情報を使用して、OSS SDK が必要とする認証情報オブジェクトを構築します。
// return new OSS.Credentials.Credentials(
// AccessKeyId, // 一時的な AccessKey ID。
// AccessKeySecret, // 一時的な AccessKey Secret。
// SecurityToken); // STS トークン。
});
// OSS クライアントのデフォルト設定をロードします。
var cfg = OSS.Configuration.LoadDefault();
// OSS リージョンを設定します。
cfg.Region = region;
// カスタム認証情報プロバイダーを設定します。
cfg.CredentialsProvider = credentialsProvider;
// カスタムエンドポイントが指定されている場合、デフォルト設定は上書きされます。
if (endpoint != null)
{
cfg.Endpoint = endpoint;
}
// 設定に基づいて OSS クライアントインスタンスを作成します。
using var client = new OSS.Client(cfg);
// 現在のロールアカウント配下のすべての OSS バケットを取得します。
var paginator = client.ListBucketsPaginator(new OSS.Models.ListBucketsRequest());
// バケットのページ分割された結果を非同期に反復処理します。
Console.WriteLine("Buckets:");
await foreach (var page in paginator.IterPageAsync())
{
// 各ページのバケットを走査します。
foreach (var bucket in page.Buckets ?? [])
{
// バケット情報 (名前、ストレージクラス、場所) を出力します。
Console.WriteLine($"Bucket:{bucket.Name}, {bucket.StorageClass}, {bucket.Location}");
}
}
サンプルコード
OSS SDK for C# V2 は、一般的な操作のサンプルコードを提供します。
|
サンプル |
GitHub サンプルファイル |