コード例 #1
0
        /// 获取存储桶生命周期
        public void GetBucketLifecycle()
        {
            //.cssg-snippet-body-start:[get-bucket-lifecycle]
            try
            {
                string bucket = "examplebucket-1250000000"; //格式:BucketName-APPID
                GetBucketLifecycleRequest request = new GetBucketLifecycleRequest(bucket);
                //执行请求
                GetBucketLifecycleResult result = cosXml.GetBucketLifecycle(request);
                //存储桶的生命周期配置
                LifecycleConfiguration conf = result.lifecycleConfiguration;
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
            }

            //.cssg-snippet-body-end
        }
コード例 #2
0
        public static void testLifeCycleConfig()
        {
            LifecycleConfiguration lifeCycleConfig = new LifecycleConfiguration();

            lifeCycleConfig.rules = new System.Collections.Generic.List <LifecycleConfiguration.Rule>();
            for (int i = 0; i < 3; i++)
            {
                LifecycleConfiguration.Rule rule = new LifecycleConfiguration.Rule();
                rule.id            = String.Format("the {0}th", i + 1);
                rule.filter        = new LifecycleConfiguration.Filter();
                rule.filter.prefix = "filter prefix";
                rule.status        = "Enabled";
                rule.abortIncompleteMultiUpload = new LifecycleConfiguration.AbortIncompleteMultiUpload();
                rule.abortIncompleteMultiUpload.daysAfterInitiation = 2;
                rule.expiration                  = new LifecycleConfiguration.Expiration();
                rule.expiration.date             = DateTime.Now.ToString();
                rule.expiration.days             = 2;
                rule.transition                  = new LifecycleConfiguration.Transition();
                rule.transition.date             = DateTime.Now.ToString();
                rule.transition.days             = 2;
                rule.noncurrentVersionExpiration = new LifecycleConfiguration.NoncurrentVersionExpiration();
                rule.noncurrentVersionExpiration.noncurrentDays = 2;
                rule.noncurrentVersionTransition = new LifecycleConfiguration.NoncurrentVersionTransition();
                rule.noncurrentVersionTransition.noncurrentDays = 2;
                rule.noncurrentVersionTransition.storageClass   = EnumUtils.GetValue(CosStorageClass.STANDARD);
                lifeCycleConfig.rules.Add(rule);
            }
            Console.WriteLine(lifeCycleConfig.GetInfo());
        }
コード例 #3
0
 public PutBucketLifecycleRequest(string bucket)
     : base(bucket)
 {
     this.method = CosRequestMethod.PUT;
     this.queryParameters.Add("lifecycle", null);
     lifecycleConfiguration       = new LifecycleConfiguration();
     lifecycleConfiguration.rules = new List <LifecycleConfiguration.Rule>();
 }
コード例 #4
0
 static async Task AddExampleLifecycleConfigAsync(IAmazonS3 client, LifecycleConfiguration configuration)
 {
     PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest
     {
         BucketName    = bucketName,
         Configuration = configuration
     };
     var response = await client.PutLifecycleConfigurationAsync(request);
 }
コード例 #5
0
        private static async Task LifecycleConfigAsync()
        {
            client = new AmazonS3Client(bucketRegion);
            string input = Console.ReadLine();

            try
            {
                int action = Convert.ToInt32(input);
                var lifeCycleConfiguration = new LifecycleConfiguration();
                switch (action)
                {
                case 1:
                    await AddUpdateDeleteLifecycleConfigAsync();

                    break;

                case 2:
                    lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

                    foreach (var rule in lifeCycleConfiguration.Rules)
                    {
                        Console.WriteLine("Rule Id {0} with status of {1} and expiration Days is ", rule.Id, rule.Status, rule.Expiration != null ? rule.Expiration.Days: 0);
                        Console.WriteLine("Transition");
                        foreach (var trans in rule.Transitions)
                        {
                            Console.WriteLine("Storage class {0}  and expiration Days is ", trans.StorageClass, trans.Days);
                        }
                        Console.WriteLine("Filter");
                        if (rule.Filter.LifecycleFilterPredicate is LifecyclePrefixPredicate)
                        {
                            LifecyclePrefixPredicate prefix = rule.Filter.LifecycleFilterPredicate as LifecyclePrefixPredicate;
                            Console.WriteLine("Filter Prefix {0}  and expiration Days is ", prefix.Prefix);
                        }
                        if (rule.Filter.LifecycleFilterPredicate is LifecycleTagPredicate)
                        {
                            LifecycleTagPredicate tags = rule.Filter.LifecycleFilterPredicate as LifecycleTagPredicate;
                            Console.WriteLine("Filter Tag Key {0}  and value ", tags.Tag.Key, tags.Tag.Value);
                        }
                        Console.WriteLine("*************************************");
                    }
                    break;

                case 3:
                    await RemoveLifecycleConfigAsync(client);

                    break;

                default:
                    break;
                }
            }
            catch (Exception e)
            {
                ErrorUtility.LogError(e, GApplication.Unknown, string.Format("Error: Lifecycle Error: " + e.Message));
            }
        }
コード例 #6
0
        public void GetInfoTest()
        {
            LifecycleConfiguration target = new LifecycleConfiguration(); // TODO: Initialize to an appropriate value
            string expected = string.Empty;                               // TODO: Initialize to an appropriate value
            string actual;

            actual = target.GetInfo();
            Assert.AreEqual(expected, actual);
            Assert.Inconclusive("Verify the correctness of this test method.");
        }
コード例 #7
0
        static void AddExampleLifecycleConfigAsync(IAmazonS3 client, LifecycleConfiguration configuration)
        {
            PutLifecycleConfigurationRequest request = new PutLifecycleConfigurationRequest
            {
                BucketName = bucketName,

                Configuration = configuration
            };
            var response = client.PutLifecycleConfigurationAsync(request).Result;
        }
コード例 #8
0
ファイル: Upload.cs プロジェクト: plantheric/ServerBackup
        private void GetLifeCycleConfiguration()
        {
            var request = new GetLifecycleConfigurationRequest {
                BucketName = AWSBucket
            };
            var response = S3Client.GetLifecycleConfiguration(request);

            LifecycleConfiguration = response.Configuration;

            if (LifecycleConfiguration == null)
            {
                LifecycleConfiguration = new LifecycleConfiguration();
            }
        }
