How to use put_bucket_lifecycle_configuration method in localstack

Best Python code snippet using localstack_python

test_s3_lifecycle.py

Source:test_s3_lifecycle.py Github

copy

Full Screen

...38 "Status": "Enabled",39 }40 ]41 }42 client.put_bucket_lifecycle_configuration(43 Bucket="bucket", LifecycleConfiguration=lfc44 )45 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")46 assert len(result["Rules"]) == 147 assert result["Rules"][0]["Filter"]["Prefix"] == ""48 assert not result["Rules"][0]["Filter"].get("And")49 assert not result["Rules"][0]["Filter"].get("Tag")50 with pytest.raises(KeyError):51 assert result["Rules"][0]["Prefix"]52 # Without any prefixes and an empty filter (this is by default a prefix for the whole bucket):53 lfc = {54 "Rules": [55 {56 "Expiration": {"Days": 7},57 "ID": "wholebucket",58 "Filter": {},59 "Status": "Enabled",60 }61 ]62 }63 client.put_bucket_lifecycle_configuration(64 Bucket="bucket", LifecycleConfiguration=lfc65 )66 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")67 assert len(result["Rules"]) == 168 with pytest.raises(KeyError):69 assert result["Rules"][0]["Prefix"]70 # If we remove the filter -- and don't specify a Prefix, then this is bad:71 lfc["Rules"][0].pop("Filter")72 with pytest.raises(ClientError) as err:73 client.put_bucket_lifecycle_configuration(74 Bucket="bucket", LifecycleConfiguration=lfc75 )76 assert err.value.response["Error"]["Code"] == "MalformedXML"77 # With a tag:78 lfc["Rules"][0]["Filter"] = {"Tag": {"Key": "mytag", "Value": "mytagvalue"}}79 client.put_bucket_lifecycle_configuration(80 Bucket="bucket", LifecycleConfiguration=lfc81 )82 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")83 assert len(result["Rules"]) == 184 with pytest.raises(KeyError):85 assert result["Rules"][0]["Filter"]["Prefix"]86 assert not result["Rules"][0]["Filter"].get("And")87 assert result["Rules"][0]["Filter"]["Tag"]["Key"] == "mytag"88 assert result["Rules"][0]["Filter"]["Tag"]["Value"] == "mytagvalue"89 with pytest.raises(KeyError):90 assert result["Rules"][0]["Prefix"]91 # With And (single tag):92 lfc["Rules"][0]["Filter"] = {93 "And": {94 "Prefix": "some/prefix",95 "Tags": [{"Key": "mytag", "Value": "mytagvalue"}],96 }97 }98 client.put_bucket_lifecycle_configuration(99 Bucket="bucket", LifecycleConfiguration=lfc100 )101 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")102 assert len(result["Rules"]) == 1103 assert not result["Rules"][0]["Filter"].get("Prefix")104 assert result["Rules"][0]["Filter"]["And"]["Prefix"] == "some/prefix"105 assert len(result["Rules"][0]["Filter"]["And"]["Tags"]) == 1106 assert result["Rules"][0]["Filter"]["And"]["Tags"][0]["Key"] == "mytag"107 assert result["Rules"][0]["Filter"]["And"]["Tags"][0]["Value"] == "mytagvalue"108 with pytest.raises(KeyError):109 assert result["Rules"][0]["Prefix"]110 # With multiple And tags:111 lfc["Rules"][0]["Filter"]["And"] = {112 "Prefix": "some/prefix",113 "Tags": [114 {"Key": "mytag", "Value": "mytagvalue"},115 {"Key": "mytag2", "Value": "mytagvalue2"},116 ],117 }118 client.put_bucket_lifecycle_configuration(119 Bucket="bucket", LifecycleConfiguration=lfc120 )121 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")122 assert len(result["Rules"]) == 1123 assert not result["Rules"][0]["Filter"].get("Prefix")124 assert result["Rules"][0]["Filter"]["And"]["Prefix"] == "some/prefix"125 assert len(result["Rules"][0]["Filter"]["And"]["Tags"]) == 2126 assert result["Rules"][0]["Filter"]["And"]["Tags"][0]["Key"] == "mytag"127 assert result["Rules"][0]["Filter"]["And"]["Tags"][0]["Value"] == "mytagvalue"128 assert result["Rules"][0]["Filter"]["And"]["Tags"][1]["Key"] == "mytag2"129 assert result["Rules"][0]["Filter"]["And"]["Tags"][1]["Value"] == "mytagvalue2"130 with pytest.raises(KeyError):131 assert result["Rules"][0]["Prefix"]132 # And filter without Prefix but multiple Tags:133 lfc["Rules"][0]["Filter"]["And"] = {134 "Tags": [135 {"Key": "mytag", "Value": "mytagvalue"},136 {"Key": "mytag2", "Value": "mytagvalue2"},137 ]138 }139 client.put_bucket_lifecycle_configuration(140 Bucket="bucket", LifecycleConfiguration=lfc141 )142 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")143 assert len(result["Rules"]) == 1144 with pytest.raises(KeyError):145 assert result["Rules"][0]["Filter"]["And"]["Prefix"]146 assert len(result["Rules"][0]["Filter"]["And"]["Tags"]) == 2147 assert result["Rules"][0]["Filter"]["And"]["Tags"][0]["Key"] == "mytag"148 assert result["Rules"][0]["Filter"]["And"]["Tags"][0]["Value"] == "mytagvalue"149 assert result["Rules"][0]["Filter"]["And"]["Tags"][1]["Key"] == "mytag2"150 assert result["Rules"][0]["Filter"]["And"]["Tags"][1]["Value"] == "mytagvalue2"151 with pytest.raises(KeyError):152 assert result["Rules"][0]["Prefix"]153 # Can't have both filter and prefix:154 lfc["Rules"][0]["Prefix"] = ""155 with pytest.raises(ClientError) as err:156 client.put_bucket_lifecycle_configuration(157 Bucket="bucket", LifecycleConfiguration=lfc158 )159 assert err.value.response["Error"]["Code"] == "MalformedXML"160 lfc["Rules"][0]["Prefix"] = "some/path"161 with pytest.raises(ClientError) as err:162 client.put_bucket_lifecycle_configuration(163 Bucket="bucket", LifecycleConfiguration=lfc164 )165 assert err.value.response["Error"]["Code"] == "MalformedXML"166 # No filters -- just a prefix:167 del lfc["Rules"][0]["Filter"]168 client.put_bucket_lifecycle_configuration(169 Bucket="bucket", LifecycleConfiguration=lfc170 )171 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")172 assert not result["Rules"][0].get("Filter")173 assert result["Rules"][0]["Prefix"] == "some/path"174 # Can't have Tag, Prefix, and And in a filter:175 del lfc["Rules"][0]["Prefix"]176 lfc["Rules"][0]["Filter"] = {177 "Prefix": "some/prefix",178 "Tag": {"Key": "mytag", "Value": "mytagvalue"},179 }180 with pytest.raises(ClientError) as err:181 client.put_bucket_lifecycle_configuration(182 Bucket="bucket", LifecycleConfiguration=lfc183 )184 assert err.value.response["Error"]["Code"] == "MalformedXML"185 lfc["Rules"][0]["Filter"] = {186 "Tag": {"Key": "mytag", "Value": "mytagvalue"},187 "And": {188 "Prefix": "some/prefix",189 "Tags": [190 {"Key": "mytag", "Value": "mytagvalue"},191 {"Key": "mytag2", "Value": "mytagvalue2"},192 ],193 },194 }195 with pytest.raises(ClientError) as err:196 client.put_bucket_lifecycle_configuration(197 Bucket="bucket", LifecycleConfiguration=lfc198 )199 assert err.value.response["Error"]["Code"] == "MalformedXML"200 # Make sure multiple rules work:201 lfc = {202 "Rules": [203 {204 "Expiration": {"Days": 7},205 "ID": "wholebucket",206 "Filter": {"Prefix": ""},207 "Status": "Enabled",208 },209 {210 "Expiration": {"Days": 10},211 "ID": "Tags",212 "Filter": {"Tag": {"Key": "somekey", "Value": "somevalue"}},213 "Status": "Enabled",214 },215 ]216 }217 client.put_bucket_lifecycle_configuration(218 Bucket="bucket", LifecycleConfiguration=lfc219 )220 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")["Rules"]221 assert len(result) == 2222 assert result[0]["ID"] == "wholebucket"223 assert result[1]["ID"] == "Tags"224@mock_s3225def test_lifecycle_with_eodm():226 client = boto3.client("s3")227 client.create_bucket(228 Bucket="bucket", CreateBucketConfiguration={"LocationConstraint": "us-west-1"}229 )230 lfc = {231 "Rules": [232 {233 "Expiration": {"ExpiredObjectDeleteMarker": True},234 "ID": "wholebucket",235 "Filter": {"Prefix": ""},236 "Status": "Enabled",237 }238 ]239 }240 client.put_bucket_lifecycle_configuration(241 Bucket="bucket", LifecycleConfiguration=lfc242 )243 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")244 assert len(result["Rules"]) == 1245 assert result["Rules"][0]["Expiration"]["ExpiredObjectDeleteMarker"]246 # Set to False:247 lfc["Rules"][0]["Expiration"]["ExpiredObjectDeleteMarker"] = False248 client.put_bucket_lifecycle_configuration(249 Bucket="bucket", LifecycleConfiguration=lfc250 )251 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")252 assert len(result["Rules"]) == 1253 assert not result["Rules"][0]["Expiration"]["ExpiredObjectDeleteMarker"]254 # With failure:255 lfc["Rules"][0]["Expiration"]["Days"] = 7256 with pytest.raises(ClientError) as err:257 client.put_bucket_lifecycle_configuration(258 Bucket="bucket", LifecycleConfiguration=lfc259 )260 assert err.value.response["Error"]["Code"] == "MalformedXML"261 del lfc["Rules"][0]["Expiration"]["Days"]262 lfc["Rules"][0]["Expiration"]["Date"] = datetime(2015, 1, 1)263 with pytest.raises(ClientError) as err:264 client.put_bucket_lifecycle_configuration(265 Bucket="bucket", LifecycleConfiguration=lfc266 )267 assert err.value.response["Error"]["Code"] == "MalformedXML"268@mock_s3269def test_lifecycle_with_nve():270 client = boto3.client("s3")271 client.create_bucket(272 Bucket="bucket", CreateBucketConfiguration={"LocationConstraint": "us-west-1"}273 )274 lfc = {275 "Rules": [276 {277 "NoncurrentVersionExpiration": {"NoncurrentDays": 30},278 "ID": "wholebucket",279 "Filter": {"Prefix": ""},280 "Status": "Enabled",281 }282 ]283 }284 client.put_bucket_lifecycle_configuration(285 Bucket="bucket", LifecycleConfiguration=lfc286 )287 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")288 assert len(result["Rules"]) == 1289 assert result["Rules"][0]["NoncurrentVersionExpiration"]["NoncurrentDays"] == 30290 # Change NoncurrentDays:291 lfc["Rules"][0]["NoncurrentVersionExpiration"]["NoncurrentDays"] = 10292 client.put_bucket_lifecycle_configuration(293 Bucket="bucket", LifecycleConfiguration=lfc294 )295 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")296 assert len(result["Rules"]) == 1297 assert result["Rules"][0]["NoncurrentVersionExpiration"]["NoncurrentDays"] == 10298 # TODO: Add test for failures due to missing children299@mock_s3300def test_lifecycle_with_nvt():301 client = boto3.client("s3")302 client.create_bucket(303 Bucket="bucket", CreateBucketConfiguration={"LocationConstraint": "us-west-1"}304 )305 lfc = {306 "Rules": [307 {308 "NoncurrentVersionTransitions": [309 {"NoncurrentDays": 30, "StorageClass": "ONEZONE_IA"}310 ],311 "ID": "wholebucket",312 "Filter": {"Prefix": ""},313 "Status": "Enabled",314 }315 ]316 }317 client.put_bucket_lifecycle_configuration(318 Bucket="bucket", LifecycleConfiguration=lfc319 )320 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")321 assert len(result["Rules"]) == 1322 assert result["Rules"][0]["NoncurrentVersionTransitions"][0]["NoncurrentDays"] == 30323 assert (324 result["Rules"][0]["NoncurrentVersionTransitions"][0]["StorageClass"]325 == "ONEZONE_IA"326 )327 # Change NoncurrentDays:328 lfc["Rules"][0]["NoncurrentVersionTransitions"][0]["NoncurrentDays"] = 10329 client.put_bucket_lifecycle_configuration(330 Bucket="bucket", LifecycleConfiguration=lfc331 )332 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")333 assert len(result["Rules"]) == 1334 assert result["Rules"][0]["NoncurrentVersionTransitions"][0]["NoncurrentDays"] == 10335 # Change StorageClass:336 lfc["Rules"][0]["NoncurrentVersionTransitions"][0]["StorageClass"] = "GLACIER"337 client.put_bucket_lifecycle_configuration(338 Bucket="bucket", LifecycleConfiguration=lfc339 )340 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")341 assert len(result["Rules"]) == 1342 assert (343 result["Rules"][0]["NoncurrentVersionTransitions"][0]["StorageClass"]344 == "GLACIER"345 )346 # With failures for missing children:347 del lfc["Rules"][0]["NoncurrentVersionTransitions"][0]["NoncurrentDays"]348 with pytest.raises(ClientError) as err:349 client.put_bucket_lifecycle_configuration(350 Bucket="bucket", LifecycleConfiguration=lfc351 )352 assert err.value.response["Error"]["Code"] == "MalformedXML"353 lfc["Rules"][0]["NoncurrentVersionTransitions"][0]["NoncurrentDays"] = 30354 del lfc["Rules"][0]["NoncurrentVersionTransitions"][0]["StorageClass"]355 with pytest.raises(ClientError) as err:356 client.put_bucket_lifecycle_configuration(357 Bucket="bucket", LifecycleConfiguration=lfc358 )359 assert err.value.response["Error"]["Code"] == "MalformedXML"360@mock_s3361def test_lifecycle_with_aimu():362 client = boto3.client("s3")363 client.create_bucket(364 Bucket="bucket", CreateBucketConfiguration={"LocationConstraint": "us-west-1"}365 )366 lfc = {367 "Rules": [368 {369 "AbortIncompleteMultipartUpload": {"DaysAfterInitiation": 7},370 "ID": "wholebucket",371 "Filter": {"Prefix": ""},372 "Status": "Enabled",373 }374 ]375 }376 client.put_bucket_lifecycle_configuration(377 Bucket="bucket", LifecycleConfiguration=lfc378 )379 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")380 assert len(result["Rules"]) == 1381 assert (382 result["Rules"][0]["AbortIncompleteMultipartUpload"]["DaysAfterInitiation"] == 7383 )384 # Change DaysAfterInitiation:385 lfc["Rules"][0]["AbortIncompleteMultipartUpload"]["DaysAfterInitiation"] = 30386 client.put_bucket_lifecycle_configuration(387 Bucket="bucket", LifecycleConfiguration=lfc388 )389 result = client.get_bucket_lifecycle_configuration(Bucket="bucket")390 assert len(result["Rules"]) == 1391 assert (392 result["Rules"][0]["AbortIncompleteMultipartUpload"]["DaysAfterInitiation"]393 == 30394 )395 # TODO: Add test for failures due to missing children396@mock_s3_deprecated397def test_lifecycle_with_glacier_transition():398 conn = boto.s3.connect_to_region("us-west-1")399 bucket = conn.create_bucket("foobar", location="us-west-1")400 lifecycle = Lifecycle()...

