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);
            }
        }
Exemple #3
0
        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();
 }
Exemple #5
0
        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;
            }
        }
Exemple #6
0
        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();
 }
Exemple #8
0
 public void PutBucketPolicyAsync(PutBucketPolicyRequest request, AmazonServiceCallback <PutBucketPolicyRequest, PutBucketPolicyResponse> callback, AsyncOptions options = null)
 {
     throw new System.NotImplementedException();
 }