Best Python code snippet using localstack_python
test_s3_lifecycle.py
Source:test_s3_lifecycle.py  
...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()...put_bucket_lifecyle_configuration.py
Source:put_bucket_lifecyle_configuration.py  
...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__':...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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