コード例 #9
0
 internal GetBucketLifecycleResponse(HttpStatusCode statusCode, string responseContent)
     : base(statusCode, responseContent)
 {
     if (string.IsNullOrEmpty(responseContent) ||
         !HttpStatusCode.OK.Equals(statusCode))
     {
         this.BucketLifecycle = null;
         return;
     }
     //Remove xmlns content for config serialization
     responseContent = utils.RemoveNamespaceInXML(responseContent);
     using (var stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(responseContent)))
     {
         this.BucketLifecycle = (LifecycleConfiguration) new XmlSerializer(typeof(LifecycleConfiguration)).Deserialize(stream);
     }
 }
コード例 #10
0
ファイル: BucketTest.cs プロジェクト: agin719/cssg-cases
        public void getBucketLifecycle()
        {
            //.cssg-snippet-body-start:[get-bucket-lifecycle]
            CosXmlConfig config = new CosXmlConfig.Builder()
                                  .SetConnectionTimeoutMs(60000) //设置连接超时时间,单位毫秒,默认45000ms
                                  .SetReadWriteTimeoutMs(40000)  //设置读写超时时间,单位毫秒,默认45000ms
                                  .IsHttps(true)                 //设置默认 HTTPS 请求
                                  .SetAppid("1253653367")        //设置腾讯云账户的账户标识 APPID
                                  .SetRegion("ap-guangzhou")     //设置一个默认的存储桶地域
                                  .Build();

            string secretId       = Environment.GetEnvironmentVariable("COS_KEY");    //云 API 密钥 SecretId
            string secretKey      = Environment.GetEnvironmentVariable("COS_SECRET"); //云 API 密钥 SecretKey
            long   durationSecond = 600;                                              //每次请求签名有效时长,单位为秒
            QCloudCredentialProvider qCloudCredentialProvider = new DefaultQCloudCredentialProvider(secretId,
                                                                                                    secretKey, durationSecond);

            CosXml cosXml = new CosXmlServer(config, qCloudCredentialProvider);

            try
            {
                string bucket = "bucket-cssg-test-dotnet-1253653367"; //格式:BucketName-APPID
                GetBucketLifecycleRequest request = new GetBucketLifecycleRequest(bucket);
                //设置签名有效时长
                request.SetSign(TimeUtils.GetCurrentTime(TimeUnit.SECONDS), 600);
                //执行请求
                GetBucketLifecycleResult result = cosXml.GetBucketLifecycle(request);
                //存储桶的生命周期配置
                LifecycleConfiguration conf = result.lifecycleConfiguration;
            }
            catch (COSXML.CosException.CosClientException clientEx)
            {
                //请求失败
                Console.WriteLine("CosClientException: " + clientEx);
                Assert.Null(clientEx);
            }
            catch (COSXML.CosException.CosServerException serverEx)
            {
                //请求失败
                Console.WriteLine("CosServerException: " + serverEx.GetInfo());
                Assert.Null(serverEx);
            }
            //.cssg-snippet-body-end
        }
コード例 #11
0
        // Set Lifecycle configuration to the bucket
        public async static Task Run(MinioClient minio,
                                     string bucketName          = "my-bucket-name",
                                     LifecycleConfiguration lfc = null)
        {
            try
            {
                Console.WriteLine("Running example for API: SetBucketLifecycle");
                await minio.SetBucketLifecycleAsync(
                    new SetBucketLifecycleArgs()
                    .WithBucket(bucketName)
                    .WithLifecycleConfiguration(lfc)
                    );

                Console.WriteLine($"Bucket Lifecycle set for bucket {bucketName}.");
                Console.WriteLine();
            }
            catch (Exception e)
            {
                Console.WriteLine($"[Bucket]  Exception: {e}");
            }
        }
コード例 #12
0
        public void CreateExpirationRule(string bucket, string prefix, int expirationDays, string description)
        {
            var rule = new LifecycleRule
            {
                Id         = description,
                Prefix     = prefix,
                Status     = LifecycleRuleStatus.Enabled,
                Expiration = new LifecycleRuleExpiration {
                    Days = expirationDays
                }
            };

            var lifecycleConfiguration = new LifecycleConfiguration
            {
                Rules = new List <LifecycleRule> {
                    rule
                }
            };

            _s3Client.PutLifecycleConfiguration(bucket, lifecycleConfiguration);
        }
コード例 #13
0
        public void LifecycleConfigurationConstructorTest()
        {
            LifecycleConfiguration target = new LifecycleConfiguration();

            Assert.Inconclusive("TODO: Implement code to verify target");
        }
コード例 #14
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
            }
        }
