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

Alibaba Cloud SDK:アクセス認証情報の管理

最終更新日:Jun 22, 2026

Alibaba Cloud SDK は、認証情報ツールを使用して、AccessKey や STS トークンなどの認証情報を一元管理します。このトピックでは、サポートされている認証情報の種類とその設定方法について説明します。

前提条件

  • .NET Framework 4.5 以降

  • .NET Standard 2.0 以降

  • C# 4.0 以降

  • Alibaba Cloud SDK for .NET V2.0 以降

認証情報ツールのインストール

Alibaba Cloud Credentials for .NET をすでにインストールしている場合は、この手順をスキップできます。すべての認証情報のタイプをサポートするため、最新バージョンの認証情報パッケージを使用してください。リリース済みのすべてのバージョンについては、ChangeLog.md をご参照ください。

Alibaba Cloud Credentials for .NET は、次のいずれかの方法でインストールできます:

  • .NET CLI でパッケージをインストールします。

    dotnet add package Aliyun.Credentials
  • NuGet パッケージ マネージャーでパッケージをインストールします。

    1. [ソリューション エクスプローラー] でプロジェクトを右クリックし、[NuGet パッケージの管理] を選択します。

    2. [NuGet パッケージマネージャー] で、[参照] タブをクリックし、Aliyun.Credentials と入力します。

    3. リストから、AuthorsAlibaba Cloud である公式パッケージを選択し、インストールをクリックします。

インストールが完了したら、次のコマンドを実行します。出力には Aliyun.Credentials とそのバージョン番号が表示されます:

dotnet list package

認証情報ツールパラメーター

認証情報ツールの設定パラメーターは、Aliyun.Credentials.Models.Config で定義されています。必須パラメーター type は、認証情報タイプを指定します。認証情報タイプを選択した後、対応するパラメーターを設定します。次の表に、type の有効な値と、各認証情報タイプでサポートされているパラメーターの詳細を示します。表では、 は必須パラメーター、- はオプションのパラメーター、× はサポートされていないパラメーターを示します。

説明

次の表に記載されている認証情報タイプとパラメーターのみを使用してください。

タイプ

access_key

sts

ram_role_arn

ecs_ram_role

oidc_role_arn

credentials_uri

bearer

AccessKeyId :アクセスキー ID。

×

×

×

×

AccessKeySecret :シークレットアクセスキー。

×

×

×

×

SecurityToken :セキュリティトークン。

×

-

×

×

×

×

RoleArn :RAM ロールの ARN。

×

×

×

×

×

RoleSessionName: カスタムセッションの名前を指定します。デフォルトの形式は credentials-csharp-<timestamp> です。

×

×

-

×

-

×

×

RoleName :RAM ロールの名前。

×

×

×

-

×

×

×

DisableIMDSv1: IMDSv1 を無効にしてセキュリティ強化モード (IMDSv2) を強制するかどうかを指定します。デフォルト値は false です。

×

×

×

-

×

×

×

BearerToken :ベアラートークン。

×

×

×

×

×

×

Policy :カスタムポリシー。

×

×

-

×

-

×

×

RoleSessionExpiration :セッションタイムアウト期間 (秒単位)。デフォルト値は 3600 です。

×

×

-

×

-

×

×

OidcProviderArn :OIDC ID プロバイダーの ARN。

×

×

×

×

×

×

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

×

×

×

×

×

×

ExternalId :混乱した使節の問題を防ぐための外部 ID。詳細については、「外部 ID を使用した混乱した使節問題の防止」をご参照ください。

×

×

-

×

×

×

×

CredentialsURI :認証情報の URI。

×

×

×

×

×

×

STSEndpoint: STS のエンドポイントです。 VPC エンドポイントとパブリックエンドポイントの両方がサポートされています。 有効な値の一覧については、「エンドポイント」をご参照ください。 デフォルト値は sts.aliyuncs.com です。

×

×

-

×

-

×

×

Timeout :HTTP リクエストの読み取りタイムアウト (ミリ秒単位)。デフォルト値は 5000 です。

×

×

-

-

-

-

×

ConnectTimeout :HTTP リクエストの接続タイムアウト (ミリ秒単位)。デフォルト値は 10000 です。

×

×

-

-

-

-

×

認証情報クライアントの初期化

前のセクションでは、Credentials ツールがサポートする認証情報の種類と設定パラメーターを説明しました。以降のセクションでは、このツールの使用方法を示すコード例を紹介します。シナリオに最も適した方法を選択してください。

重要
  • プロジェクトに AccessKey をハードコーディングすると、セキュリティリスクが生じます。リポジトリの権限が適切に管理されていない場合、アカウント内のすべてのリソースが公開される可能性があります。AccessKey は環境変数または設定ファイルに保存することを推奨します。

  • Credentials ツールではシングルトンパターンを使用してください。このパターンにより、ツールに組み込まれた認証情報キャッシングが有効になり、頻繁な API 呼び出しによるレート制限を防ぎ、複数のインスタンスを作成することによるリソースの浪費を回避できます。詳細については、「セッション認証情報の自動更新」をご参照ください。

メソッド 1:デフォルトの認証情報プロバイダーチェーン

パラメーターを指定せずに Credentials クライアントを初期化した場合、Credentials ツールはデフォルトの認証情報プロバイダーチェーンを使用します。 SDK がデフォルトの認証情報をロードする方法については、デフォルトの認証情報プロバイダーチェーンをご参照ください。

using Aliyun.Credentials.Models;
namespace credentials_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            // パラメーターを渡さないか、null を渡します。
            var credential = new Aliyun.Credentials.Client();
            // var credential = new Aliyun.Credentials.Client(null);
        }
    }
}

API 呼び出しの例

