すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:アクセス認証情報の設定 (C# SDK V1)

最終更新日:Nov 30, 2025

C# ソフトウェア開発キット (SDK) を使用して Object Storage Service (OSS) にリクエストを送信するには、アクセス認証情報を設定する必要があります。Alibaba Cloud サービスは、これらの認証情報を使用して、ID とアクセス権限を検証します。シナリオの認証と権限付与の要件に応じて、さまざまな方法で認証情報を提供できます。

注意事項

  • OSS がサポートするリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • Resource Access Management (RAM) ユーザーの AccessKey ペアを作成する方法については、「AccessKey ペアの作成」をご参照ください。

認証情報プロバイダーの選択

OSS は、認証情報プロバイダーを初期化するための複数の方法をサポートしています。認証と権限付与の要件に基づいて初期化メソッドを選択できます。

認証情報プロバイダーの初期化メソッド

シナリオ

既存の AccessKey ペアまたはセキュリティトークンサービス (STS) トークンが必要か

基盤となる認証情報タイプ

認証情報の有効期間

認証情報のローテーションまたはリフレッシュ方法

RAM ユーザーの AccessKey ペアの使用

外部からの攻撃に対して脆弱でなく、安全で安定した環境で実行されるアプリケーション。これらのアプリケーションは、頻繁な認証情報のローテーションなしで Alibaba Cloud サービスへの長期的なアクセスを必要とします。

はい

AccessKey ペア

長期間

手動ローテーション

STS 一時アクセス認証情報の使用

信頼できない環境で実行されるアプリケーション。このメソッドを使用すると、アクセスの有効期間と権限をコントロールできます。

はい

STS トークン

一時的

手動リフレッシュ

RAMRoleARN の使用

クロスアカウントアクセスなど、Alibaba Cloud サービスへの権限付与されたアクセスを必要とするアプリケーション。

はい

STS トークン

一時的

自動更新

ECSRAMRole の使用

Alibaba Cloud ECS インスタンス、ECI インスタンス、または Container Service for Kubernetes のワーカーノードで実行されるアプリケーション。

いいえ

STS トークン

一時的

自動更新

OIDCRoleARN の使用

Container Service for Kubernetes のワーカーノードで実行される信頼できないアプリケーション。

いいえ

STS トークン

一時的

自動更新

CredentialsURI の使用

外部システムからアクセス認証情報を取得する必要があるアプリケーション。

いいえ

STS トークン

一時的

自動更新

カスタムアクセス認証情報の使用

上記のいずれのメソッドも要件を満たさない場合、認証情報の取得方法をカスタマイズできます。

カスタム

カスタム

カスタム

カスタム

一般的な設定例

RAM ユーザーの AK の使用

ご利用のアプリケーションが安全で安定した環境にデプロイされており、OSS への長期的なアクセスが必要で、頻繁な認証情報のローテーションが許可されていない場合、Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペア (AccessKey ID と AccessKey Secret) を使用して認証情報プロバイダーを初期化できます。ただし、この方法では AccessKey ペアを手動でメンテナンスする必要があり、セキュリティリスクとメンテナンスの複雑さが増します。AccessKey ペアを取得する方法については、「CreateAccessKey - Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペアを作成する」をご参照ください。

環境変数

警告

Alibaba Cloud アカウントは、すべてのリソースに対する完全な権限を持っています。AccessKey ペアが漏洩すると、ご利用のシステムに重大なセキュリティリスクをもたらします。Alibaba Cloud アカウントの AccessKey ペアを使用することは推奨されません。代わりに、最小限の権限を持つ RAM ユーザーの AccessKey ペアを使用してください。

  1. AccessKey ペアを使用して環境変数を設定します。

    Mac OS X、Linux、または UNIX

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>

    Windows

    set ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    set ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
  2. 環境変数を使用して認証情報を渡します。

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    // 環境変数からアクセス認証情報を取得します。このコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
    var accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
    var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, ""));   
    
    // バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
    // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
    const string region = "cn-hangzhou";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);                                                                                                                        

静的な認証情報

次のサンプルコードは、アクセス認証情報をハードコーディングし、使用する AccessKey ペアを明示的に設定する方法を示しています。