コード例 #15
0
        public static string BuildLifecycleConfiguration(LifecycleConfiguration lifecycleConfiguration)
        {
            StringWriter      stringWriter     = new StringWriter();
            XmlWriterSettings xmlWriterSetting = new XmlWriterSettings();

            xmlWriterSetting.Indent = true;

            XmlWriter xmlWriter = XmlWriter.Create(stringWriter, xmlWriterSetting);

            xmlWriter.WriteStartDocument();

            //start to write element
            xmlWriter.WriteStartElement("LifecycleConfiguration");

            if (lifecycleConfiguration.rules != null)
            {
                foreach (LifecycleConfiguration.Rule rule in lifecycleConfiguration.rules)
                {
                    if (rule == null)
                    {
                        continue;
                    }
                    xmlWriter.WriteStartElement("Rule");
                    if (rule.id != null)
                    {
                        xmlWriter.WriteElementString("ID", rule.id);
                    }
                    if (rule.filter != null)
                    {
                        xmlWriter.WriteStartElement("Filter");
                        if (rule.filter.prefix != null)
                        {
                            xmlWriter.WriteElementString("Prefix", rule.filter.prefix);
                        }
                        if (rule.filter.filterAnd != null)
                        {
                            xmlWriter.WriteStartElement("And");
                            if (rule.filter.filterAnd.prefix != null)
                            {
                                xmlWriter.WriteElementString("Prefix", rule.filter.filterAnd.prefix);
                            }
                            xmlWriter.WriteEndElement();
                        }
                        xmlWriter.WriteEndElement();
                    }
                    if (rule.status != null)
                    {
                        xmlWriter.WriteElementString("Status", rule.status);
                    }
                    if (rule.transition != null)
                    {
                        xmlWriter.WriteStartElement("Transition");
                        if (rule.transition.days > 0)
                        {
                            xmlWriter.WriteElementString("Days", rule.transition.days.ToString());
                        }
                        if (rule.transition.storageClass != null)
                        {
                            xmlWriter.WriteElementString("StorageClass", rule.transition.storageClass);
                        }
                        if (rule.transition.date != null)
                        {
                            xmlWriter.WriteElementString("Date", rule.transition.date);
                        }
                        xmlWriter.WriteEndElement();
                    }
                    if (rule.expiration != null)
                    {
                        xmlWriter.WriteStartElement("Expiration");
                        if (rule.expiration.days > 0)
                        {
                            xmlWriter.WriteElementString("Days", rule.expiration.days.ToString());
                        }
                        if (rule.expiration.expiredObjectDeleteMarker != null)
                        {
                            if ((bool)rule.expiration.expiredObjectDeleteMarker)
                            {
                                xmlWriter.WriteElementString("ExpiredObjectDeleteMarker", "true");
                            }
                            else
                            {
                                xmlWriter.WriteElementString("ExpiredObjectDeleteMarker", "false");
                            }
                        }
                        if (rule.expiration.date != null)
                        {
                            xmlWriter.WriteElementString("Date", rule.expiration.date);
                        }
                        xmlWriter.WriteEndElement();
                    }
                    if (rule.noncurrentVersionTransition != null)
                    {
                        xmlWriter.WriteStartElement("NoncurrentVersionTransition");
                        if (rule.noncurrentVersionTransition.noncurrentDays > 0)
                        {
                            xmlWriter.WriteElementString("NoncurrentDays", rule.noncurrentVersionTransition.noncurrentDays.ToString());
                        }
                        if (rule.noncurrentVersionTransition.storageClass != null)
                        {
                            xmlWriter.WriteElementString("StorageClass", rule.noncurrentVersionTransition.storageClass);
                        }
                        xmlWriter.WriteEndElement();
                    }
                    if (rule.noncurrentVersionExpiration != null)
                    {
                        xmlWriter.WriteStartElement("NoncurrentVersionExpiration");
                        if (rule.noncurrentVersionExpiration.noncurrentDays > 0)
                        {
                            xmlWriter.WriteElementString("NoncurrentDays", rule.noncurrentVersionExpiration.noncurrentDays.ToString());
                        }
                        xmlWriter.WriteEndElement();
                    }
                    if (rule.abortIncompleteMultiUpload != null)
                    {
                        xmlWriter.WriteStartElement("AbortIncompleteMultipartUpload");
                        if (rule.abortIncompleteMultiUpload.daysAfterInitiation > 0)
                        {
                            xmlWriter.WriteElementString("DaysAfterInitiation", rule.abortIncompleteMultiUpload.daysAfterInitiation.ToString());
                        }
                        xmlWriter.WriteEndElement();
                    }
                }
            }

            // end to element
            xmlWriter.WriteEndElement();

            xmlWriter.WriteEndDocument();
            xmlWriter.Flush();
            return(RemoveXMLHeader(stringWriter.ToString()));
        }
コード例 #16
0
 public SetBucketLifecycleArgs WithLifecycleConfiguration(LifecycleConfiguration lc)
 {
     BucketLifecycle = lc;
     return(this);
 }
コード例 #17
0
 internal override void ParseResponseBody(System.IO.Stream inputStream, string contentType, long contentLength)
 {
     lifecycleConfiguration = new LifecycleConfiguration();
     XmlParse.ParseLifecycleConfiguration(inputStream, lifecycleConfiguration);
 }