この例では、ECS の DescribeRegions 操作を呼び出す方法を説明します。コードを実行する前に、ECS SDK をインストールしてください。

using System;
using Aliyun.Credentials.Models;
using Tea;
using Tea.Utils;
namespace credentials_demo
{
    public class Sample
    {
        static void Main(string[] args)
        {
            // デフォルトの認証情報プロバイダーチェーンを使用して Credentials クライアントを初期化します。
            Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(null);
            AlibabaCloud.OpenApiClient.Models.Config ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config();
            // サービスエンドポイントを設定します。この例では、中国 (北京) リージョンを使用します。
            ecsConfig.Endpoint = "ecs.cn-beijing.aliyuncs.com";
            // 認証情報を設定します。
            ecsConfig.Credential = credentialClient;
            // ECS クライアントを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Client escClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
            // DescribeRegions 操作のリクエストオブジェクトを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest describeRegionsRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest();
            // ランタイムオプションを初期化します。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            // DescribeRegions 操作を呼び出し、レスポンスを取得します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsResponse response = escClient.DescribeRegionsWithOptions(describeRegionsRequest, runtime);
            Console.WriteLine(response.Body.ToMap());
        }
    }
}

メソッド 2: AccessKey

Credentials ツールは、指定されたAccessKey をアクセス認証情報として使用します。

警告

Alibaba Cloud アカウント (ルートアカウント) は、そのすべてのリソースに対する完全な権限を持っているため、AK が公開されると重大なセキュリティリスクが生じます。ルートアカウントの AK は使用しないでください。

最小権限を持つ RAM ユーザーの AK を使用してください。

using Aliyun.Credentials.Models;
namespace credentials_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Config config = new Config()
            {
                Type = "access_key",                    
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),          
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")   
            };
            var akCredential = new Aliyun.Credentials.Client(config);
            string accessKeyId = akCredential.GetAccessKeyId();
            string accessSecret = akCredential.GetAccessKeySecret();
            string credentialType = akCredential.GetType();
        }
    }
}

API の例

この例では、ECS の DescribeRegions オペレーションを呼び出します。コードを実行する前に、ECS SDK をインストールしてください。

using System;
using Aliyun.Credentials.Models;
using Tea;
using Tea.Utils;
namespace credentials_demo
{
    public class Sample
    {
        static void Main(string[] args)
        {
            // アクセスキーペアを使用して認証情報クライアントを初期化します。
            Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config()
            {
                // 認証情報タイプ。
                Type = "access_key",
                // 環境変数から AccessKey ID を取得します。
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 環境変数から AccessKey Secret を取得します。
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
            };
            Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig);
            AlibabaCloud.OpenApiClient.Models.Config ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config();
            // エンドポイントを指定します。
            ecsConfig.Endpoint = "ecs.cn-beijing.aliyuncs.com";
            // 認証情報を設定します。
            ecsConfig.Credential = credentialClient;
            // ECS クライアントを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Client ecsClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
            // DescribeRegions リクエストを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest describeRegionsRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest();
            // ランタイムオプションを初期化します。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            // DescribeRegions オペレーションを呼び出し、レスポンスを取得します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsResponse response = ecsClient.DescribeRegionsWithOptions(describeRegionsRequest, runtime);
            Console.WriteLine(response.Body.ToMap());
        }
    }
}

方法 3:STS トークンの使用

Credentials ツールは、指定された静的なSTS トークンをアクセス認証情報として使用します。

using Aliyun.Credentials.Models;
namespace credentials_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Config config = new Config()
            {
                Type = "sts", 
                // 環境変数からアクセスキー ID を取得
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 環境変数からアクセスキーシークレットを取得
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), 
                // 環境変数からセキュリティトークンを取得
              	SecurityToken = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN")
            };
            var stsCredential = new Aliyun.Credentials.Client(config);
            string accessKeyId = stsCredential.GetAccessKeyId();
            string accessSecret = stsCredential.GetAccessKeySecret();
            string credentialType = stsCredential.GetType();
            string securityToken = stsCredential.GetSecurityToken();
        }
    }
}

API 呼び出しの

この例では、ECS の DescribeRegions API を呼び出す方法を説明します。コードを実行する前に、ECS SDK for .NETSTS SDK for .NET をインストールする必要があります。

using System;
using Aliyun.Credentials.Models;
using Tea;
using Tea.Utils;
namespace credentials_demo
{
    public class Sample
    {
        static void Main(string[] args)
        {
            // STS 認証情報を使用して Credentials クライアントを初期化します。
            Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config()
            {
                // 認証情報のタイプ。
                Type = "sts", 
                // 環境変数から AccessKey ID を取得します。
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // 環境変数から AccessKey Secret を取得します。
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"), 
                // 環境変数からセキュリティトークンを取得します。
              	SecurityToken = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_SECURITY_TOKEN")
            };
            Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig);
            AlibabaCloud.OpenApiClient.Models.Config ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config();
            // エンドポイントを設定します。
            ecsConfig.Endpoint = "ecs.cn-beijing.aliyuncs.com";
            // 認証情報を設定します。
            ecsConfig.Credential = credentialClient;
            // ECS クライアントを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Client ecsClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
            // DescribeRegions リクエストを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest describeRegionsRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest();
            // ランタイムオプションを初期化します。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            // DescribeRegions API を呼び出します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsResponse response = ecsClient.DescribeRegionsWithOptions(describeRegionsRequest, runtime);
            Console.WriteLine(response.Body.ToMap());
        }
    }
}

メソッド 4:アクセスキーと RAM ロールの ARN

このメソッドは、内部的に STS トークンを使用します。RAM ロールの ARN (Alibaba Cloud Resource Name) を指定すると、認証情報ツールは STS から STS トークンを取得します。また、Policy パラメーターを使用して、RAM ロールに、より小さな許可セットを適用することもできます。

