public override Result Execute(ConDepSettings settings, CancellationToken token) { var dynamicAwsConfig = settings.Config.OperationsConfig.Aws; using (var client = new Amazon.S3.AmazonS3Client(GetAwsCredentials(dynamicAwsConfig), RegionEndpoint.GetBySystemName((string)dynamicAwsConfig.Region))) { Logger.Verbose("Trying to get object metadata from S3"); try { var obj = client.GetObjectMetadata(_bucket, _key); if (obj.HttpStatusCode != HttpStatusCode.OK) { Logger.Verbose("Failed to get Amazon S3 Object metadata. Http status code was {0}", obj.HttpStatusCode); Logger.Info("Could not find Amazon S3 Object {0} in bucket {1}- assuming allready deleted.", _key, _bucket); return(Result.SuccessUnChanged()); } } catch (Exception ex) { Logger.Verbose("Failed to get Amazon S3 Object metadata. Exception was:"); Logger.Verbose(ex.Message); Logger.Warn("Exception during Amazon S3 Object lookup. Assuming object allready deleted."); return(Result.Failed()); } Logger.Info("Deleting Amazon S3 Object with key {0} in Bucket {1}", _key, _bucket); client.DeleteObject(_bucket, _key); return(Result.SuccessChanged()); } }
/// <summary> /// Gets meta data of a file on S3. /// It throws AmazonS3Exception if any error happens /// </summary> /// <param name="keyName">key name</param> /// <returns></returns> private Amazon.S3.Model.GetObjectMetadataResponse S3GetObjectMetaData(string keyName) { var request = new Amazon.S3.Model.GetObjectMetadataRequest(); request.BucketName = s3Settings.BucketName; request.Key = keyName; var objectMetaData = s3Client.GetObjectMetadata(request); return(objectMetaData); }