コード例 #18
0
        public void LifecycleTest()
        {
            var s3Configuration = Client.GetLifecycleConfiguration(bucketName).Configuration;

            Assert.IsNotNull(s3Configuration);
            Assert.IsNotNull(s3Configuration.Rules);
            Assert.AreEqual(0, s3Configuration.Rules.Count);

            var configuration = new LifecycleConfiguration
            {
                Rules = new List <LifecycleRule>
                {
                    new LifecycleRule
                    {
                        Prefix     = "rule1-",
                        Status     = LifecycleRuleStatus.Enabled,
                        Expiration = new LifecycleRuleExpiration
                        {
                            Days = 2,
                        },
#pragma warning disable 618
                        Transition = new LifecycleTransition
                        {
                            Days         = 1,
                            StorageClass = S3StorageClass.Glacier
                        },
                        NoncurrentVersionTransition = new LifecycleRuleNoncurrentVersionTransition
                        {
                            NoncurrentDays = 14,
                            StorageClass   = S3StorageClass.Glacier
                        },
#pragma warning restore 618
                        AbortIncompleteMultipartUpload = new LifecycleRuleAbortIncompleteMultipartUpload
                        {
                            DaysAfterInitiation = 7
                        }
                    },
                    new LifecycleRule
                    {
                        Prefix     = "rule2-",
                        Expiration = new LifecycleRuleExpiration
                        {
                            Days = 120
                        },
                        Transitions = new List <LifecycleTransition>
                        {
                            new LifecycleTransition
                            {
                                Days         = 30,
                                StorageClass = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleTransition
                            {
                                Days         = 90,
                                StorageClass = S3StorageClass.Glacier
                            }
                        },
                        NoncurrentVersionTransitions = new List <LifecycleRuleNoncurrentVersionTransition>
                        {
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 30,
                                StorageClass   = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 90,
                                StorageClass   = S3StorageClass.Glacier
                            }
                        }
                    },
                    new LifecycleRule
                    {
                        Prefix     = "rule3-",
                        Expiration = new LifecycleRuleExpiration
                        {
                            ExpiredObjectDeleteMarker = true
                        },
                        Transitions = new List <LifecycleTransition>
                        {
                            new LifecycleTransition
                            {
                                Days         = 30,
                                StorageClass = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleTransition
                            {
                                Days         = 90,
                                StorageClass = S3StorageClass.Glacier
                            }
                        },
                        NoncurrentVersionTransitions = new List <LifecycleRuleNoncurrentVersionTransition>
                        {
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 30,
                                StorageClass   = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 90,
                                StorageClass   = S3StorageClass.Glacier
                            }
                        }
                    }
                }
            };

            Client.PutLifecycleConfiguration(new PutLifecycleConfigurationRequest
            {
                BucketName    = bucketName,
                Configuration = configuration
            });
            s3Configuration = Client.GetLifecycleConfiguration(bucketName).Configuration;

            string abortRuleId = null;

            Assert.IsNotNull(s3Configuration);
            Assert.IsNotNull(s3Configuration.Rules);
            Assert.AreEqual(configuration.Rules.Count, s3Configuration.Rules.Count);
            for (int i = 0; i < configuration.Rules.Count; i++)
            {
                var rule = configuration.Rules[i];
                Assert.IsNotNull(rule);
                var s3Rule = s3Configuration.Rules[i];
                Assert.IsNotNull(s3Rule);
                Assert.IsFalse(string.IsNullOrEmpty(s3Rule.Id));

                Assert.AreEqual(rule.Transitions.Count, s3Rule.Transitions.Count);
                Assert.AreEqual(rule.NoncurrentVersionTransitions.Count, s3Rule.NoncurrentVersionTransitions.Count);
                if (rule.AbortIncompleteMultipartUpload == null)
                {
                    Assert.IsNull(s3Rule.AbortIncompleteMultipartUpload);
                    Assert.AreEqual(LifecycleRuleStatus.Disabled, s3Rule.Status);
                }
                else
                {
                    Assert.AreEqual(rule.AbortIncompleteMultipartUpload.DaysAfterInitiation, s3Rule.AbortIncompleteMultipartUpload.DaysAfterInitiation);
                    Assert.AreEqual(LifecycleRuleStatus.Enabled, s3Rule.Status);
                    abortRuleId = s3Rule.Id;
                }
                Assert.AreEqual(rule.Expiration.Days, s3Rule.Expiration.Days);
                Assert.AreEqual(rule.Expiration.ExpiredObjectDeleteMarker, s3Rule.Expiration.ExpiredObjectDeleteMarker);

#pragma warning disable 618
                Assert.AreEqual(rule.Transition.Days, s3Rule.Transition.Days);
                Assert.AreEqual(rule.NoncurrentVersionTransition.NoncurrentDays, s3Rule.NoncurrentVersionTransition.NoncurrentDays);
#pragma warning restore 618
            }

            var expectedMinAbortDate = DateTime.Now.Date.AddDays(7);
            var initResponse         = Client.InitiateMultipartUpload(new InitiateMultipartUploadRequest
            {
                BucketName = bucketName,
                Key        = "rule1-123",
                CannedACL  = S3CannedACL.PublicRead
            });
            var listResponse = Client.ListParts(bucketName, initResponse.Key, initResponse.UploadId);

            Assert.AreEqual(abortRuleId, initResponse.AbortRuleId);
            Assert.AreEqual(abortRuleId, listResponse.AbortRuleId);
            Assert.AreEqual(initResponse.AbortDate, listResponse.AbortDate);
            Assert.IsTrue(expectedMinAbortDate < initResponse.AbortDate);
        }
        public IRequest Marshall(PutLifecycleConfigurationRequest putLifecycleConfigurationRequest)
        {
            //IL_0006: Unknown result type (might be due to invalid IL or missing references)
            //IL_000c: Expected O, but got Unknown
            //IL_03d1: Unknown result type (might be due to invalid IL or missing references)
            //IL_050c: Unknown result type (might be due to invalid IL or missing references)
            IRequest val = new DefaultRequest(putLifecycleConfigurationRequest, "AmazonS3");

            val.set_HttpMethod("PUT");
            val.set_ResourcePath("/" + S3Transforms.ToStringValue(putLifecycleConfigurationRequest.BucketName));
            val.AddSubResource("lifecycle");
            StringWriter stringWriter = new StringWriter(CultureInfo.InvariantCulture);

            using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings
            {
                Encoding = Encoding.UTF8,
                OmitXmlDeclaration = true
            }))
            {
                LifecycleConfiguration configuration = putLifecycleConfigurationRequest.Configuration;
                if (configuration != null)
                {
                    xmlWriter.WriteStartElement("LifecycleConfiguration", "");
                    if (configuration != null)
                    {
                        List <LifecycleRule> rules = configuration.Rules;
                        if (rules != null && rules.Count > 0)
                        {
                            foreach (LifecycleRule item in rules)
                            {
                                xmlWriter.WriteStartElement("Rule", "");
                                if (item != null)
                                {
                                    LifecycleRuleExpiration expiration = item.Expiration;
                                    if (expiration != null)
                                    {
                                        xmlWriter.WriteStartElement("Expiration", "");
                                        if (expiration.IsSetDate())
                                        {
                                            xmlWriter.WriteElementString("Date", "", S3Transforms.ToXmlStringValue(expiration.Date));
                                        }
                                        if (expiration.IsSetDays())
                                        {
                                            xmlWriter.WriteElementString("Days", "", S3Transforms.ToXmlStringValue(expiration.Days));
                                        }
                                        if (expiration.IsSetExpiredObjectDeleteMarker())
                                        {
                                            xmlWriter.WriteElementString("ExpiredObjectDeleteMarker", "", expiration.ExpiredObjectDeleteMarker.ToString().ToLowerInvariant());
                                        }
                                        xmlWriter.WriteEndElement();
                                    }
                                    List <LifecycleTransition> transitions = item.Transitions;
                                    if (transitions != null && transitions.Count > 0)
                                    {
                                        foreach (LifecycleTransition item2 in transitions)
                                        {
                                            if (item2 != null)
                                            {
                                                xmlWriter.WriteStartElement("Transition", "");
                                                if (item2.IsSetDate())
                                                {
                                                    xmlWriter.WriteElementString("Date", "", S3Transforms.ToXmlStringValue(item2.Date));
                                                }
                                                if (item2.IsSetDays())
                                                {
                                                    xmlWriter.WriteElementString("Days", "", S3Transforms.ToXmlStringValue(item2.Days));
                                                }
                                                if (item2.IsSetStorageClass())
                                                {
                                                    xmlWriter.WriteElementString("StorageClass", "", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(item2.StorageClass)));
                                                }
                                                xmlWriter.WriteEndElement();
                                            }
                                        }
                                    }
                                    LifecycleRuleNoncurrentVersionExpiration noncurrentVersionExpiration = item.NoncurrentVersionExpiration;
                                    if (noncurrentVersionExpiration != null)
                                    {
                                        xmlWriter.WriteStartElement("NoncurrentVersionExpiration", "");
                                        if (noncurrentVersionExpiration.IsSetNoncurrentDays())
                                        {
                                            xmlWriter.WriteElementString("NoncurrentDays", "", S3Transforms.ToXmlStringValue(noncurrentVersionExpiration.NoncurrentDays));
                                        }
                                        xmlWriter.WriteEndElement();
                                    }
                                    List <LifecycleRuleNoncurrentVersionTransition> noncurrentVersionTransitions = item.NoncurrentVersionTransitions;
                                    if (noncurrentVersionTransitions != null && noncurrentVersionTransitions.Count > 0)
                                    {
                                        foreach (LifecycleRuleNoncurrentVersionTransition item3 in noncurrentVersionTransitions)
                                        {
                                            if (item3 != null)
                                            {
                                                xmlWriter.WriteStartElement("NoncurrentVersionTransition", "");
                                                if (item3.IsSetNoncurrentDays())
                                                {
                                                    xmlWriter.WriteElementString("NoncurrentDays", "", S3Transforms.ToXmlStringValue(item3.NoncurrentDays));
                                                }
                                                if (item3.IsSetStorageClass())
                                                {
                                                    xmlWriter.WriteElementString("StorageClass", "", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(item3.StorageClass)));
                                                }
                                                xmlWriter.WriteEndElement();
                                            }
                                        }
                                    }
                                    LifecycleRuleAbortIncompleteMultipartUpload abortIncompleteMultipartUpload = item.AbortIncompleteMultipartUpload;
                                    if (abortIncompleteMultipartUpload != null)
                                    {
                                        xmlWriter.WriteStartElement("AbortIncompleteMultipartUpload", "");
                                        if (abortIncompleteMultipartUpload.IsSetDaysAfterInitiation())
                                        {
                                            xmlWriter.WriteElementString("DaysAfterInitiation", "", S3Transforms.ToXmlStringValue(abortIncompleteMultipartUpload.DaysAfterInitiation));
                                        }
                                        xmlWriter.WriteEndElement();
                                    }
                                }
                                if (item.IsSetId())
                                {
                                    xmlWriter.WriteElementString("ID", "", S3Transforms.ToXmlStringValue(item.Id));
                                }
                                if (item.IsSetPrefix() && item.IsSetFilter())
                                {
                                    throw new AmazonClientException("LifecycleRule.Prefix is deprecated.  Please only use LifecycleRule.Filter.");
                                }
                                if (item.IsSetPrefix())
                                {
                                    xmlWriter.WriteElementString("Prefix", "", S3Transforms.ToXmlStringValue(item.Prefix));
                                }
                                if (item.IsSetFilter())
                                {
                                    xmlWriter.WriteStartElement("Filter", "");
                                    if (item.Filter.IsSetLifecycleFilterPredicate())
                                    {
                                        item.Filter.LifecycleFilterPredicate.Accept(new LifecycleFilterPredicateMarshallVisitor(xmlWriter));
                                    }
                                    xmlWriter.WriteEndElement();
                                }
                                if (item.IsSetStatus())
                                {
                                    xmlWriter.WriteElementString("Status", "", S3Transforms.ToXmlStringValue(ConstantClass.op_Implicit(item.Status)));
                                }
                                else
                                {
                                    xmlWriter.WriteElementString("Status", "", "Disabled");
                                }
                                xmlWriter.WriteEndElement();
                            }
                        }
                    }
                    xmlWriter.WriteEndElement();
                }
            }
            try
            {
                string text = stringWriter.ToString();
                val.set_Content(Encoding.UTF8.GetBytes(text));
                val.get_Headers()["Content-Type"] = "application/xml";
                string value = AmazonS3Util.GenerateChecksumForContent(text, fBase64Encode: true);
                val.get_Headers()["Content-MD5"] = value;
                return(val);
            }
            catch (EncoderFallbackException ex)
            {
                throw new AmazonServiceException("Unable to marshall request to XML", (Exception)ex);
            }
        }