警告

本番環境のアプリケーションにアクセス認証情報を埋め込まないでください。この方法はテスト専用です。

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

// サンプル値を実際の AccessKey ID と AccessKey Secret に置き換えます。
var accessKeyId = "LTAI5tQQx1DWEYK7********" ;
var accessKeySecret = "s5LkMqKmmKbt3zjs7MNJTj********" ;
var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, ""));   

// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);     

STS 一時アクセス認証情報の使用

ご利用のアプリケーションが OSS への一時的なアクセスを必要とする場合、セキュリティトークンサービス (STS) から取得した一時的な ID 認証情報 (AccessKey ID、AccessKey Secret、およびセキュリティトークン) を使用して認証情報プロバイダーを初期化できます。ただし、この方法では STS トークンを手動でメンテナンスする必要があり、セキュリティリスクとメンテナンスの複雑さが増します。さらに、OSS に複数回一時的にアクセスするには、STS トークンを手動でリフレッシュする必要があります。

重要

環境変数

  1. 一時的な ID 認証情報を使用して環境変数を設定します。

    Mac OS X、Linux、または UNIX

    export ALIBABA_CLOUD_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    export ALIBABA_CLOUD_SECURITY_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>

    Windows

    set OSS_ACCESS_KEY_ID=<ALIBABA_CLOUD_ACCESS_KEY_ID>
    set OSS_ACCESS_KEY_SECRET=<ALIBABA_CLOUD_ACCESS_KEY_SECRET>
    set OSS_SESSION_TOKEN=<ALIBABA_CLOUD_SECURITY_TOKEN>
  2. 環境変数を使用して認証情報を渡します。

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    // 環境変数からアクセス認証情報を取得します。このコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET、および ALIBABA_CLOUD_SECURITY_TOKEN 環境変数が設定されていることを確認してください。
    var accessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID");
    var accessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    var token = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN");
    
    var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, token));
    
    // バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
    // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
    const string region = "cn-hangzhou";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);
    

静的な認証情報

アプリケーションに認証情報をハードコーディングして、使用する一時的な AccessKey ペアを明示的に設定できます。

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

// サンプル値を実際の一時的な AccessKey ID、AccessKey Secret、およびセキュリティトークンに置き換えます。
var accessKeyId = "STS.NTZdStF79CVRTQuWCfXTT****";
var accessKeySecret = "5rm8PfEiK8enp56zzAMX4RbZUraoKbWXvCf1xAuT****"
var token = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN");

var credentialsProvider = new DefaultCredentialsProvider(new DefaultCredentials(accessKeyId, accessKeySecret, token));

// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

その他のシナリオ別の設定例

RAMRoleARN の使用

ご利用のアプリケーションがクロスアカウントアクセスなど、OSS への権限付与されたアクセスを必要とする場合、RAMRoleARN を使用して認証情報プロバイダーを初期化できます。このメソッドは、基盤となる認証情報として STS トークンを使用します。RAM ロールの Alibaba Cloud リソースネーム (ARN) を指定することで、認証情報ツールは STS サービスから STS トークンを取得し、有効期限が切れる前にトークンを自動的にリフレッシュします。policy に値を割り当てて、RAM ロールをより小さな権限セットに制限することもできます。