using Aliyun.Credentials.Models;
namespace credentials_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Config config = new Config()
            {
                Type = "ram_role_arn",                  
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
              	// 引き受ける RAM ロールの ARN。例:acs:ram::123456789012****:role/adminrole。環境変数 ALIBABA_CLOUD_ROLE_ARN で設定することもできます。
                RoleArn = "<RoleArn>",  
              	// ロールセッション名。環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME で設定することもできます。
                RoleSessionName = "<RoleSessionName>", 
            };
            var arnCredential = new Aliyun.Credentials.Client(config);
            string accessKeyId = arnCredential.GetAccessKeyId();
            string accessSecret = arnCredential.GetAccessKeySecret();
            string credentialType = arnCredential.GetType();
            string securityToken = arnCredential.GetSecurityToken();
        }
    }
}

API 呼び出し

この例では、ECS の DescribeRegions API を呼び出す方法を説明します。コードを実行する前に、ECS SDK をインストールする必要があります。

using System;
using Aliyun.Credentials.Models;
using Tea;
using Tea.Utils;
namespace credentials_demo
{
    public class Sample
    {
        static void Main(string[] args)
        {
            // AccessKey ペアと RAM ロール ARN を使用して認証情報クライアントを初期化します。
            Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config()
            {
                // 認証情報タイプ。
                Type = "ram_role_arn",
                // AccessKey ID を指定します。
                AccessKeyId = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_ID"),
                // AccessKey Secret を指定します。
                AccessKeySecret = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ACCESS_KEY_SECRET"),
                // 引き受ける RAM ロールの ARN。 例:acs:ram::123456789012****:role/adminrole。ALIBABA_CLOUD_ROLE_ARN 環境変数でも設定できます。
                RoleArn = "<RoleArn>",
                // ロールセッション名。ALIBABA_CLOUD_ROLE_SESSION_NAME 環境変数でも設定できます。
                RoleSessionName = "<RoleSessionName>",
            };
            Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig);
            AlibabaCloud.OpenApiClient.Models.Config ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config();
            // エンドポイントを設定します。
            ecsConfig.Endpoint = "ecs.cn-beijing.aliyuncs.com";
            // 認証情報を設定します。
            ecsConfig.Credential = credentialClient;
            // ECS クライアントを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Client ecsClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
            // DescribeRegions リクエストを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest describeRegionsRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest();
            // ランタイムオプションを初期化します。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            // DescribeRegions API を呼び出して応答を取得します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsResponse response = ecsClient.DescribeRegionsWithOptions(describeRegionsRequest, runtime);
            Console.WriteLine(response.Body.ToMap());
        }
    }
}

方法 5: ECS インスタンスの RAM ロール

インスタンス RAM ロールを ECS および ECI インスタンスにアタッチすると、インスタンス上のアプリケーションは Credentials ツールを使用してロールの STS トークンを自動的に取得して認証情報クライアントを初期化できます。

デフォルトでは、Credentials ツールはセキュリティ強化モード (IMDSv2) を使用して ECS メタデータサーバーにアクセスします。エラーが発生した場合、ツールは通常モードにフォールバックしてアクセス認証情報を取得します。このフォールバック動作は、disableIMDSv1 パラメーターまたは ALIBABA_CLOUD_IMDSV1_DISABLE 環境変数を設定することで構成できます:

  • 値が false (デフォルト) の場合、ツールは通常モードでアクセス認証情報の取得を続行します。

  • 値が true の場合、ツールはセキュリティ強化モードのみを使用します。取得に失敗した場合、例外がスローされます。

IMDSv2 のサポートは、サーバー構成に依存します。

ALIBABA_CLOUD_ECS_METADATA_DISABLED=true 環境変数を設定して、ECS インスタンスメタデータからの認証情報の取得を無効にすることもできます。

説明
using Aliyun.Credentials.Models;
namespace credentials_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            var config = new Config()
            {
                Type = "ecs_ram_role",
              	// 任意。 ECS RAM ロール名。 リクエスト数を減らすには、このパラメーターを指定します。 省略した場合、システムは自動的にロール名を取得します。 ALIBABA_CLOUD_ECS_METADATA 環境変数を使用してロール名を設定することもできます。
                RoleName = "<RoleName>" 
            };
            // 任意。 デフォルト: false。 true に設定すると、セキュリティ強化モードが適用されます。 false の場合、システムはまずセキュリティ強化モードでアクセス資格情報を取得しようとし、失敗した場合は通常モード (IMDSv1) にフォールバックします。
            // config.DisableIMDSv1 = true;
            var ecsCredential = new Aliyun.Credentials.Client(config);
            string accessKeyId = ecsCredential.GetAccessKeyId();
            string accessSecret = ecsCredential.GetAccessKeySecret();
            string credentialType = ecsCredential.GetType();
            string securityToken = ecsCredential.GetSecurityToken();
        }
    }
}

API の例

この例では、ECS の DescribeRegions オペレーションを呼び出す方法を示します。コードを実行する前に、ECS SDK for .NET をインストールしてください。

