public static WaitForBucket ( IAmazonS3 client, string bucketName, int maxSeconds ) : void | ||
client | IAmazonS3 | |
bucketName | string | |
maxSeconds | int | |
return | void |
private static string GetOrCreateBucket(AmazonS3Client s3Client) { foreach (var bucket in s3Client.ListBuckets().Buckets) { if (bucket.BucketName.StartsWith(InteropBucketRoot)) { return(bucket.BucketName); } } var newBucketName = InteropBucketRoot + DateTime.UtcNow.ToFileTime(); s3Client.PutBucket(newBucketName); S3TestUtils.WaitForBucket(s3Client, newBucketName); return(newBucketName); }
private void TestReplicationConfigurationForPrefix(string prefix) { var bucketName = UtilityMethods.GenerateName(); var storageClass = S3StorageClass.ReducedRedundancy; var euBucketName = "eu" + UtilityMethods.GenerateName(); var euS3 = new AmazonS3Client(Amazon.RegionEndpoint.EUWest1); euS3.PutBucket(euBucketName); Client.PutBucket(bucketName); S3TestUtils.WaitForBucket(euS3, euBucketName); S3TestUtils.WaitForBucket(Client, bucketName); euS3.PutBucketVersioning(new PutBucketVersioningRequest { BucketName = euBucketName, VersioningConfig = new S3BucketVersioningConfig { Status = VersionStatus.Enabled } }); Client.PutBucketVersioning(new PutBucketVersioningRequest { BucketName = bucketName, VersioningConfig = new S3BucketVersioningConfig { Status = VersionStatus.Enabled } }); WaitForEnabledVersioning(euS3, euBucketName); WaitForEnabledVersioning(Client, bucketName); var roleArn = "arn:aws:iam::pikc123456:role/abcdef"; var destinationBucketArn = "arn:aws:s3:::" + euBucketName; try { Client.PutBucketReplication(new PutBucketReplicationRequest { BucketName = bucketName, Configuration = new ReplicationConfiguration { Role = roleArn, Rules = { new ReplicationRule { Id = UtilityMethods.GenerateName(), Prefix = prefix, Status = ReplicationRuleStatus.Enabled, Destination = new ReplicationDestination { BucketArn = destinationBucketArn, StorageClass = storageClass } } } } }); var config = S3TestUtils.WaitForConsistency(() => { var res = Client.GetBucketReplication(new GetBucketReplicationRequest { BucketName = bucketName }); return(res.Configuration?.Role == roleArn ? res.Configuration : null); }); Assert.IsNotNull(config); Assert.IsNotNull(config.Role); Assert.AreEqual(roleArn, config.Role); Assert.IsNotNull(config.Rules); Assert.AreEqual(1, config.Rules.Count); var rule = config.Rules.First(); Assert.IsNotNull(rule); Assert.IsNotNull(rule.Id); Assert.IsNotNull(rule.Prefix); if (string.IsNullOrEmpty(prefix)) { Assert.AreEqual(string.Empty, rule.Prefix); } else { Assert.AreEqual(prefix, rule.Prefix); } Assert.AreEqual(destinationBucketArn, rule.Destination.BucketArn); Assert.AreEqual(storageClass, rule.Destination.StorageClass); Client.PutObject(new PutObjectRequest { BucketName = bucketName, ContentBody = "foo", Key = "foo-123" }); var status = Client.GetObjectMetadata(new GetObjectMetadataRequest { BucketName = bucketName, Key = "foo-123" }).ReplicationStatus; Assert.IsNotNull(status); Client.DeleteBucketReplication(new DeleteBucketReplicationRequest { BucketName = bucketName }); var noconfig = S3TestUtils.WaitForConsistency(() => { var res = Client.GetBucketReplication(new GetBucketReplicationRequest { BucketName = bucketName }); return(res.Configuration?.Rules.Any() == false ? res.Configuration : null); }); Assert.IsFalse(noconfig.Rules.Any()); } finally { AmazonS3Util.DeleteS3BucketWithObjects(euS3, euBucketName); AmazonS3Util.DeleteS3BucketWithObjects(Client, bucketName); } }