private static async Task <AmazonS3Client> SwitchClient(AmazonS3Client s3Client) { RegionEndpoint regionEp = null; string uniqueKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", accessKeyId, bucketName); // GetUniqueNameFromAccessKeyIdAndBucketName GetBucketLocationResponse resp = await s3Client.GetBucketLocationAsync(bucketName); if (resp == null) { return(s3Client); } else { regionEp = RegionToEndpoint(resp.Location); } if (regionEp != null && !regionEp.Equals(s3Client.Config.RegionEndpoint)) { s3Client.Dispose(); AmazonS3Config config = new AmazonS3Config() { Timeout = TimeSpan.FromSeconds(300), ReadWriteTimeout = TimeSpan.FromSeconds(600), RegionEndpoint = regionEp }; var credential = new BasicAWSCredentials(accessKeyId, secretAccessKey); s3Client = new AmazonS3Client(credential, config); } return(s3Client); }