using System;
using Aliyun.Credentials.Models;
using Tea;
using Tea.Utils;
namespace credentials_demo
{
    public class Sample
    {
        static void Main(string[] args)
        {
            // ECS インスタンスの RAM ロールを使用して認証情報クライアントを初期化します。
            Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config()
            {
                // 認証情報タイプ。
                Type = "ecs_ram_role",
              	// オプション: ECS インスタンスの RAM ロール名。このパラメーターを省略した場合、システムは自動的にロール名を取得します。このパラメーターを指定すると、リクエスト数を削減できます。環境変数 ALIBABA_CLOUD_ECS_METADATA でロール名を設定することもできます。
                RoleName = "<RoleName>"
            };
            Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig);
            AlibabaCloud.OpenApiClient.Models.Config ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config();
            // エンドポイントを設定します。
            ecsConfig.Endpoint = "ecs.cn-beijing.aliyuncs.com";
            // 認証情報を設定します。
            ecsConfig.Credential = credentialClient;
            // ECS クライアントを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Client ecsClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
            // DescribeRegions リクエストを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest describeRegionsRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest();
            // ランタイムオプションを初期化します。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            // DescribeRegions オペレーションを呼び出します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsResponse response = ecsClient.DescribeRegionsWithOptions(describeRegionsRequest, runtime);
            Console.WriteLine(response.Body.ToMap());
        }
    }
}

方法 6: OIDCRoleArn の使用

OIDC を使用して認証を行い、OIDC ID プロバイダーの RAM ロールを作成している場合、OIDC プロバイダー ARN、OIDC トークンファイルパス、および RAM ロール ARN を Credentials ツールに指定します。その後、ツールは自動的にAssumeRoleWithOIDC API を呼び出して、RAM ロールの STS トークンを取得し、アクセス認証情報として使用します。この方法で取得した認証情報は自動更新をサポートします。詳細については、「セッション認証情報の自動更新」をご参照ください。たとえば、アプリケーションがRRSA が有効になっている Container Service for Kubernetes (ACK) クラスター内で実行されている場合、Credentials ツールはポッドの環境変数から OIDC 設定を読み取り、AssumeRoleWithOIDC API を呼び出して STS トークンを取得できます。その後、この STS トークンを使用して Alibaba Cloud サービスにアクセスできます。

using Aliyun.Credentials.Models;
namespace credentials_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Config config = new Config()
            {
                Type = "oidc_role_arn",
                // 引き受ける RAM ロールの ARN。環境変数 ALIBABA_CLOUD_ROLE_ARN で設定します。
                RoleArn = "<RoleArn>",
                // OIDC IdP の ARN。環境変数 ALIBABA_CLOUD_OIDC_PROVIDER_ARN で設定します。
                OIDCProviderArn = "<OidcProviderArn>",
                // OIDC トークンファイルのパス。環境変数 ALIBABA_CLOUD_OIDC_TOKEN_FILE で設定します。
                OIDCTokenFilePath = "<OidcTokenFilePath>",
                // ロールセッション名。環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME で設定します。
                RoleSessionName = "<RoleSessionName>",
                // オプション。ロールセッションの権限を制限するカスタムポリシー。例: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
                Policy = "<Policy>",
                RoleSessionExpiration = 3600
            };
            var ecsCredential = new Aliyun.Credentials.Client(config);
        }
    }
}

API の例

この例では、ECS の DescribeRegions オペレーションを呼び出す方法を示します。この例を実行するには、ECS SDK for .NET をインストールしてください。

using System;
using Aliyun.Credentials.Models;
using Tea;
using Tea.Utils;
namespace credentials_demo
{
    public class Sample
    {
        static void Main(string[] args)
        {
            // OIDC ロール ARN を使用して認証情報クライアントを初期化します。
            Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config()
            {
                // 認証情報のタイプ。
                Type = "oidc_role_arn",
                // 引き受ける RAM ロールの ARN。環境変数 ALIBABA_CLOUD_ROLE_ARN を使用して設定できます。
                RoleArn = "<RoleArn>",
                // OIDC プロバイダーの ARN。環境変数 ALIBABA_CLOUD_OIDC_PROVIDER_ARN を使用して設定できます。
                OIDCProviderArn = "<OidcProviderArn>",
                // OIDC トークンファイルのパス。環境変数 ALIBABA_CLOUD_OIDC_TOKEN_FILE を使用して設定できます。
                OIDCTokenFilePath = "<OidcTokenFilePath>",
                // ロールセッションの名前。環境変数 ALIBABA_CLOUD_ROLE_SESSION_NAME を使用して設定できます。
                RoleSessionName = "<RoleSessionName>",
                // オプション。より厳密なポリシーを指定します。例: {"Statement": [{"Action": ["*"],"Effect": "Allow","Resource": ["*"]}],"Version":"1"}
                Policy = "<Policy>",
                RoleSessionExpiration = 3600
            };
            Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig);
            AlibabaCloud.OpenApiClient.Models.Config ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config();
            // サービスエンドポイントを設定します。
            ecsConfig.Endpoint = "ecs.cn-beijing.aliyuncs.com";
            // 認証情報を設定します。
            ecsConfig.Credential = credentialClient;
            // ECS クライアントを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Client escClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
            // DescribeRegions リクエストを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest describeRegionsRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest();
            // ランタイムオプションを初期化します。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            // DescribeRegions オペレーションを呼び出します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsResponse response = escClient.DescribeRegionsWithOptions(describeRegionsRequest, runtime);
            Console.WriteLine(response.Body.ToMap());
        }
    }
}

メソッド 7:認証情報 URI

Security Token Service (STS) をサービス URI でカプセル化することで、外部サービスが AK などの機密情報を公開せずに STS トークンを取得できるようになります。その後、Credentials ツールはこの URI を使用して STS トークンを取得し、アクセス認証情報として使用します。この方法で取得した認証情報は自動更新をサポートします。詳細については、「セッション認証情報の自動更新」をご参照ください。

using Aliyun.Credentials.Models;
namespace credentials_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Config config = new Config()
            {
                Type = "credentials_uri",
              	// 認証情報フェッチ用の URI を指定します (例:http://local_or_remote_uri/)。または、ALIBABA_CLOUD_CREDENTIALS_URI 環境変数を設定することもできます。
                CredentialsURI = "<CredentialsURI>"     
            };
        }
    }
}