コード例 #20
0
        private static async Task AddUpdateDeleteLifecycleConfigAsync()
        {
            try
            {
                var lifeCycleConfiguration = new LifecycleConfiguration()
                {
                    Rules = new List <LifecycleRule>
                    {
                        new LifecycleRule
                        {
                            Id     = "Archive immediately rule",
                            Filter = new LifecycleFilter()
                            {
                                LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                {
                                    Prefix = "glacierobjects/"
                                }
                            },
                            Status      = LifecycleRuleStatus.Enabled,
                            Transitions = new List <LifecycleTransition>
                            {
                                new LifecycleTransition
                                {
                                    Days         = 0,
                                    StorageClass = S3StorageClass.Glacier
                                }
                            },
                        },
                        new LifecycleRule
                        {
                            Id     = "Archive and then delete rule",
                            Filter = new LifecycleFilter()
                            {
                                LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                {
                                    Prefix = "projectdocs/"
                                }
                            },
                            Status      = LifecycleRuleStatus.Enabled,
                            Transitions = new List <LifecycleTransition>
                            {
                                new LifecycleTransition
                                {
                                    Days         = 30,
                                    StorageClass = S3StorageClass.StandardInfrequentAccess
                                },
                                new LifecycleTransition
                                {
                                    Days         = 365,
                                    StorageClass = S3StorageClass.Glacier
                                }
                            },
                            Expiration = new LifecycleRuleExpiration()
                            {
                                Days = 3650
                            }
                        }
                    }
                };

                // Add the configuration to the bucket.
                await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

                // Retrieve an existing configuration.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

                // Add a new rule.
                lifeCycleConfiguration.Rules.Add(new LifecycleRule
                {
                    Id     = "NewRule",
                    Filter = new LifecycleFilter()
                    {
                        LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                        {
                            Prefix = "YearlyDocuments/"
                        }
                    },
                    Expiration = new LifecycleRuleExpiration()
                    {
                        Days = 3650
                    }
                });

                // Add the configuration to the bucket.
                await AddExampleLifecycleConfigAsync(client, lifeCycleConfiguration);

                // Verify that there are now three rules.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);

                Console.WriteLine("Expected # of rulest=3; found:{0}", lifeCycleConfiguration.Rules.Count);

                // Delete the configuration.
                await RemoveLifecycleConfigAsync(client);

                // Retrieve a nonexistent configuration.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered ***. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
コード例 #21
0
        public void LifecycleV2Test()
        {
            var s3Configuration = Client.GetLifecycleConfiguration(bucketName).Configuration;

            Assert.IsNotNull(s3Configuration);
            Assert.IsNotNull(s3Configuration.Rules);
            Assert.AreEqual(0, s3Configuration.Rules.Count);

            var configuration = new LifecycleConfiguration
            {
                Rules = new List <LifecycleRule>
                {
                    new LifecycleRule
                    {
                        Filter = new LifecycleFilter
                        {
                            LifecycleFilterPredicate = new LifecycleAndOperator
                            {
                                Operands = new List <LifecycleFilterPredicate>
                                {
                                    new LifecycleObjectSizeGreaterThanPredicate
                                    {
                                        ObjectSizeGreaterThan = 132000
                                    },
                                    new LifecycleObjectSizeLessThanPredicate
                                    {
                                        ObjectSizeLessThan = 422000
                                    }
                                }
                            }
                        },
                        Transitions = new List <LifecycleTransition>
                        {
                            new LifecycleTransition
                            {
                                Days         = 30,
                                StorageClass = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleTransition
                            {
                                Days         = 90,
                                StorageClass = S3StorageClass.Glacier
                            }
                        }
                    }
                }
            };

            Client.PutLifecycleConfiguration(new PutLifecycleConfigurationRequest
            {
                BucketName    = bucketName,
                Configuration = configuration
            });

            s3Configuration = S3TestUtils.WaitForConsistency(() =>
            {
                var res = Client.GetLifecycleConfiguration(bucketName);
                return(res.Configuration?.Rules?.Count == configuration.Rules.Count ? res.Configuration : null);
            });

            string abortRuleId = null;

            Assert.IsNotNull(s3Configuration);
            Assert.IsNotNull(s3Configuration.Rules);
            Assert.AreEqual(configuration.Rules.Count, s3Configuration.Rules.Count);
            for (int i = 0; i < configuration.Rules.Count; i++)
            {
                var s3Rule = s3Configuration.Rules[i];
                var rule   = configuration.Rules[i];
                Assert.IsNotNull(rule);
                Assert.IsNotNull(s3Rule);
                if (rule.AbortIncompleteMultipartUpload != null)
                {
                    abortRuleId = s3Rule.Id;
                }

                AssertRulesAreEqual(rule, s3Rule);
            }
        }
コード例 #22
0
        public void LifecycleTest()
        {
            var s3Configuration = Client.GetLifecycleConfiguration(bucketName).Configuration;
            Assert.IsNotNull(s3Configuration);
            Assert.IsNotNull(s3Configuration.Rules);
            Assert.AreEqual(0, s3Configuration.Rules.Count);

            var configuration = new LifecycleConfiguration
            {
                Rules = new List<LifecycleRule>
                {
                    new LifecycleRule
                    {
#pragma warning disable 618
                        Prefix = "rule1-",
#pragma warning restore 618
                        Status = LifecycleRuleStatus.Enabled,
                        Expiration = new LifecycleRuleExpiration
                        {
                            Days = 2,
                        },
#pragma warning disable 618
                        Transition = new LifecycleTransition
                        {
                            Days = 1,
                            StorageClass = S3StorageClass.Glacier
                        },
                        NoncurrentVersionTransition = new LifecycleRuleNoncurrentVersionTransition
                        {
                            NoncurrentDays = 14,
                            StorageClass = S3StorageClass.Glacier
                        },
#pragma warning restore 618
                        AbortIncompleteMultipartUpload = new LifecycleRuleAbortIncompleteMultipartUpload
                        {
                            DaysAfterInitiation = 7
                        }
                    },
                    new LifecycleRule
                    {
#pragma warning disable 618
                        Prefix = "rule2-",
#pragma warning restore 618
                        Expiration = new LifecycleRuleExpiration
                        {
                            Days = 120
                        },
                        Transitions = new List<LifecycleTransition>
                        {
                            new LifecycleTransition
                            {
                                Days = 30,
                                StorageClass = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleTransition
                            {
                                Days = 90,
                                StorageClass = S3StorageClass.Glacier
                            }
                        },
                        NoncurrentVersionTransitions = new List<LifecycleRuleNoncurrentVersionTransition>
                        {
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 30,
                                StorageClass = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 90,
                                StorageClass = S3StorageClass.Glacier
                            }
                        }
                    },
                    new LifecycleRule
                    {
#pragma warning disable 618
                        Prefix = "rule3-",
#pragma warning restore 618
                        Expiration = new LifecycleRuleExpiration 
                        {
                            ExpiredObjectDeleteMarker = true
                        },
                        Transitions = new List<LifecycleTransition>
                        {
                            new LifecycleTransition
                            {
                                Days = 30,
                                StorageClass = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleTransition
                            {
                                Days = 90,
                                StorageClass = S3StorageClass.Glacier
                            }
                        },
                        NoncurrentVersionTransitions = new List<LifecycleRuleNoncurrentVersionTransition>
                        {
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 30,
                                StorageClass = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 90,
                                StorageClass = S3StorageClass.Glacier
                            }
                        }
                    }
                }
            };

            Client.PutLifecycleConfiguration(new PutLifecycleConfigurationRequest
            {
                BucketName = bucketName,
                Configuration = configuration
            });
            
            s3Configuration = S3TestUtils.WaitForConsistency(() =>
            {
                var res = Client.GetLifecycleConfiguration(bucketName);
                return res.Configuration?.Rules?.Count == configuration.Rules.Count ? res.Configuration : null;
            });

            string abortRuleId = null;
            Assert.IsNotNull(s3Configuration);
            Assert.IsNotNull(s3Configuration.Rules);
            Assert.AreEqual(configuration.Rules.Count, s3Configuration.Rules.Count);
            for(int i=0;i<configuration.Rules.Count;i++)
            {
                var s3Rule = s3Configuration.Rules[i];
                var rule = configuration.Rules[i];
                Assert.IsNotNull(rule);
                Assert.IsNotNull(s3Rule);
                if (rule.AbortIncompleteMultipartUpload != null)
                    abortRuleId = s3Rule.Id;

                AssertRulesAreEqual(rule, s3Rule);
            }

            Thread.Sleep(10000);

            var expectedMinAbortDate = DateTime.Now.Date.AddDays(7);
            var initResponse = Client.InitiateMultipartUpload(new InitiateMultipartUploadRequest
            {
                BucketName = bucketName,
                Key = "rule1-123",
                CannedACL = S3CannedACL.PublicRead
            });
            var listResponse = Client.ListParts(bucketName, initResponse.Key, initResponse.UploadId);

            Assert.AreEqual(abortRuleId, initResponse.AbortRuleId);
            Assert.AreEqual(abortRuleId, listResponse.AbortRuleId);
            Assert.AreEqual(initResponse.AbortDate, listResponse.AbortDate);
            Assert.IsTrue(expectedMinAbortDate < initResponse.AbortDate);
        }
コード例 #23
0
ファイル: _04_Lifecycle.cs プロジェクト: xphyr/ecs-samples
        public static void Main(string[] args)
        {
            // create the AWS S3 client
            AmazonS3Client s3 = AWSS3Factory.getS3Client();

            String bucketName = String.Join("-", AWSS3Factory.S3_BUCKET, DateTime.Now.ToString("yyyyMMddHHmmss"));

            //************************//
            // 1. Create a bucket     //
            //************************//

            Console.Write(string.Format(" [*] Creating bucket '{0}'... ", bucketName));

            PutBucketResponse pbRes = s3.PutBucket(bucketName);

            if (pbRes.HttpStatusCode != System.Net.HttpStatusCode.OK)
            {
                Console.WriteLine("fail");
                Console.ReadLine();
                System.Environment.Exit(1);
            }
            Console.WriteLine("done");

            //*************************************//
            // 2. Configure bucket lifecycle rules //
            //*************************************//

            Console.Write(string.Format(" [*] Updating lifecycle configuration for bucket '{0}'... ", bucketName));

            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
                        },
                        Status = LifecycleRuleStatus.Enabled
                    },
                             // Rule to delete keys in subdirectory "Logs" after 2 days
                                        new LifecycleRule
                    {
                        Prefix     = "Logs/",
                        Expiration = new LifecycleRuleExpiration {
                            Days = 2
                        },
                        Id     = "log-file-removal",
                        Status = LifecycleRuleStatus.Enabled
                    }
                }
            };


            PutLifecycleConfigurationRequest plcReq = new PutLifecycleConfigurationRequest
            {
                BucketName    = bucketName,
                Configuration = newConfiguration
            };
            PutLifecycleConfigurationResponse plcRes = s3.PutLifecycleConfiguration(plcReq);

            if (plcRes.HttpStatusCode != System.Net.HttpStatusCode.OK)
            {
                Console.WriteLine("fail");
                Console.ReadLine();
                System.Environment.Exit(1);
            }
            Console.WriteLine("done");

            //************************************************//
            // 3. Retrieve the bucket lifecycle configuration //
            //************************************************//

            Console.Write(string.Format(" [*] Retrieving current lifecycle configuration for bucket '{0}'... ", bucketName));

            GetLifecycleConfigurationResponse glcRes = s3.GetLifecycleConfiguration(bucketName);

            if (glcRes.HttpStatusCode != System.Net.HttpStatusCode.OK)
            {
                Console.WriteLine("fail");
                Console.ReadLine();
                System.Environment.Exit(1);
            }
            Console.WriteLine("done");

            Console.WriteLine(String.Format(" [x] Configuration contains {0} rules", glcRes.Configuration.Rules.Count));
            foreach (LifecycleRule rule in glcRes.Configuration.Rules)
            {
                Console.WriteLine(" [x]     Rule:");
                Console.WriteLine(" [x]         Prefix = " + rule.Prefix);
                Console.WriteLine(" [x]         Expiration (days) = " + rule.Expiration.Days);
                Console.WriteLine(" [x]         Id = " + rule.Id);
                Console.WriteLine(" [x]         Status = " + rule.Status);
            }

            //**********************************************//
            // 4. Delete the bucket lifecycle configuration //
            //**********************************************//

            Console.Write(String.Format(" [*] Deleting current lifecycle configuration for bucket '{0}'... ", bucketName));

            DeleteLifecycleConfigurationResponse dlcRes = s3.DeleteLifecycleConfiguration(bucketName);

            if (dlcRes.HttpStatusCode != System.Net.HttpStatusCode.NoContent)
            {
                Console.WriteLine("fail");
                Console.ReadLine();
                System.Environment.Exit(1);
            }
            Console.WriteLine("done");


            Console.Write(String.Format(" [*] Verifying current lifecycle rules for bucket '{0}' are empty... ", bucketName));

            LifecycleConfiguration configuration = s3.GetLifecycleConfiguration(bucketName).Configuration;

            if (configuration.Rules.Count != 0)
            {
                Console.WriteLine("fail");
                Console.ReadLine();
                System.Environment.Exit(1);
            }
            Console.WriteLine("done");

            //************************//
            // 5. Delete the bucket   //
            //************************//

            Console.Write(String.Format(" [*] Deleting bucket '{0}'... ", bucketName));

            DeleteBucketResponse dbRes = s3.DeleteBucket(bucketName);

            if (dbRes.HttpStatusCode != System.Net.HttpStatusCode.NoContent)
            {
                Console.WriteLine("fail");
                Console.ReadLine();
                System.Environment.Exit(1);
            }
            Console.WriteLine("done");

            Console.WriteLine(" [*] Example is completed. Press any key to exit...");
            Console.ReadLine();
        }
