private void PutBucketPolicyButton_Click(object sender, RoutedEventArgs e) { try { S3Common.client.OnS3Response += PutBucketPolicyWebResponse; PutBucketPolicyRequest putRequest = new PutBucketPolicyRequest(); putRequest.BucketName = SelectedBucketName; putRequest.Policy = GetPolicy(SelectedBucketName); S3Common.client.PutBucketPolicy(putRequest); } catch (Exception ex) { S3Common.client.OnS3Response -= PutBucketPolicyWebResponse; this.Dispatcher.BeginInvoke(() => { MessageBox.Show(ex.Message); }); } }
public void TestGetBucketPolicyStatus_IsNotPublic() { var bucketName = S3TestUtils.CreateBucket(s3Client); try { //Set the bucket policy to not public var putRequest = new PutBucketPolicyRequest { BucketName = bucketName, Policy = string.Format(@"{{ ""Version"":""2012-10-17"", ""Statement"":[ {{ ""Sid"":""AddPerm"", ""Effect"":""Deny"", ""Principal"": ""*"", ""Action"":[""s3:GetObject""], ""Resource"":[""arn:aws:s3:::{0}/*""] }} ] }}", bucketName) }; s3Client.PutBucketPolicy(putRequest); //Get the policy status on the bucket GetBucketPolicyStatusRequest getRequest = new GetBucketPolicyStatusRequest { BucketName = bucketName }; var getResponse = s3Client.GetBucketPolicyStatus(getRequest); Assert.AreEqual(false, getResponse.PolicyStatus.IsPublic); } finally { AmazonS3Util.DeleteS3BucketWithObjects(s3Client, bucketName); } }
public void TestGetBucketPolicyStatus_IsNotPublic() { //Set the bucket policy to not public var putRequest = new PutBucketPolicyRequest { BucketName = bucketName, Policy = string.Format(@"{{ ""Version"":""2012-10-17"", ""Statement"":[ {{ ""Sid"":""AddPerm"", ""Effect"":""Deny"", ""Principal"": ""*"", ""Action"":[""s3:GetObject""], ""Resource"":[""arn:aws:s3:::{0}/*""] }} ] }}", bucketName) }; Client.PutBucketPolicy(putRequest); //Get the policy status on the bucket GetBucketPolicyStatusRequest getRequest = new GetBucketPolicyStatusRequest { BucketName = bucketName }; var getResponse = S3TestUtils.WaitForConsistency(() => { var res = Client.GetBucketPolicyStatus(getRequest); return(res.PolicyStatus?.IsPublic == false ? res : null); }); Assert.AreEqual(false, getResponse.PolicyStatus.IsPublic); }
public Task <PutBucketPolicyResponse> PutBucketPolicyAsync(PutBucketPolicyRequest request, CancellationToken cancellationToken = default) { throw new NotImplementedException(); }
public override async Task CreateBucket(ILogger log, CancellationToken token) { if (!await HasBucket(log, token)) { log.LogInformation($"Creating new bucket: {_bucketName}"); await _client.EnsureBucketExistsAsync(_bucketName); var tries = 0; var maxTries = 30; var success = false; while (tries < maxTries && !success) { tries++; try { var policyRequest = new PutBucketPolicyRequest() { BucketName = _bucketName, Policy = GetReadOnlyPolicy(_bucketName).ToString() }; log.LogInformation($"Adding policy for public read access to bucket: ${_bucketName}"); await _client.PutBucketPolicyAsync(policyRequest); success = true; } catch (AmazonS3Exception ex) when(tries < (maxTries - 1)) { log.LogWarning($"Failed to update policy for bucket: {ex.Message} Trying again."); await Task.Delay(TimeSpan.FromSeconds(tries)); } } if (tries >= maxTries) { throw new InvalidOperationException("Unable to create bucket"); } // Get and release the lock to ensure that everything will work for the next operation. // In the E2E tests there are often failures due to the bucket saying it is not available // even though the above checks passed. To work around this wait until a file can be // successfully created in the bucket before returning. tries = 0; success = false; // Pass the null logger to avoid noise using (var feedLock = CreateLock(NullLogger.Instance)) { while (tries < maxTries && !success) { tries++; try { // Attempt to get the lock, since this is a new container it will be available. // This will fail if the bucket it not yet ready. if (await feedLock.GetLock(TimeSpan.FromMinutes(1), "Container create lock test", token)) { feedLock.Release(); success = true; } } catch (AmazonS3Exception ex) when(tries < (maxTries - 1) && ex.StatusCode != HttpStatusCode.BadRequest) { // Ignore exceptions until the last exception await Task.Delay(TimeSpan.FromSeconds(tries)); } } } _hasBucket = true; } }
public void BucketSamples() { { #region ListBuckets Sample // Create a client AmazonS3Client client = new AmazonS3Client(); // Issue call ListBucketsResponse response = client.ListBuckets(); // View response data Console.WriteLine("Buckets owner - {0}", response.Owner.DisplayName); foreach (S3Bucket bucket in response.Buckets) { Console.WriteLine("Bucket {0}, Created on {1}", bucket.BucketName, bucket.CreationDate); } #endregion } { #region BucketPolicy Sample // Create a client AmazonS3Client client = new AmazonS3Client(); // Put sample bucket policy (overwrite an existing policy) string newPolicy = @"{ ""Statement"":[{ ""Sid"":""BasicPerms"", ""Effect"":""Allow"", ""Principal"": ""*"", ""Action"":[""s3:PutObject"",""s3:GetObject""], ""Resource"":[""arn:aws:s3:::samplebucketname/*""] }]}"; PutBucketPolicyRequest putRequest = new PutBucketPolicyRequest { BucketName = "SampleBucket", Policy = newPolicy }; client.PutBucketPolicy(putRequest); // Retrieve current policy GetBucketPolicyRequest getRequest = new GetBucketPolicyRequest { BucketName = "SampleBucket" }; string policy = client.GetBucketPolicy(getRequest).Policy; Console.WriteLine(policy); Debug.Assert(policy.Contains("BasicPerms")); // Delete current policy DeleteBucketPolicyRequest deleteRequest = new DeleteBucketPolicyRequest { BucketName = "SampleBucket" }; client.DeleteBucketPolicy(deleteRequest); // Retrieve current policy and verify that it is null policy = client.GetBucketPolicy(getRequest).Policy; Debug.Assert(policy == null); #endregion } { #region GetBucketLocation Sample // Create a client AmazonS3Client client = new AmazonS3Client(); // Construct request GetBucketLocationRequest request = new GetBucketLocationRequest { BucketName = "SampleBucket" }; // Issue call GetBucketLocationResponse response = client.GetBucketLocation(request); // View response data Console.WriteLine("Bucket location - {0}", response.Location); #endregion } { #region PutBucket Sample // Create a client AmazonS3Client client = new AmazonS3Client(); // Construct request PutBucketRequest request = new PutBucketRequest { BucketName = "SampleBucket", BucketRegion = S3Region.EU, // set region to EU CannedACL = S3CannedACL.PublicRead // make bucket publicly readable }; // Issue call PutBucketResponse response = client.PutBucket(request); #endregion } { #region DeleteBucket Sample 1 // Create a client AmazonS3Client client = new AmazonS3Client(); // Construct request DeleteBucketRequest request = new DeleteBucketRequest { BucketName = "SampleBucket" }; // Issue call DeleteBucketResponse response = client.DeleteBucket(request); #endregion } { #region DeleteBucket Sample 2 // Create a client AmazonS3Client client = new AmazonS3Client(); // List and delete all objects ListObjectsRequest listRequest = new ListObjectsRequest { BucketName = "SampleBucket" }; ListObjectsResponse listResponse; do { // Get a list of objects listResponse = client.ListObjects(listRequest); foreach (S3Object obj in listResponse.S3Objects) { // Delete each object client.DeleteObject(new DeleteObjectRequest { BucketName = "SampleBucket", Key = obj.Key }); } // Set the marker property listRequest.Marker = listResponse.NextMarker; } while (listResponse.IsTruncated); // Construct DeleteBucket request DeleteBucketRequest request = new DeleteBucketRequest { BucketName = "SampleBucket" }; // Issue call DeleteBucketResponse response = client.DeleteBucket(request); #endregion } { #region LifecycleConfiguration Sample // Create a client AmazonS3Client client = new AmazonS3Client(); // Put sample lifecycle configuration (overwrite an existing configuration) LifecycleConfiguration newConfiguration = new LifecycleConfiguration { Rules = new List <LifecycleRule> { // Rule to delete keys with prefix "Test-" after 5 days new LifecycleRule { Prefix = "Test-", Expiration = new LifecycleRuleExpiration { Days = 5 } }, // Rule to delete keys in subdirectory "Logs" after 2 days new LifecycleRule { Prefix = "Logs/", Expiration = new LifecycleRuleExpiration { Days = 2 }, Id = "log-file-removal" } } }; PutLifecycleConfigurationRequest putRequest = new PutLifecycleConfigurationRequest { BucketName = "SampleBucket", Configuration = newConfiguration }; client.PutLifecycleConfiguration(putRequest); // Retrieve current configuration GetLifecycleConfigurationRequest getRequest = new GetLifecycleConfigurationRequest { BucketName = "SampleBucket" }; LifecycleConfiguration configuration = client.GetLifecycleConfiguration(getRequest).Configuration; Console.WriteLine("Configuration contains {0} rules", configuration.Rules.Count); foreach (LifecycleRule rule in configuration.Rules) { Console.WriteLine("Rule"); Console.WriteLine(" Prefix = " + rule.Prefix); Console.WriteLine(" Expiration (days) = " + rule.Expiration.Days); Console.WriteLine(" Id = " + rule.Id); Console.WriteLine(" Status = " + rule.Status); } // Put a new configuration and overwrite the existing configuration configuration.Rules.RemoveAt(0); // remove first rule client.PutLifecycleConfiguration(putRequest); // Delete current configuration DeleteLifecycleConfigurationRequest deleteRequest = new DeleteLifecycleConfigurationRequest { BucketName = "SampleBucket" }; client.DeleteLifecycleConfiguration(deleteRequest); // Retrieve current configuration and verify that it is null configuration = client.GetLifecycleConfiguration(getRequest).Configuration; Debug.Assert(configuration == null); #endregion } }
public PutBucketPolicyResponse PutBucketPolicy(PutBucketPolicyRequest request) { throw new NotImplementedException(); }
public void PutBucketPolicyAsync(PutBucketPolicyRequest request, AmazonServiceCallback <PutBucketPolicyRequest, PutBucketPolicyResponse> callback, AsyncOptions options = null) { throw new System.NotImplementedException(); }