API の例

この例では、ECS の DescribeRegions オペレーションを呼び出す方法を示します。コードを実行する前に、 .NET 用 ECS SDK をインストールしてください。

using System;
using Aliyun.Credentials.Models;
using Tea;
using Tea.Utils;
namespace credentials_demo
{
    public class Sample
    {
        static void Main(string[] args)
        {
            // URI を使用して認証情報クライアントを初期化します。
            Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config()
            {
                // 認証情報のタイプ。
                Type = "credentials_uri",
              	// 認証情報を取得するための URI。形式は `http://local_or_remote_uri/` です。SDK は環境変数 `ALIBABA_CLOUD_CREDENTIALS_URI` からも URI を読み取ります。
                CredentialsURI = "<CredentialsURI>" 
            };
            Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig);
            AlibabaCloud.OpenApiClient.Models.Config ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config();
            // サービスエンドポイントを設定します。この例では、中国 (北京) リージョンを使用します。
            ecsConfig.Endpoint = "ecs.cn-beijing.aliyuncs.com";
            // 認証情報を設定します。
            ecsConfig.Credential = credentialClient;
            // ECS クライアントを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Client ecsClient = new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
            // DescribeRegions リクエストを初期化します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest describeRegionsRequest = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest();
            // ランタイム設定を初期化します。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            // DescribeRegions オペレーションを呼び出し、レスポンスを保存します。
            AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsResponse response = ecsClient.DescribeRegionsWithOptions(describeRegionsRequest, runtime);
            Console.WriteLine(response.Body.ToMap());
        }
    }
}

方法 8: Bearer トークン

ベアラートークンによる認証情報の初期化は、Cloud Call Center (CCC) のみがサポートしています。

using Aliyun.Credentials.Models;
namespace credentials_demo
{
    class Program
    {
        static void Main(string[] args)
        {
            Config config = new Config()
            {
                Type = "bearer",
                // ベアラー トークンを入力してください。
                BearerToken = "<BearerToken>"      
            };
            var bearerCredential = new Aliyun.Credentials.Client(config);
            string bearerToken = bearerCredential.GetBearerToken();
            string credentialType = bearerCredential.GetType();
        }
    }
}

API の

この例では、Cloud Call Center (CCC) の GetInstance API を呼び出す方法を示します。コードを実行する前に、CCC SDK をインストールする必要があります。

using System;
using Aliyun.Credentials.Models;
using Tea;
using Tea.Utils;
namespace credentials_demo
{
    public class Sample
    {
        static void Main(string[] args)
        {
            // ベアラートークンを使用して認証情報クライアントを初期化します。
            Aliyun.Credentials.Models.Config credentialsConfig = new Aliyun.Credentials.Models.Config()
            {
                // 認証情報タイプ。
                Type = "bearer",
                // ベアラートークンを指定します。
                BearerToken = "<BearerToken>"
            };
            Aliyun.Credentials.Client credentialClient = new Aliyun.Credentials.Client(credentialsConfig);
            AlibabaCloud.OpenApiClient.Models.Config cccConfig = new AlibabaCloud.OpenApiClient.Models.Config()
            {
                // エンドポイントを設定します。
                Endpoint = "ccc.cn-shanghai.aliyuncs.com",
                // 認証用の認証情報オブジェクトを設定します。
                Credential = credentialClient
            };
            // CCC クライアントを初期化します。
            AlibabaCloud.SDK.CCC20200701.Client cccClient = new AlibabaCloud.SDK.CCC20200701.Client(cccConfig);
            // GetInstance リクエストを初期化します。
            AlibabaCloud.SDK.CCC20200701.Models.GetInstanceRequest getInstanceRequest = new AlibabaCloud.SDK.CCC20200701.Models.GetInstanceRequest
            {
                InstanceId = "ccc-test",
            };
            // ランタイムオプションを初期化します。
            AlibabaCloud.TeaUtil.Models.RuntimeOptions runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
            // GetInstance API を呼び出します。
            AlibabaCloud.SDK.CCC20200701.Models.GetInstanceResponse response = cccClient.GetInstanceWithOptions(getInstanceRequest, runtime);
            Console.WriteLine(response.Body.ToMap());
        }
    }
}

デフォルトの認証情報プロバイダーチェーン

アプリケーションが開発環境と本番環境で異なる認証情報を使用する場合、開発者は通常、条件付きコードを記述して各環境に適した認証情報を読み込みます。デフォルトの認証情報プロバイダーチェーンを使用すると、同じコードを使用し、外部設定を通じてさまざまな環境の認証情報を管理できます。認証情報クライアントを初期化する際、new Client(config) をパラメーターなしで、または null を指定して呼び出すと、Alibaba Cloud SDK は次の順序で認証情報の検索を試みます。

1. 環境変数の使用

システムプロパティで認証情報が見つからない場合、プロバイダーチェーンは次に環境変数を確認します。

  • ALIBABA_CLOUD_ACCESS_KEY_ID ALIBABA_CLOUD_ACCESS_KEY_SECRET が設定されており、空でない場合、プロバイダーチェーンはそれらをデフォルトの認証情報として使用します。

  • ALIBABA_CLOUD_ACCESS_KEY_ID, ALIBABA_CLOUD_ACCESS_KEY_SECRETALIBABA_CLOUD_SECURITY_TOKEN も設定されている場合、プロバイダーチェーンは STS トークンをデフォルトの認証情報として使用します。

2. OIDC RAM ロールの使用

認証情報が見つからない場合、プロバイダーチェーンは OIDC RAM ロールに関連する次の環境変数を確認します:

  • ALIBABA_CLOUD_ROLE_ARN: RAM ロールの ARN。

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

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

