/// <summary>根据Bucket信息获取S3客户端 /// </summary> public IAmazonS3 GetClientByBucket(BucketInfo bucket) { var identifier = ConvertToIdentifier(bucket); if (_clientDict.TryGetValue(identifier, out IAmazonS3 client)) { return(client); } //不存在该类型的客户端,则新建 if (bucket.VendorName == S3Vendor.KS3Name) { var config = new AmazonKS3Config() { ServiceURL = bucket.ServerUrl, ForcePathStyle = bucket.ForcePathStyle, SignatureVersion = bucket.SignatureVersion, }; client = new AmazonKS3Client(bucket.AccessKeyId, bucket.SecretAccessKey, config); } else { var config = new AmazonS3Config() { ServiceURL = bucket.ServerUrl, ForcePathStyle = bucket.ForcePathStyle, SignatureVersion = bucket.SignatureVersion, }; client = new AmazonS3Client(bucket.AccessKeyId, bucket.SecretAccessKey, config); } //添加到集合中 _clientDict.AddOrUpdate(identifier, client, (i, c) => { return(client); }); return(client); }
/// <summary> /// Build a amazon s3 client <see cref="Amazon.S3.IAmazonS3"/> /// </summary> /// <param name="configuration"></param> /// <returns></returns> public IAmazonS3 BuildClient(S3ClientConfiguration configuration) { _logger.LogDebug("Create client with configuration:{0}", configuration.ToString()); if (configuration.Config is AmazonKS3Config kS3Config) { IAmazonS3 client = new AmazonKS3Client( configuration.AccessKeyId, configuration.SecretAccessKey, kS3Config); return(client); } throw new ArgumentException($"The configuration {configuration}, create ks3 client fail, config was not a type of 'AmazonKS3Config'! "); }