/// <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()); IAmazonS3 client = new AmazonS3Client(configuration.AccessKeyId, configuration.SecretAccessKey, configuration.Config); return(client); }
/// <summary> /// Ctor /// </summary> /// <param name="logger"></param> /// <param name="configuration"></param> /// <param name="s3ClientBuilder"></param> public DefaultS3ClientPool( ILogger <DefaultS3ClientPool> logger, S3ClientConfiguration configuration, IS3ClientBuilder s3ClientBuilder) { _logger = logger; _configuration = configuration; _s3ClientBuilder = s3ClientBuilder; _clients = new ConcurrentDictionary <int, IAmazonS3>(); }
/// <summary> /// Create s3 client pool by configuration /// </summary> /// <param name="configuration"></param> /// <returns></returns> public IS3ClientPool Create(S3ClientConfiguration configuration) { var s3ClientBuilder = FindS3ClientBuilder(configuration.Vendor); if (s3ClientBuilder == null) { throw new ArgumentNullException($"Could not find any 'IS3ClientBuilder' by vendor '{configuration.Vendor}'"); } var s3ClientPool = ActivatorUtilities.CreateInstance <DefaultS3ClientPool>( _serviceProvider, configuration, s3ClientBuilder); _logger.LogDebug("Create new S3ClientPool with configuration:{0}.", configuration); return(s3ClientPool); }
/// <summary> /// Configure Client by name /// </summary> /// <param name="name"></param> /// <param name="configureAction"></param> /// <returns></returns> public S3ClientConfigurations Configure( string name, Action <S3ClientConfiguration> configureAction) { if (!_clients.TryGetValue(name, out S3ClientConfiguration s3Client)) { s3Client = new S3ClientConfiguration() { Vendor = Default.Vendor }; _clients.Add(name, s3Client); } configureAction(s3Client); return(this); }