3 つの環境変数がすべて設定されており、空でない場合、プロバイダーチェーンはこれらの値を使用して Security Token Service (STS) の AssumeRoleWithOIDC API を呼び出して、STS トークンを取得します。

3. config.json の使用

認証情報が見つからない場合、プロバイダーチェーンはデフォルトの場所から共有認証情報ファイル config.json を読み込み、ファイルに指定されている認証情報を使用します。

  • Linux/macOS: ~/.aliyun/config.json

  • Windows: C:\Users\USER_NAME\.aliyun\config.json

この方法で資格情報を設定するには、Alibaba Cloud CLI を使用するか、適切なパスに config.json ファイルを手動で作成します。コンテンツ形式の例は次のとおりです。

{
  "current": "<PROFILE_NAME>",
  "profiles": [
    {
      "name": "<PROFILE_NAME>",
      "mode": "AK",
      "access_key_id": "<ALIBABA_CLOUD_ACCESS_KEY_ID>",
      "access_key_secret": "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>"
    },
    {
      "name": "<PROFILE_NAME1>",
      "mode": "StsToken",
      "access_key_id": "<ALIBABA_CLOUD_ACCESS_KEY_ID>",
      "access_key_secret": "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>",
      "sts_token": "<SECURITY_TOKEN>"
    },
    {
      "name":"<PROFILE_NAME2>",
      "mode":"RamRoleArn",
      "access_key_id":"<ALIBABA_CLOUD_ACCESS_KEY_ID>",
      "access_key_secret":"<ALIBABA_CLOUD_ACCESS_KEY_SECRET>",
      "ram_role_arn":"<ROLE_ARN>",
      "ram_session_name":"<ROLE_SESSION_NAME>",
      "expired_seconds":3600
    },
    {
      "name":"<PROFILE_NAME3>",
      "mode":"EcsRamRole",
      "ram_role_name":"<RAM_ROLE_ARN>"
    },
    {
      "name":"<PROFILE_NAME4>",
      "mode":"OIDC",
      "oidc_provider_arn":"<OIDC_PROVIDER_ARN>",
      "oidc_token_file":"<OIDC_TOKEN_FILE>",
      "ram_role_arn":"<ROLE_ARN>",
      "ram_session_name":"<ROLE_SESSION_NAME>",
      "expired_seconds":3600
    },
    {
      "name":"<PROFILE_NAME5>",
      "mode":"ChainableRamRoleArn",
      "source_profile":"<PROFILE_NAME>",
      "ram_role_arn":"<ROLE_ARN>",
      "ram_session_name":"<ROLE_SESSION_NAME>",
      "expired_seconds":3600
    }
  ]
}

パラメーター

説明

current

対応する認証情報設定を取得するには、認証情報名を指定します。 認証情報名は、profilesname パラメーターの値です。 デフォルトでは、システムは ALIBABA_CLOUD_PROFILE 環境変数で指定された認証情報名を優先します。 この環境変数が設定されていない場合、システムは current で指定された認証情報名を使用します。

profiles

認証情報構成のコレクションが含まれます。mode パラメーターは認証情報の種類を指定します:

  • AK: RAM ユーザーの AccessKey を認証情報として使用します。

  • StsToken: STS トークンを認証情報として使用します。

  • RamRoleArn: RAM ユーザーの認証情報を使用して RAM ロールを引き受け、一時的な認証情報を取得します。

  • EcsRamRole: インスタンスメタデータから認証情報を取得します。

  • OIDC: OIDC プロバイダー ARN、OIDC トークン、および RAM ロール ARN を使用して認証情報を取得します。

  • ChainableRamRoleArn: source_profile パラメーターで指定された profiles の初期認証情報を使用して、ロールチェーンにより新しい認証情報を取得します。

4. ECS インスタンスの RAM ロール

アプリケーションが、RAM ロールが割り当てられた Elastic Compute Service (ECS) または Elastic Container Instance (ECI) インスタンスで実行されている場合、Credentials ツールはインスタンスメタデータから STS トークンを取得し、アクセス資格情報として使用します。インスタンスメタデータにアクセスする際、ツールはまずインスタンスに割り当てられた RAM ロールの名前を取得します。roleName パラメーターまたは ALIBABA_CLOUD_ECS_METADATA 環境変数を使用して RAM ロール名を指定することで、取得時間を短縮し、効率を向上させることができます。この方法で取得した資格情報は、自動更新に対応しています。詳細については、「セッション資格情報の自動更新」をご参照ください。

  • false (デフォルト) に設定すると、ツールは通常モードにフォールバックし、認証情報を取得します。

  • true に設定すると、ツールはセキュアモードのみを使用し、アクセスが失敗した場合は例外をスローします。

サーバーが IMDSv2 をサポートするかどうかは、その設定によって異なります。

インスタンスメタデータからの認証情報アクセスを無効にするには、ALIBABA_CLOUD_ECS_METADATA_DISABLED=true 環境変数を設定してください。

説明

5. 認証情報ツールの URI

認証情報が見つからない場合、プロバイダーチェーンは ALIBABA_CLOUD_CREDENTIALS_URI 環境変数を確認します。この環境変数に有効な URI が設定されている場合、チェーンはその URI にアクセスして STS トークンを取得します。

セッション認証情報の自動更新

ram_role_arnecs_ram_roleoidc_role_arncredentials_uri などのセッション認証情報の種類は、認証情報プロバイダーに組み込まれたメカニズムにより自動更新をサポートします。認証情報クライアントが初めて認証情報を取得すると、プロバイダーはそれをキャッシュに保存します。以降のオペレーションでは、同じクライアントインスタンスがこのキャッシュから認証情報を自動的に取得します。キャッシュされた認証情報の有効期限が切れている場合、クライアントインスタンスは新しい認証情報を取得してキャッシュを更新します。