重要
  • Alibaba Cloud アカウントは、すべてのリソースに対する完全な権限を持っています。AccessKey ペアが漏洩すると、ご利用のシステムに重大なセキュリティリスクをもたらします。Alibaba Cloud アカウントの AccessKey ペアを使用することは推奨されません。代わりに、最小限の権限を持つ RAM ユーザーの AccessKey ペアを使用してください。

  • RAM ユーザーの AccessKey ペアを作成する方法の詳細については、「AccessKey ペアの作成」をご参照ください。RAM ユーザーの AccessKey ID と AccessKey Secret は、作成時にのみ表示されます。速やかに保存する必要があります。AccessKey Secret を忘れた場合は、新しい AccessKey ペアを作成してローテーションする必要があります。

  • RAMRoleARN を取得する方法については、「CreateRole - ロールの作成」をご参照ください。

  1. Alibaba Cloud 認証情報ライブラリをインストールします。詳細については、「アクセス認証情報の管理」をご参照ください。

  2. アクセス認証情報を設定します。

    using Aliyun.OSS;
    using Aliyun.OSS.Common;
    using Aliyun.OSS.Common.Authentication;
    
    class CredentialsProviderWrapper : ICredentialsProvider
    {
        private Aliyun.Credentials.Client client;
        public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
        {
            this.client = client;
        }
    
        public ICredentials GetCredentials()
        {
            var accessKeyId = client.GetAccessKeyId();
            var accessKeySecret = client.GetAccessKeySecret();
            var token = client.GetSecurityToken();
            return new DefaultCredentials(accessKeyId, accessKeySecret, token);
        }
    
        public void SetCredentials(ICredentials creds)
        {
        }
    };
    
    var config = new Aliyun.Credentials.Models.Config()
    {
        Type = "ram_role_arn",
        AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
        AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
        // デフォルトでは、以下の操作は直接入力されたパラメーター値を使用します。環境変数を追加し、Environment.GetEnvironmentVariable("<variable_name>") を使用して対応するパラメーターを取得することもできます。
        // 引き受ける RAM ロールの ARN。例:acs:ram::123456789012****:role/adminrole
        RoleArn = "<RoleArn>", // RoleArn のデフォルト環境変数は ALIBABA_CLOUD_ROLE_ARN です。
        // ロールセッション名。
        RoleSessionName = "<RoleSessionName>", // RoleSessionName のデフォルト環境変数は ALIBABA_CLOUD_ROLE_SESSION_NAME です。
    };
    var credentialsClient = new Aliyun.Credentials.Client(config);
    
    var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
    
    // バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
    const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
    
    // バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
    const string region = "cn-hangzhou";
    
    var conf = new ClientConfiguration();
    
    var client = new OssClient(endpoint, credentialsProvider, conf);
    client.SetRegion(region);
    

ECS RAM ロールの使用

ご利用のアプリケーションが Elastic Compute Service (ECS) インスタンス、Elastic Container Instance (ECI) インスタンス、または Container Service for Kubernetes (ACK) のワーカーノードで実行される場合、ECSRAMRole を使用して認証情報プロバイダーを初期化することを推奨します。このメソッドは、基盤となる認証情報として STS トークンを使用します。ECSRAMRole を使用すると、ロールを ECS インスタンス、ECI インスタンス、または ACK のワーカーノードに関連付けることができます。これにより、インスタンス内で STS トークンが自動的にリフレッシュされます。この方法では AccessKey ペアや STS トークンを提供する必要がないため、それらを手動でメンテナンスするリスクが排除されます。ECSRAMRole を取得する方法については、「CreateRole - ロールの作成」をご参照ください。

  1. Alibaba Cloud 認証情報ライブラリをインストールします。詳細については、「アクセス認証情報の管理」をご参照ください。

  2. ECSRAMRole をアクセス認証情報として設定します。

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {
    }
};

var config = new Aliyun.Credentials.Models.Config()
{
    Type = "ecs_ram_role",
    // オプション。ECS RAM ロールの名前。このパラメーターを指定しない場合、ロール名は自動的に取得されます。リクエスト数を減らすために、このパラメーターを指定することを推奨します。
    RoleName = "<RoleName>"     
};
var credentialsClient = new Aliyun.Credentials.Client(config);

var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);

// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

OIDCRoleARN の使用

ACK のワーカーノードに RAM ロールを設定すると、それらのノード上の Pod 内のアプリケーションは、ECS にデプロイされたアプリケーションと同様に、グローバルメタサービスを通じて関連付けられたロールの STS トークンを取得できます。ただし、お客様から提出されたコードが見えないアプリケーションなど、信頼できないアプリケーションをコンテナークラスターにデプロイする場合、それらがワーカーノードに関連付けられたインスタンス RAM ロールの STS トークンをグローバルメタサービスを通じて取得することを望まない場合があります。これらの信頼できないアプリケーションが必要な STS トークンを安全に取得し、アプリケーションレベルの権限最小化を実現しつつ、クラウドリソースへのセキュリティリスクを防ぐには、RAM Roles for Service Accounts (RRSA) 機能を使用します。このメソッドは、基盤となる認証情報として STS トークンを使用します。Alibaba Cloud コンテナークラスターは、さまざまなアプリケーション Pod に対して対応するサービスアカウント OpenID Connect (OIDC) トークンファイルを作成してマウントし、関連する設定情報を環境変数に注入します。認証情報ツールは、環境変数から設定情報を取得し、STS の AssumeRoleWithOIDC 操作を呼び出して、OIDC トークンをバインドされたロールの STS トークンと交換します。この方法では AccessKey ペアや STS トークンを提供する必要がないため、それらを手動でメンテナンスするリスクが排除されます。詳細については、「RRSA に基づいて Pod の権限を分離する」をご参照ください。