コード例 #24
0
 public void PutLifecycleConfigurationAsync(string bucketName, LifecycleConfiguration configuration, AmazonServiceCallback <PutLifecycleConfigurationRequest, PutLifecycleConfigurationResponse> callback, AsyncOptions options = null)
 {
     throw new System.NotImplementedException();
 }
コード例 #25
0
        /// <summary>
        /// This method creates, adds, and then removes lifecycle information
        /// to the S3 bucket named in the bucketName parameter.
        /// </summary>
        /// <param name="client">An S3 client object used to call methods
        /// to add, check, and update configuration settings for the supplied
        /// S3 bucket.</param>
        /// <param name="bucketName">A string representing the name of the
        /// bucket to add configuration settings.</param>
        public static async Task AddUpdateDeleteLifecycleConfigAsync(IAmazonS3 client, string bucketName)
        {
            try
            {
                var lifeCycleConfiguration = new LifecycleConfiguration()
                {
                    Rules = new List <LifecycleRule>
                    {
                        new LifecycleRule
                        {
                            Id     = "Archive immediately rule",
                            Filter = new LifecycleFilter()
                            {
                                LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                {
                                    Prefix = "glacierobjects/",
                                },
                            },
                            Status      = LifecycleRuleStatus.Enabled,
                            Transitions = new List <LifecycleTransition>
                            {
                                new LifecycleTransition
                                {
                                    Days         = 0,
                                    StorageClass = S3StorageClass.Glacier,
                                },
                            },
                        },
                        new LifecycleRule
                        {
                            Id     = "Archive and then delete rule",
                            Filter = new LifecycleFilter()
                            {
                                LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                                {
                                    Prefix = "projectdocs/",
                                },
                            },
                            Status      = LifecycleRuleStatus.Enabled,
                            Transitions = new List <LifecycleTransition>
                            {
                                new LifecycleTransition
                                {
                                    Days         = 30,
                                    StorageClass = S3StorageClass.StandardInfrequentAccess,
                                },
                                new LifecycleTransition
                                {
                                    Days         = 365,
                                    StorageClass = S3StorageClass.Glacier,
                                },
                            },
                            Expiration = new LifecycleRuleExpiration()
                            {
                                Days = 3650,
                            },
                        },
                    },
                };

                // Add the configuration to the bucket.
                await AddExampleLifecycleConfigAsync(client, bucketName, lifeCycleConfiguration);

                // Retrieve the existing configuration to show that the configuration
                // was added.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client, bucketName);

                // Add another rule to the existing lifecycle rule.
                lifeCycleConfiguration.Rules.Add(new LifecycleRule
                {
                    Id     = "NewRule",
                    Filter = new LifecycleFilter()
                    {
                        LifecycleFilterPredicate = new LifecyclePrefixPredicate()
                        {
                            Prefix = "YearlyDocuments/",
                        },
                    },
                    Expiration = new LifecycleRuleExpiration()
                    {
                        Days = 3650,
                    },
                });

                // Add the lifecycle configuration to the S3 bucket.
                await AddExampleLifecycleConfigAsync(client, bucketName, lifeCycleConfiguration);

                // Verify that the the bucket now has three rules in its lifecycle configuration.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client, bucketName);

                Console.WriteLine($"Expected # of rulest: 3; # of rules found: {lifeCycleConfiguration.Rules.Count}");

                // Now delete the configuration from the S3 bucket.
                await RemoveLifecycleConfigAsync(client, bucketName);

                // Show that the lifecycle configuration is no longer associated with
                // the S3 bucket.
                lifeCycleConfiguration = await RetrieveLifecycleConfigAsync(client, bucketName);
            }
            catch (AmazonS3Exception ex)
            {
                Console.WriteLine($"Error encountered ***. Message:'{ex.Message}' when writing an object.");
            }
        }