説明

ecs_ram_role 認証情報の場合、認証情報プロバイダーは有効期限の 15 分前に事前に更新します。

次の例では、シングルトンパターンを使用して認証情報クライアントを作成します。異なる時間間隔で認証情報を取得し、OpenAPI オペレーションを呼び出して認証情報が使用可能であることを確認することで、更新メカニズムを示します。

using System;
using System.Threading.Tasks;
using Aliyun.Credentials.Models;
using AlibabaCloud.SDK.Ecs20140526;
using AlibabaCloud.OpenApiClient.Models;
using AlibabaCloud.TeaUtil.Models;
namespace Example
{
    /// <summary>
    /// Credential クラスは、静的なシングルトンパターンを使用して Alibaba Cloud 認証情報インスタンスを管理します。
    /// </summary>
    public static class Credential
    {
        private static readonly Lazy<Aliyun.Credentials.Client> _instance = new(() =>
        {
            try
            {
                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"),
                    RoleArn = Environment.GetEnvironmentVariable("ALIBABA_CLOUD_ROLE_ARN"),
                    RoleSessionName = "RamRoleArnTest",
                    RoleSessionExpiration = 3600
                };
                return new Aliyun.Credentials.Client(config);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("Credential initialization failed: " + ex.Message, ex);
            }
        });
        public static Aliyun.Credentials.Client Instance => _instance.Value;
    }
    /// <summary>
    /// EcsClient クラスは、静的なシングルトンパターンを使用して ECS クライアントインスタンスを管理します。
    /// Initialize を使用してエンドポイントと認証情報を設定する必要があります。
    /// </summary>
    public static class EcsClient
    {
        private static string _endpoint = string.Empty; // 明示的に初期化します。値は null にできません。
        private static Aliyun.Credentials.Client _credential = null!; // 明示的に初期化します。値は null にできません。
        private static readonly Lazy<AlibabaCloud.SDK.Ecs20140526.Client> _instance = new(() =>
        {
            if (string.IsNullOrEmpty(_endpoint))
            {
                throw new InvalidOperationException("Endpoint must be set before initializing the ECS client.");
            }
            if (_credential == null)
            {
                throw new InvalidOperationException("Credential must be set before initializing the ECS client.");
            }
            try
            {
                var ecsConfig = new AlibabaCloud.OpenApiClient.Models.Config
                {
                    Endpoint = _endpoint,
                    Credential = _credential
                };
                return new AlibabaCloud.SDK.Ecs20140526.Client(ecsConfig);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("ECS client initialization failed: " + ex.Message, ex);
            }
        });
        public static void Initialize(string endpoint, Aliyun.Credentials.Client credential)
        {
            if (string.IsNullOrEmpty(endpoint))
            {
                throw new ArgumentException("Endpoint cannot be null or empty.", nameof(endpoint));
            }
            if (credential == null)
            {
                throw new ArgumentNullException(nameof(credential), "Credential cannot be null.");
            }
            _endpoint = endpoint;
            _credential = credential;
        }
        public static AlibabaCloud.SDK.Ecs20140526.Client Instance => _instance.Value;
    }
    public class Program
    {
        public static async Task Main(string[] args)
        {
            // EcsClient を初期化します。
            EcsClient.Initialize("ecs.cn-hangzhou.aliyuncs.com", Credential.Instance);
            Action task = () =>
            {
                try
                {
                    var credential = Credential.Instance.GetCredential();
                    Console.WriteLine(DateTime.Now);
                    Console.WriteLine($"AK ID: {credential.AccessKeyId}, AK Secret: {credential.AccessKeySecret}, STS Token: {credential.SecurityToken}");
                    var ecsClient = EcsClient.Instance;
                    var request = new AlibabaCloud.SDK.Ecs20140526.Models.DescribeRegionsRequest();
                    var runtime = new AlibabaCloud.TeaUtil.Models.RuntimeOptions();
                    var response = ecsClient.DescribeRegionsWithOptions(request, runtime);
                    Console.WriteLine($"Invoke result: {response.StatusCode}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"ECS client execution failed: {ex.Message}");
                }
            };
            // タスクをすぐに実行します。
            task();
            // 非同期タスクを同時に開始します。
            var tasks = new[]
            {
                ScheduleTaskAsync(task, 600),
                ScheduleTaskAsync(task, 4200),
                ScheduleTaskAsync(task, 4300)
            };
            await Task.WhenAll(tasks);
            Console.WriteLine("All tasks completed.");
        }
        private static async Task ScheduleTaskAsync(Action task, int delaySeconds)
        {
            await Task.Delay(TimeSpan.FromSeconds(delaySeconds));
            task();
        }
    }
}
2025/5/29 10:33:24
AK ID: STS.NVR3xxx P8KrfgTK, AK Secret: 6hsZk211xxx
        PeZZ8NHSBeQo, STS Token: CAISxAJ1q6Ft5B2yf5jIr5XneN+ChrwS1It+pcEXr0DkFNMReiaL/qTz2IHhMeXZoA+4YsPu2mmFW6/sdlqdJQpp/QkjJRNF20plM7VtBkQt5I
