2. 初始化

2.1. 确定EndPoint

EndPoint 是NOS各个区域的地址,目前支持以下形式

EndPoint类型 备注
NOS区域域名地址 使用桶所在的区域的NOS域名地址

2.1.1. NOS区域域名地址

进入NOS控制台,在桶的 属性 中可以查找到当前桶所在的区域及域名,桶的域名的后缀部分为 该桶的公网域名,例如:test-logging.nos-eastchina1.126.net中的nos-eastchina1.126.net 为该桶的公网EndPoint。

2.2. 配置秘钥

要接入NOS服务,您需要一对有效的AccessKey(包括AccessKeyId与AccessKeySecret)来进行 签名验证,开通服务与AccessKey请参考 访问控制

在获取到AccessKeyId与AccessKeySecret之后,可以按照以下的步骤进行初始化

2.3. 新建AmazonS3Client

2.3.1. 使用NOS地区域名创建AmazonS3Client

初始化代码如下所示:

using Amazon.S3;

const string accessKeyId = "your-accessKeyId";
const string accessKeySecret  = "your-accessKeySecret";
const string endponit = "建桶时选择的的区域域名";

AmazonS3Config S3Config = new AmazonS3Config()
{
    ServiceURL = endponit,
    SignatureVersion = "2",//如果要使用上传功能,必须加入该选项
    UseHttp = true,
};
//之后使用到的s3Client都是使用这里的初始化方式
s3Client = new AmazonS3Client(accessKeyIdak, accessKeySecret, S3Config);

2.4. 新建AmazonS3EncryptionClient

2.4.1. 使用NOS地区域名创建AmazonS3EncryptionClient

使用该client来支持客户端加密,除了分块上传时需要在最后一块做特殊处理,其他的能用于AmazonS3Client的,都可以用在AmazonS3EncryptionClient上

初始化代码如下所示:

using Amazon.S3;
using Amazon.S3.Encryption;
using System.Security.Cryptography;

const string accessKeyId = "your-accessKeyId";
const string accessKeySecret  = "your-accessKeySecret";
const string endponit = "建桶时选择的的区域域名";


AmazonS3CryptoConfiguration configure = new AmazonS3CryptoConfiguration(){
    ServiceURL = endponit,
    ConnectionLimit = 200,
    SignatureVersion = "2",
    StorageMode = CryptoStorageMode.InstructionFile,//支持InstructionFile,ObjectMetadata,metadata的方式只支持小文件上传,不支持大文件
};

EncryptionMaterials encryptionMaterials = new EncryptionMaterials(RSA.Create());

//之后使用到的s3Client都是使用这里的初始化方式
AmazonS3EncryptionClient client = new AmazonS3EncryptionClient(accessKeyId,accessKeySecret,configure,encryptionMaterials);

2.5. 设置网络参数

如果您需要修改AmazonS3Client的默认参数,可以在实例化AmazonS3Client时传入AmazonS3Config实例。AmazonS3Config是AmazonS3Client的配置类,可配置连接超时、最大连接数等参数:

AmazonS3Config S3Config = new AmazonS3Config()
//最大的重试次数
S3Config.MaxErrorRetry = 2;
//链接的最大空闲时间(单位:ms),默认50s,
S3Config.MaxIdleTime = 60 * 1000;
//最大的连接数,默认50
S3Config.ConnectionLimit = 200;