以下の環境変数が注入されます:

ALIBABA_CLOUD_ROLE_ARN:RAM ロールの ARN。

ALIBABA_CLOUD_OIDC_PROVIDER_ARN:OIDC プロバイダーの ARN。

ALIBABA_CLOUD_OIDC_TOKEN_FILE:OIDC トークンファイルへのパス。

OIDCRoleArn をアクセス認証情報として設定します。

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {}
};

var config = new Aliyun.Credentials.Models.Config()
{
    Type = "oidc_role_arn",
    // RAM ロールの ARN。ALIBABA_CLOUD_ROLE_ARN 環境変数を使用して RoleArn を設定できます。
    RoleArn = "<RoleArn>",
    // OIDC プロバイダーの ARN。ALIBABA_CLOUD_OIDC_PROVIDER_ARN 環境変数を使用して OidcProviderArn を設定できます。
    OIDCProviderArn = "<OidcProviderArn>",
    // OIDC トークンファイルへのパス。ALIBABA_CLOUD_OIDC_TOKEN_FILE 環境変数を使用して OidcTokenFilePath を設定できます。
    OIDCTokenFilePath = "<OidcTokenFilePath>",
    // ロールセッション名。ALIBABA_CLOUD_ROLE_SESSION_NAME 環境変数を使用して RoleSessionName を設定できます。
    RoleSessionName = "<RoleSessionName>",
    // オプション。より制限の厳しいアクセスポリシー。例:{"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
    Policy = "<Policy>",
    RoleSessionExpiration = 3600  
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

CredentialsURI の使用

ご利用のアプリケーションが、柔軟な認証情報管理とキーレスアクセスを実現するために外部システムから Alibaba Cloud 認証情報を取得する必要がある場合、CredentialsURI を使用して認証情報プロバイダーを初期化できます。このメソッドは、基盤となる認証情報として STS トークンを使用します。認証情報ツールは、提供された URI から STS トークンを取得して、認証情報クライアントの初期化を完了します。この方法では AccessKey ペアや STS トークンを提供する必要がないため、それらを手動でメンテナンスするリスクが排除されます。CredentialsURI 応答を提供するバックエンドサービスは、ご利用のアプリケーションが常に有効な認証情報を取得できるように、STS トークンの自動更新ロジックを実装する必要があります。

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CredentialsProviderWrapper : ICredentialsProvider
{
    private Aliyun.Credentials.Client client;
    public CredentialsProviderWrapper(Aliyun.Credentials.Client client)
    {
        this.client = client;
    }

    public ICredentials GetCredentials()
    {
        var accessKeyId = client.GetAccessKeyId();
        var accessKeySecret = client.GetAccessKeySecret();
        var token = client.GetSecurityToken();
        return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }



    public void SetCredentials(ICredentials creds)
    {}
};

var config = new Aliyun.Credentials.Models.Config()
{
    // 認証情報タイプ。
    Type = "credentials_uri",
    // 認証情報を取得する URI。フォーマットは http://local_or_remote_uri/ です。ALIBABA_CLOUD_CREDENTIALS_URI 環境変数を使用して CredentialsURI を設定できます。
    CredentialsURI = "<CredentialsURI>" 
};
var credentialsClient = new Aliyun.Credentials.Client(config);
var credentialsProvider = new CredentialsProviderWrapper(credentialsClient);
// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";
var conf = new ClientConfiguration();
var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

カスタムアクセス認証情報の使用

上記の設定方法のいずれも要件を満たさない場合は、Credential Providers インターフェイスを実装して、認証情報の提供方法をカスタマイズすることもできます。

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Aliyun.OSS.Common.Authentication;

class CustomCredentialsProvider : ICredentialsProvider
{
    public CustomCredentialsProvider()
    {
    }

    public ICredentials GetCredentials()
    {
        // TODO
        // アクセス認証情報を取得するためのカスタムメソッド。

        string accessKeyId;
        string accessKeySecret;
        //string token;

        // 長期的な認証情報を返します:access_key_id、access_key_secret。
        return new DefaultCredentials(accessKeyId, accessKeySecret, "");

        // 一時的な認証情報を返します:access_key_id、access_key_secret、token。
        // 一時的な認証情報の場合、有効期限に基づいて認証情報をリフレッシュする必要があります。
        // return new DefaultCredentials(accessKeyId, accessKeySecret, token);
    }

    public void SetCredentials(ICredentials creds)
    {
    }
};

var credentialsProvider = new CustomCredentialsProvider();

// バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
const string endpoint = "https://oss-cn-hangzhou.aliyuncs.com";

// バケットが配置されているリージョンを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、リージョンを cn-hangzhou に設定します。
const string region = "cn-hangzhou";

var conf = new ClientConfiguration();

var client = new OssClient(endpoint, credentialsProvider, conf);
client.SetRegion(region);

RAM ユーザーの AccessKey ペアを表示する方法は?古い AccessKey Secret を表示できますか?

  1. RAM ユーザーの AccessKey ペアを表示する方法については、「RAM ユーザーの AccessKey 情報の表示」をご参照ください。

  2. RAM ユーザーの AccessKey Secret は、作成時にのみ表示され、後で取得することはできません。AccessKey Secret を忘れた場合、それを取得することはできません。RAM コンソールに移動し、特定のユーザーを選択して、ローテーション用の新しい AccessKey ペアを作成できます。詳細については、「AccessKey ペアの作成」をご参照ください。

RAM ユーザーの AccessKey ペアを使用してファイルをアップロードする際に発生する AccessDenied エラーのトラブルシューティング方法は?

ファイルアップロード中の AccessDenied エラーは、通常、誤った AccessKey 情報が使用されたか、RAM ユーザーにファイルのアップロード権限が付与されていないために発生します。以下の項目を確認できます:

  1. RAM ユーザーの AccessKey ペアが正しいことを確認します。詳細については、「RAM ユーザーの AccessKey 情報の表示」をご参照ください。

  2. RAM ユーザーの AccessKey Secret は、作成時にのみ表示され、後で取得することはできません。AccessKey Secret を忘れた場合、それを取得することはできません。RAM コンソールに移動し、特定のユーザーを選択して、ローテーション用の新しい AccessKey ペアを作成できます。詳細については、「AccessKey ペアの作成」をご参照ください。

  3. RAM コンソールにログインし、特定のユーザーを選択して、RAM ユーザーに OSS へのファイルアップロード権限を付与できます。

パブリックエンドポイントを使用して OSS にアクセスする際に発生する接続失敗のトラブルシューティング方法は?

パブリックエンドポイントへの接続失敗は、通常、誤ったエンドポイントアドレスが使用されたか、バケットのリージョンがリクエストされたエンドポイントと一致しないために発生します。以下の項目を確認できます:

  1. バケットのリージョンを確認します。Alibaba Cloud 管理コンソールにログインし、ご利用のバケットを見つけて、そのリージョンを確認できます。

  2. 正しいエンドポイントを使用します。バケットのリージョンに基づいて、対応するパブリックエンドポイントを使用する必要があります。たとえば、バケットが中国 (杭州) リージョンにある場合は、oss-cn-hangzhou.aliyuncs.com を使用します。各リージョンのエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  3. ネットワーク接続を確認します。ネットワークの問題による接続失敗を防ぐために、ご利用のネットワーク環境がインターネットにアクセスできることを確認する必要があります。

エラーが発生した場合、特定のエラータイプを見つける方法は?

エラータイプの詳細については、OSS ドキュメントの「EC エラーコード」をご参照ください。たとえば、一般的な認証関連のエラーについては、「02-AUTH」をご参照ください。