pbng4YfgbiJREKxaXeirukwDsz9SNTCA     JlhHL91N0vCGlgpPtpNIRZ4o8I3LGbYMe3XUiTmM3NFkFlyGEe4CFdkf3jm5bHu0WB0gCkk7FO/trLT8L6P5U2DvBWsMyo2eF6TK3F3RNL5gJCnKUM1/QcpGif51/DXQEIvUIYbreL6L9mNxRkY6UgHkpJ
vCxxBmi0fUW5fe3VvPUtVVk900y3LAsg    3PjcmYvy1dKzlhvI856BxNHBq+A748VMgj01iX9IIPPtJO3TwsQdpz0agaAFJZJGZS4RxwNkWL934H/nip/ameLEvxylbsU0x8]AMGRtHmlzYuolmGovqyeKhpDOT+H0am7tG2LvzKHoyVN8Kuck/qb/JAX/
xV1mHcLp3iPma8q+9xboP81YeU06c0vy   bzA2n7QI37852WyAA
Invoke result: 200
2025/5/29 10:43:25
AK ID: STS.NVR3xxx P8KrfgTK, AK Secret: 6hsZk211xxx
        PeZZ8NHSBeQo, STS Token: CAISxAJ1q6Ft5B2yf5jIr5XneN+ChrwS1It+pcEXr0DkFNMReiaL/qTz2IHhMeXZoA+4YsPu2mmFW6/sdlqdJQpp/QkjJRNF20plM7VtBkQt5I
pbng4YfgbiJREKxaXeirukwDsz9SNTCA     JlhHL91N0vCGlgpPtpNIRZ4o8I3LGbYMe3XUiTmM3NFkFlyGEe4CFdkf3jm5bHu0WB0gCkk7FO/trLT8L6P5U2DvBWsMyo2eF6TK3F3RNL5gJCnKUM1/QcpGif51/DXQEIvUIYbreL6L9mNxRkY6UgHkpJ
vCxxBmi0fUW5fe3VvPUtVVk900y3LAsg    3PjcmYvy1dKzlhvI856BxNHBq+A748VMgj01iX9IIPPtJO3TwsQdpz0agaAFJZJGZS4RxwNkWL934H/nip/ameLEvxylbsU0x8]AMGRtHmlzYuolmGovqyeKhpDOT+H0am7tG2LvzKHoyVN8Kuck/qb/JAX/
xV1mHcLp3iPma8q+9xboP81YeU06c0vy   bzA2n7QI37852WyAA
Invoke result: 200
2025/5/29 11:43:25
AK ID: STS.NWuFxxx BwvauFkU, AK Secret: 6fBbjmvd2T
        ChJTi9gPixZE, STS Token: CAISxAJ1q6Ft5B2yf5jIrSTAG/74uLB13aeARFwQlYXe/lNmoPAtzz2IHhMeXZoA+4YsPu2mmFW6/sdlqdJQpp/QkjJRNF20plM7VtdxAt7I
pbng4YfgbiJREKxaXeirukwDsz9SNTCA     iJlhHL91N0vCGlgpPtpNIRZ4o8I3LGbYMe3XUiTmM3NFkFlyGEe4CFdkf3jm5bHu0WB0gCkk7FO/trLT8L6P5U2DvBWsMyo2eF6TK3F3RNL5gJCnKUM1/QcpGif51/DXQEIvUIYbreL6L9mNxRkY6UgHkpJ
vCxxBmi0fUW5fe3VvPUtVVk900y3LAtQ    JU1tKDlwTxgBGOFKIQQrKj9PMSqhAcLJtS6MDE7NJKbt10KxV8Qdpz0agaAE7zrIhzsIKFMhIAyquB0Z8/YXeYdmswQUMbqmr+0gX306/0U9iWS612r6AalQSomcAD0eijKFnE8PFyx3YifekzIBCjr17TR
ujPRXpMzvxuXfvzz9eszDB0o0AXX5gTQ    IKDI4Y7necJANrPiAA
Invoke result: 200
2025/5/29 11:45:05
AK ID: STS.NWuPxxx bwvauFkU, AK Secret: 6fBbjmvd2T
        ChJTi9gPixZE, STS Token: CAISxAJ1q6Ft5B2yf5jIrSTAG/74uLB13aeARFwQlYXe/lNmoPAtzz2IHhMeXZoA+4YsPu2mmFW6/sdlqdJQpp/QkjJRNF20plM7VtdxAt7I
pbng4YfgbiJREKxaXeirukwDsz9SNTCA     iJlhHL91N0vCGlgpPtpNIRZ4o8I3LGbYMe3XUiTmM3NFkFlyGEe4CFdkf3jm5bHu0WB0gCkk7FO/trLT8L6P5U2DvBWsMyo2eF6TK3F3RNL5gJCnKUM1/QcpGif51/DXQEIvUIYbreL6L9mNxRkY6UgHkpJ
vCxxBmi0fUW5fe3VvPUtVVk900y3LAtQ    U1U1tKDlwTxgBGOFKIQQrKj9PMSqhAcLJtS6MDE7NJKbt10KxV8Qdpz0agaAE7zrIhzsIKFMhIAyquB0Z8/YXeYdmswQUMbqmr+0gX306/0U9iWS612r6AalQSomcAD0eijKFnE8PFyx3YifekZIBCjr17TR
ujPRXpMzvxuXfvzz9eszDB0o0AXX5gTQ    IKDI4Y7necJANrPiAA
Invoke result: 200
All tasks completed.

ログ出力に基づく分析:

  • 1 回目の呼び出しでは、キャッシュは空です。システムは設定に基づいて認証情報を取得してキャッシュに保存します。

  • 2 回目の呼び出しでは 1 回目と同じ認証情報が使用されており、キャッシュから取得されたことが分かります。

  • 3 回目の呼び出しでは、キャッシュされた認証情報の有効期限が切れています。有効期限 (RoleSessionExpiration) は 3,600 秒ですが、この呼び出しは 1 回目から 4,200 秒後に行われています。そのため、SDK の自動更新メカニズムによって新しい認証情報が取得され、キャッシュが更新されます。

  • 4 回目の呼び出しでは 3 回目と同じ認証情報が使用されており、キャッシュが更新されたことが確認できます。

関連ドキュメント