コード例 #26
0
 public Task <PutLifecycleConfigurationResponse> PutLifecycleConfigurationAsync(string bucketName, LifecycleConfiguration configuration, CancellationToken cancellationToken = default)
 {
     throw new NotImplementedException();
 }
コード例 #27
0
ファイル: LifecycleTests.cs プロジェクト: rafd123/aws-sdk-net
        public void LifecycleTest1()
        {
            var s3Configuration = Client.GetLifecycleConfiguration(bucketName).Configuration;

            Assert.IsNotNull(s3Configuration);
            Assert.IsNotNull(s3Configuration.Rules);
            Assert.AreEqual(0, s3Configuration.Rules.Count);

            var configuration = new LifecycleConfiguration
            {
                Rules = new List <LifecycleRule>
                {
                    new LifecycleRule
                    {
                        Prefix     = "rule1-",
                        Expiration = new LifecycleRuleExpiration
                        {
                            Days = 2
                        },
#pragma warning disable 618
                        Transition = new LifecycleTransition
                        {
                            Days         = 1,
                            StorageClass = S3StorageClass.Glacier
                        },
                        NoncurrentVersionTransition = new LifecycleRuleNoncurrentVersionTransition
                        {
                            NoncurrentDays = 14,
                            StorageClass   = S3StorageClass.Glacier
                        }
#pragma warning restore 618
                    },
                    new LifecycleRule
                    {
                        Prefix     = "rule2-",
                        Expiration = new LifecycleRuleExpiration
                        {
                            Days = 120
                        },
                        Transitions = new List <LifecycleTransition>
                        {
                            new LifecycleTransition
                            {
                                Days         = 30,
                                StorageClass = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleTransition
                            {
                                Days         = 90,
                                StorageClass = S3StorageClass.Glacier
                            }
                        },
                        NoncurrentVersionTransitions = new List <LifecycleRuleNoncurrentVersionTransition>
                        {
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 30,
                                StorageClass   = S3StorageClass.StandardInfrequentAccess
                            },
                            new LifecycleRuleNoncurrentVersionTransition
                            {
                                NoncurrentDays = 90,
                                StorageClass   = S3StorageClass.Glacier
                            }
                        }
                    },
                }
            };

            Client.PutLifecycleConfiguration(new PutLifecycleConfigurationRequest
            {
                BucketName    = bucketName,
                Configuration = configuration
            });
            s3Configuration = Client.GetLifecycleConfiguration(bucketName).Configuration;

            Assert.IsNotNull(s3Configuration);
            Assert.IsNotNull(s3Configuration.Rules);
            Assert.AreEqual(configuration.Rules.Count, s3Configuration.Rules.Count);
            for (int i = 0; i < configuration.Rules.Count; i++)
            {
                var rule = configuration.Rules[i];
                Assert.IsNotNull(rule);
                var s3Rule = s3Configuration.Rules[i];
                Assert.IsNotNull(s3Rule);

                Assert.AreEqual(rule.Transitions.Count, s3Rule.Transitions.Count);
                Assert.AreEqual(rule.NoncurrentVersionTransitions.Count, s3Rule.NoncurrentVersionTransitions.Count);
#pragma warning disable 618
                Assert.AreEqual(rule.Transition.Days, s3Rule.Transition.Days);
                Assert.AreEqual(rule.NoncurrentVersionTransition.NoncurrentDays, s3Rule.NoncurrentVersionTransition.NoncurrentDays);
#pragma warning restore 618
            }
        }