/// <summary> /// Deletes a collection of files to S3. For large uploads, the file will be divided and uploaded in parts /// using Amazon S3's multipart API. The parts will be reassembled as one object in Amazon S3. /// </summary> /// <param name="keys">The set of keys under which the Amazon S3 object is stored.</param> /// <param name="settings">The <see cref="S3Settings"/> required to upload to Amazon S3.</param> public void Delete(IList <string> keys, S3Settings settings) { foreach (string key in keys) { this.Delete(key, "", settings); } }
//Request private AmazonS3Client GetClient(S3Settings settings) { if (settings == null) { throw new ArgumentNullException("settings"); } if (settings.Region == null) { throw new ArgumentNullException("settings.Region"); } if (settings.Credentials == null) { if (String.IsNullOrEmpty(settings.AccessKey)) { throw new ArgumentNullException("settings.AccessKey"); } if (String.IsNullOrEmpty(settings.SecretKey)) { throw new ArgumentNullException("settings.SecretKey"); } return(new AmazonS3Client(settings.AccessKey, settings.SecretKey, settings.Region)); } else { return(new AmazonS3Client(settings.Credentials, settings.Region)); } }
/// <summary> /// Retrieves object from Amazon S3. /// </summary> /// <param name="key">The key under which the Amazon S3 object is stored.</param> /// <param name="version">The identifier for the specific version of the object to be deleted, if required.</param> /// <param name="settings">The <see cref="S3Settings"/> required to download from Amazon S3.</param> public S3Object GetObject(string key, string version, S3Settings settings) { AmazonS3Client client = this.GetClient(settings); GetObjectRequest request = this.CreateGetObjectRequest(key, version, settings); _Log.Verbose("Get object {0} from bucket {1}...", key, settings.BucketName); try { GetObjectResponse response = client.GetObject(request); return(new S3Object() { Key = response.Key, ETag = response.ETag, LastModified = response.LastModified, StorageClass = response.StorageClass }); } catch { _Log.Verbose("The object {0} does not exist in bucket {1}...", key, settings.BucketName); return(null); } }
/// <summary> /// Returns all the objects in a S3 bucket. /// </summary> /// <param name="prefix">Limits the response to keys that begin with the specified prefix.</param> /// <param name="settings">The <see cref="S3Settings"/> required to download from Amazon S3.</param> public IList <S3Object> GetObjects(string prefix, S3Settings settings) { IList <S3Object> objects = new List <S3Object>(); bool call = true; string marker = ""; AmazonS3Client client = this.GetClient(settings); _Log.Verbose("Get objects from bucket {0}...", settings.BucketName); while (call) { ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = settings.BucketName; request.Marker = marker; if (!String.IsNullOrEmpty(prefix)) { request.Prefix = prefix; } ListObjectsResponse response = client.ListObjects(request); call = response.IsTruncated; marker = response.NextMarker; response.S3Objects.ForEach((lItem) => { objects.Add(lItem); }); } return(objects); }
/// <summary> /// Removes the null version (if there is one) of an object and inserts a delete /// marker, which becomes the latest version of the object. If there isn't a null /// version, Amazon S3 does not remove any objects. /// </summary> /// <param name="key">The key under which the Amazon S3 object is stored.</param> /// <param name="version">The identifier for the specific version of the object to be deleted, if required.</param> /// <param name="settings">The <see cref="S3Settings"/> required to download from Amazon S3.</param> public void Delete(string key, string version, S3Settings settings) { AmazonS3Client client = this.GetClient(settings); DeleteObjectRequest request = new DeleteObjectRequest(); request.BucketName = settings.BucketName; request.Key = key; if (!String.IsNullOrEmpty(version)) { request.VersionId = version; } _Log.Verbose("Deleting object {0} from bucket {1}...", key, settings.BucketName); client.DeleteObject(request); }
/// <summary> /// Removes all objects from the bucket /// </summary> /// <param name="prefix">Only delete objects that begin with the specified prefix.</param> /// <param name="lastModified">Only delete objects that where modified prior to this date.</param> /// <param name="settings">The <see cref="S3Settings"/> required to delete from Amazon S3.</param> public IList <string> DeleteAll(string prefix, DateTimeOffset lastModified, S3Settings settings) { //Get S3 Objects IList <S3Object> objects = this.GetObjects(prefix, settings); List <string> list = new List <string>(); foreach (S3Object obj in objects) { if ((lastModified == DateTimeOffset.MinValue) && (obj.LastModified < lastModified)) { list.Add(obj.Key); } } //Delete AmazonS3Client client = this.GetClient(settings); while (list.Count > 0) { int max = list.Count; if (max > 1000) { max = 1000; } DeleteObjectsRequest request = new DeleteObjectsRequest(); request.BucketName = settings.BucketName; for (int index = 0; index < max; index++) { request.AddKey(list[index]); } client.DeleteObjects(request); _Log.Verbose("Deleting {0} objects from bucket {1}...", max, settings.BucketName); list.RemoveRange(0, max); } return(list); }
private GetObjectRequest CreateGetObjectRequest(string key, string version, S3Settings settings) { GetObjectRequest request = new GetObjectRequest(); request.BucketName = settings.BucketName; request.Key = key; if (!String.IsNullOrEmpty(version)) { request.VersionId = version; } request.ServerSideEncryptionCustomerProvidedKey = settings.EncryptionKey; request.ServerSideEncryptionCustomerProvidedKeyMD5 = settings.EncryptionKeyMD5; request.ServerSideEncryptionCustomerMethod = settings.EncryptionMethod; if (!String.IsNullOrEmpty(settings.EncryptionKey)) { request.ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256; } return(request); }
/// <summary> /// Create a signed URL allowing access to a resource that would usually require authentication. cts /// </summary> /// <param name="key">The key under which the Amazon S3 object is stored.</param> /// <param name="version">The identifier for the specific version of the object to be deleted, if required.</param> /// <param name="expires">The expiry date and time for the pre-signed url.</param> /// <param name="settings">The <see cref="S3Settings"/> required to download from Amazon S3.</param> public string GetPreSignedURL(string key, string version, DateTime expires, S3Settings settings) { AmazonS3Client client = this.GetClient(settings); GetPreSignedUrlRequest request = new GetPreSignedUrlRequest() { BucketName = settings.BucketName, Key = key, VersionId = version, Expires = expires }; _Log.Verbose("Get object {0} from bucket {1}...", key, settings.BucketName); try { return(client.GetPreSignedURL(request)); } catch { _Log.Verbose("The object {0} does not exist in bucket {1}...", key, settings.BucketName); return(""); } }
public static async Task<S3Object> GetS3Object(this ICakeContext context, string key, string version, S3Settings settings) { return await context.CreateManager().GetObject(key, version, settings); }
public static async Task<DateTimeOffset> S3LastModified(this ICakeContext context, string key, S3Settings settings) { return await context.S3LastModified(key, "", settings); }
public static void S3DeleteAll(this ICakeContext context, string prefix, S3Settings settings) { context.CreateManager().DeleteAll(prefix, DateTimeOffset.MinValue, settings); }
public static async Task S3Delete(this ICakeContext context, string key, string version, S3Settings settings) { await context.CreateManager().Delete(key, version, settings); }
public static DateTimeOffset S3LastModified(this ICakeContext context, string key, S3Settings settings) { return(context.S3LastModified(key, "", settings)); }
public static S3Object GetS3Object(this ICakeContext context, string key, string version, S3Settings settings) { return context.CreateManager().GetObject(key, version, settings); }
/// <summary> /// Create a signed URL allowing access to a resource that would usually require authentication. cts /// </summary> /// <param name="key">The key under which the Amazon S3 object is stored.</param> /// <param name="version">The identifier for the specific version of the object to be deleted, if required.</param> /// <param name="expires">The expiry date and time for the pre-signed url.</param> /// <param name="settings">The <see cref="S3Settings"/> required to download from Amazon S3.</param> public string GetPreSignedURL(string key, string version, DateTime expires, S3Settings settings) { AmazonS3Client client = this.GetClient(settings); GetPreSignedUrlRequest request = new GetPreSignedUrlRequest() { BucketName = settings.BucketName, Key = key, VersionId = version, Expires = expires }; _Log.Verbose("Get object {0} from bucket {1}...", key, settings.BucketName); try { return client.GetPreSignedURL(request); } catch { _Log.Verbose("The object {0} does not exist in bucket {1}...", key, settings.BucketName); return ""; } }
public static IList <string> S3DeleteAll(this ICakeContext context, S3Settings settings) { return(context.CreateManager().DeleteAll("", DateTimeOffset.MinValue, settings)); }
/// <summary> /// Retrieves object Metadata from Amazon S3. /// </summary> /// <param name="key">The key under which the Amazon S3 object is stored.</param> /// <param name="version">The identifier for the specific version of the object to be deleted, if required.</param> /// <param name="settings">The <see cref="S3Settings"/> required to download from Amazon S3.</param> public MetadataCollection GetObjectMetaData(string key, string version, S3Settings settings) { AmazonS3Client client = this.GetClient(settings); GetObjectMetadataRequest request = this.CreateGetObjectMetadataRequest(key, version, settings); _Log.Verbose("Get object {0} from bucket {1}...", key, settings.BucketName); try { GetObjectMetadataResponse response = client.GetObjectMetadata(request); return response.Metadata; } catch { _Log.Verbose("The object {0} does not exist in bucket {1}...", key, settings.BucketName); return null; } }
/// <summary> /// Returns all the objects in a S3 bucket. /// </summary> /// <param name="prefix">Limits the response to keys that begin with the specified prefix.</param> /// <param name="settings">The <see cref="S3Settings"/> required to download from Amazon S3.</param> public IList<S3Object> GetObjects(string prefix, S3Settings settings) { IList<S3Object> objects = new List<S3Object>(); bool call = true; string marker = ""; AmazonS3Client client = this.GetClient(settings); _Log.Verbose("Get objects from bucket {0}...", settings.BucketName); while (call) { ListObjectsRequest request = new ListObjectsRequest(); request.BucketName = settings.BucketName; request.Marker = marker; if (!String.IsNullOrEmpty(prefix)) { request.Prefix = prefix; } ListObjectsResponse response = client.ListObjects(request); call = response.IsTruncated; marker = response.NextMarker; response.S3Objects.ForEach((lItem) => { objects.Add(lItem); }); } return objects; }
/// <summary> /// Retrieves object from Amazon S3. /// </summary> /// <param name="key">The key under which the Amazon S3 object is stored.</param> /// <param name="version">The identifier for the specific version of the object to be deleted, if required.</param> /// <param name="settings">The <see cref="S3Settings"/> required to download from Amazon S3.</param> public S3Object GetObject(string key, string version, S3Settings settings) { AmazonS3Client client = this.GetClient(settings); GetObjectRequest request = this.CreateGetObjectRequest(key, version, settings); _Log.Verbose("Get object {0} from bucket {1}...", key, settings.BucketName); try { GetObjectResponse response = client.GetObject(request); return new S3Object() { Key = response.Key, ETag = response.ETag, LastModified = response.LastModified, StorageClass = response.StorageClass }; } catch { _Log.Verbose("The object {0} does not exist in bucket {1}...", key, settings.BucketName); return null; } }
public static string GetPreSignedURL(this ICakeContext context, string key, string version, DateTime expires, S3Settings settings) { return context.CreateManager().GetPreSignedURL(key, version, expires, settings); }
public static string S3GetHashTag(this ICakeContext context, string key, string version, S3Settings settings) { MetadataCollection result = context.CreateManager().GetObjectMetaData(key, version, settings); if ((result != null) && result.Keys.Contains("x-amz-meta-hashtag")) { return result["x-amz-meta-hashtag"]; } else { return ""; } }
public static async Task<string> S3GetETag(this ICakeContext context, string key, string version, S3Settings settings) { S3Object result = await context.CreateManager().GetObject(key, version, settings); if (result != null) { return result.ETag; } else { return ""; } }
private TransferUtility GetUtility(S3Settings settings) { return new TransferUtility(this.GetClient(settings)); }
public static void S3Delete(this ICakeContext context, string key, S3Settings settings) { context.S3Delete(key, "", settings); }
private GetObjectMetadataRequest CreateGetObjectMetadataRequest(string key, string version, S3Settings settings) { GetObjectMetadataRequest request = new GetObjectMetadataRequest(); request.BucketName = settings.BucketName; request.Key = key; if (!String.IsNullOrEmpty(version)) { request.VersionId = version; } request.ServerSideEncryptionCustomerProvidedKey = settings.EncryptionKey; request.ServerSideEncryptionCustomerProvidedKeyMD5 = settings.EncryptionKeyMD5; request.ServerSideEncryptionCustomerMethod = settings.EncryptionMethod; if (!String.IsNullOrEmpty(settings.EncryptionKey)) { request.ServerSideEncryptionCustomerMethod = ServerSideEncryptionCustomerMethod.AES256; } return request; }
public static S3Object GetS3Object(this ICakeContext context, string key, string version, S3Settings settings) { return(context.CreateManager().GetObject(key, version, settings)); }
//Directory private void SetWorkingDirectory(S3Settings settings) { DirectoryPath workingDirectory = settings.WorkingDirectory ?? _Environment.WorkingDirectory; settings.WorkingDirectory = workingDirectory.MakeAbsolute(_Environment); }
public static string S3GetHashTag(this ICakeContext context, string key, S3Settings settings) { return context.S3GetHashTag(key, "", settings); }
//Request private AmazonS3Client GetClient(S3Settings settings) { if (settings == null) { throw new ArgumentNullException("settings"); } if (settings.Region == null) { throw new ArgumentNullException("settings.Region"); } if (settings.Credentials == null) { if (String.IsNullOrEmpty(settings.AccessKey)) { throw new ArgumentNullException("settings.AccessKey"); } if (String.IsNullOrEmpty(settings.SecretKey)) { throw new ArgumentNullException("settings.SecretKey"); } return new AmazonS3Client(settings.AccessKey, settings.SecretKey, settings.Region); } else { return new AmazonS3Client(settings.Credentials, settings.Region); } }
public static void S3DeleteAll(this ICakeContext context, string prefix, DateTimeOffset lastModified, S3Settings settings) { context.CreateManager().DeleteAll(prefix, lastModified, settings); }
/// <summary> /// Deletes a collection of files to S3. For large uploads, the file will be divided and uploaded in parts /// using Amazon S3's multipart API. The parts will be reassembled as one object in Amazon S3. /// </summary> /// <param name="keys">The set of keys under which the Amazon S3 object is stored.</param> /// <param name="settings">The <see cref="S3Settings"/> required to upload to Amazon S3.</param> public void Delete(IList<string> keys, S3Settings settings) { foreach(string key in keys) { this.Delete(key, "", settings); } }
public static async Task S3Delete(this ICakeContext context, string key, S3Settings settings) { await context.S3Delete(key, "", settings); }
public static async Task<IList<string>> S3DeleteAll(this ICakeContext context, string prefix, S3Settings settings) { return await context.CreateManager().DeleteAll(prefix, DateTimeOffset.MinValue, settings); }
/// <summary> /// Removes all objects from the bucket /// </summary> /// <param name="prefix">Only delete objects that begin with the specified prefix.</param> /// <param name="lastModified">Only delete objects that where modified prior to this date.</param> /// <param name="settings">The <see cref="S3Settings"/> required to delete from Amazon S3.</param> public IList<string> DeleteAll(string prefix, DateTimeOffset lastModified, S3Settings settings) { //Get S3 Objects IList<S3Object> objects = this.GetObjects(prefix, settings); List<string> list = new List<string>(); foreach (S3Object obj in objects) { if ((lastModified == DateTimeOffset.MinValue) && (obj.LastModified < lastModified)) { list.Add(obj.Key); } } //Delete AmazonS3Client client = this.GetClient(settings); while (list.Count > 0) { int max = list.Count; if (max > 1000) { max = 1000; } DeleteObjectsRequest request = new DeleteObjectsRequest(); request.BucketName = settings.BucketName; for (int index = 0; index < max; index++) { request.AddKey(list[index]); } client.DeleteObjects(request); _Log.Verbose("Deleting {0} objects from bucket {1}...", max, settings.BucketName); list.RemoveRange(0, max); } return list; }
public static async Task<IList<S3Object>> GetS3Objects(this ICakeContext context, string prefix, S3Settings settings) { return await context.CreateManager().GetObjects(prefix, settings); }
public static DateTimeOffset S3LastModified(this ICakeContext context, string key, string version, S3Settings settings) { S3Object result = context.CreateManager().GetObject(key, version, settings); if (result != null) { return result.LastModified; } else { return DateTime.MinValue; } }
public static async Task<DateTimeOffset> S3LastModified(this ICakeContext context, string key, string version, S3Settings settings) { S3Object result = await context.CreateManager().GetObject(key, version, settings); if (result != null) { return result.LastModified; } else { return DateTime.MinValue; } }
public static string S3GetETag(this ICakeContext context, string key, string version, S3Settings settings) { S3Object result = context.CreateManager().GetObject(key, version, settings); if (result != null) { return(result.ETag); } else { return(""); } }
public static async Task<string> S3GetHashTag(this ICakeContext context, string key, S3Settings settings) { return await context.S3GetHashTag(key, "", settings); }
public static string S3GetHashTag(this ICakeContext context, string key, string version, S3Settings settings) { MetadataCollection result = context.CreateManager().GetObjectMetaData(key, version, settings); if ((result != null) && result.Keys.Contains("x-amz-meta-hashtag")) { return(result["x-amz-meta-hashtag"]); } else { return(""); } }
public static void S3Delete(this ICakeContext context, string key, string version, S3Settings settings) { context.CreateManager().Delete(key, version, settings); }
public static IList <string> S3DeleteAll(this ICakeContext context, string prefix, DateTimeOffset lastModified, S3Settings settings) { return(context.CreateManager().DeleteAll(prefix, lastModified, settings)); }
public static DateTimeOffset S3LastModified(this ICakeContext context, string key, S3Settings settings) { return context.S3LastModified(key, "", settings); }
public static IList <S3Object> GetS3Objects(this ICakeContext context, string prefix, S3Settings settings) { return(context.CreateManager().GetObjects(prefix, settings)); }
public static IList<S3Object> GetS3Objects(this ICakeContext context, string prefix, S3Settings settings) { return context.CreateManager().GetObjects(prefix, settings); }
public static DateTimeOffset S3LastModified(this ICakeContext context, string key, string version, S3Settings settings) { S3Object result = context.CreateManager().GetObject(key, version, settings); if (result != null) { return(result.LastModified); } else { return(DateTime.MinValue); } }
public static string S3GetETag(this ICakeContext context, string key, string version, S3Settings settings) { S3Object result = context.CreateManager().GetObject(key, version, settings); if (result != null) { return result.ETag; } else { return ""; } }
public static string S3GetHashTag(this ICakeContext context, string key, S3Settings settings) { return(context.S3GetHashTag(key, "", settings)); }
public static string GetPreSignedURL(this ICakeContext context, string key, string version, DateTime expires, S3Settings settings) { return(context.CreateManager().GetPreSignedURL(key, version, expires, settings)); }