TosClient 提供了一系列接口用与 TOS 服务进行交互,以管理存储桶和对象等 TOS 服务上的资源。可通过 AccessKey/SecretKey、STS (Security Token Service)等方式初始化 TosClient。在初始化时,您可设置建立连接超时时间、最大空闲连接数量等可选参数。本文介绍如何初始化 TOS .NET SDK。
初始化 SDK 前,您需要先配置长期访问凭证。本章节介绍不同操作系统下配置长期访问凭证的操作步骤。
nano ~/.bash_profile
export TOS_ACCESS_KEY=AKTPYmI1Z**** export TOS_SECRET_KEY=T1dJM01UU****
source ~/.bash_profile
echo $TOS_ACCESS_KEY echo $TOS_SECRET_KEY
如果配置成功,则返回如下示例:
AKTPYmI1Z**** T1dJM01UU****
以下代码展示如何使用 TOS 域名等必选参数初始化 TosClient,包括 AK、SK、Endpoint 和 Region。
说明
using TOS; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS var endpoint = "*** Provide your endpoint ***"; var region = "*** Provide your region ***"; // 创建TOSClient实例。 var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region).Build(); } } }
TOS .NET SDK 提供了多个可选参数来自定义配置 TosClient。以下代码展示如何自定义配置 TosClient 的 建立连接超时时间和读写超时时间。
using TOS; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS var endpoint = "*** Provide your endpoint ***"; var region = "*** Provide your region ***"; // 创建TOSClient实例。 // 可以通过 tos.SetXXX 的方式添加可选参数 // 示例中通过 SetConnectionTimeout 设置建立连接超时时间(单位为毫秒) // 通过 SetSocketTimeout 设置一次读写连接超时时间(单位为毫秒) var client = TosClientBuilder.Builder(). SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region). SetConnectionTimeout(30000).SetSocketTimeout(30000). Build(); } } }
在 SDK 中可以通过可选参数调整超时时间,可以通过下列函数对超时参数进行配置:
SetConnectionTimeout
:设置连接超时,表示在建立连接阶段最长等待时间,单位毫秒,默认值为 10000,即 10 秒。SetSocketTimeout
:设置读写网络流的超时,表示一次 Read/Write 最长等待时间,单位毫秒,默认值为 30000,即 30 秒。以下代码展示如何设置 SDK 的超时时间。
using TOS; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS var endpoint = "*** Provide your endpoint ***"; var region = "*** Provide your region ***"; // 创建TOSClient实例。 // 可以通过 tos.SetXXX 的方式添加可选参数 // 示例中通过 SetConnectionTimeout 设置建立连接超时时间(单位为毫秒) // 通过 SetSocketTimeout 设置一次读写连接超时时间(单位为毫秒) var client = TosClientBuilder.Builder(). SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region). SetConnectionTimeout(10000).SetSocketTimeout(30000). Build(); } } }
TOS .NET SDK 支持连接池配置,您可以在初始化 TosClient 时,添加 MaxConnections
参数配置连接池最大连接数量。
说明
连接池大小默认配置为 1024。
以下代码展示如何设置 SDK 的连接池大小。
using TOS; namespace ConsoleApp { internal class Program { private static void Main(string[] args) { var ak = Environment.GetEnvironmentVariable("TOS_ACCESS_KEY"); var sk = Environment.GetEnvironmentVariable("TOS_SECRET_KEY"); // endpoint 若没有指定HTTP协议(HTTP/HTTPS),默认使用 HTTPS var endpoint = "*** Provide your endpoint ***"; var region = "*** Provide your region ***"; // 创建TOSClient实例。 // 可以通过SetMaxConnections的方式设置连接池参数 var client = TosClientBuilder.Builder().SetAk(ak).SetSk(sk).SetEndpoint(endpoint).SetRegion(region) .SetMaxConnections(1024).Build(); } } }
参数名 | 参数类型 | 是否必选 | 示例值 | 说明 |
---|---|---|---|---|
AK | String | 必选 | AKTPYmI1ZGQwMDA0NjlhNGFkMzhjNzM0N2Q0OTQ3ZTV**** | Access Key ID ,即密钥 ID。 |
SK | String | 必选 | T1dJM01UUXpOak0wTVdWak5E0poWldJNU1HWmxaV1V5TkdReVl6**** | SecretAccess Key,即私有访问密钥。 |
Endpoint | String | 可选,为空时由 Region 参数决定 | tos-cn-beijing.volces.com | TOS 服务端访问域名。 |
Region | String | 可选,Endpoint 为空时必选 | cn-beijing | TOS 服务端所在地域。 |
SecurityToken | String | 可选 | STSeyJBY2NvdW50SWQiOjIxMDAwMDUyMjQsIklkZW50aXR5VHlwZSI6NCwiSWRlbnRpdHlJZCI6MTE3MjI5NiwiQ2hhbm5lbCI6IlVzZXIiLCJBY2Nlc3NLZXlJZCI6IkFLVFBZbUkxWkdRd01mxoTkdGa016aGpOek0wTjJRME9UUTNaVFZqTXpFIiwiU2l**** | 临时访问凭证中的安全令牌。 |
EnableVerifySSL | Bool | 可选 | true | 配置是否开启 SSL 证书校验, 默认值为 true。 |
SocketTimeout | Int | 可选 | 30000 | Socket 读写超时时间,单位毫秒,默认值为 30000ms,即 30s。 |
ConnectionTimeout | Int | 可选 | 10000 | 设置建立连接超时时间,单位毫秒,默认值为 10000ms,即 10s。 |
MaxConnections | Int | 可选 | 1024 | 设置连接池最大连接数量,默认值为 1024。 |
IdleConnectionTime | Int | 可选 | 60*1000 (ms) | 设置最大连接空闲时间,若超过该时间,连接将被关闭,默认值为 60s。 |