Full Screen

Full Screen

put_bucket_lifecyle_configuration.py

Source:put_bucket_lifecyle_configuration.py Github

copy

Full Screen

...35 {'Days': 0,36 'StorageClass': 'GLACIER'}37 ]}38 ]}39def put_bucket_lifecycle_configuration(bucket_name, lifecycle_config):40 """Set the lifecycle configuration of an Amazon S3 bucket41 :param bucket_name: string42 :param lifecycle_config: dict of lifecycle configuration settings43 :return: True if lifecycle configuration was set, otherwise False44 """45 # Set the configuration46 s3 = boto3.client('s3')47 try:48 s3.put_bucket_lifecycle_configuration(Bucket=bucket_name,49 LifecycleConfiguration=lifecycle_config)50 except ClientError as e:51 logging.error(e)52 return False53 return True54def main():55 """Exercise put_bucket_lifecycle_configuration()"""56 # Assign this value before running the program57 test_bucket_name = 'BUCKET_NAME'58 # Set up logging59 logging.basicConfig(level=logging.DEBUG,60 format='%(levelname)s: %(asctime)s: %(message)s')61 # Set the bucket's lifecycle configuration62 success = put_bucket_lifecycle_configuration(test_bucket_name,63 lifecycle_config_settings)64 if success:65 logging.info(f'The lifecycle configuration was set for {test_bucket_name}')66if __name__ == '__main__':...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run localstack automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful