首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用S3向S3桶添加多个boto3生命周期规则

使用S3向S3桶添加多个boto3生命周期规则
EN

Stack Overflow用户
提问于 2022-01-16 23:26:00
回答 1查看 872关注 0票数 1

我希望使用lambda和boto3将多个生命周期规则添加到一个boto3桶中。然而,使用boto3,它似乎只允许您添加一个生命周期规则,这也覆盖了已经存在的规则。

例如,执行以下操作简单地覆盖了我已有的以及新编写的规则,并且只将最后一个规则保留在列表中:

代码语言:javascript
复制
bucket_name = "test-bucket"
folder_paths = ["test_folder","test_folder1", "test_folder2"]
expiration = 1

for folder_path in folder_paths:
    client = boto3.client('s3')
    response = client.put_bucket_lifecycle_configuration(
        Bucket=bucket_name,
        LifecycleConfiguration={
            'Rules': [
                {
                    'Expiration': {
                        'Days': expiration
                    },
                    'ID': folder_path,
                    'Filter': {
                        'Prefix': folder_path
                    },
                    'Status': 'Enabled'
                }
            ]
        }
    )

当然,使用AWS控制台,可以在一个桶上添加多个独立的S3生命周期配置。

类似于put_bucket_lifecycle_configuration,我也尝试了put_bucket_lifecycle,这给了我同样的结果。

有任何方法可以使用boto3在桶上添加多个S3生命周期配置吗?我漏掉了什么明显的东西吗?

任何帮助都是感激和感谢的,提前!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-17 00:31:49

当然,使用

控制台,可以在一个桶中添加多个单独的S3生命周期配置。

每个桶都有一个生命周期配置,可以有多达1000个规则。您的控制台可能会显示类似的内容:

这些不是不同的生命周期配置,它们是同一生命周期配置的不同规则的一部分。

put_bucket_lifecycle_configuration的输入中,我们可以看到我们可以传递一个规则列表,其中可以包含更多的规则(最多1000条)。

代码语言:javascript
复制
for folder_path in folder_paths:
    client = boto3.client('s3')
    response = client.put_bucket_lifecycle_configuration(
        Bucket=bucket_name,
        LifecycleConfiguration={
            'Rules': [
                {
                    'Expiration': {
                        'Days': expiration
                    },
                    'ID': id_rule_1,
                    'Filter': {
                        'Prefix': folder_path
                    },
                    'Status': 'Enabled'
                },
                {
                    'Expiration': {
                        'Days': expiration2
                    },
                    'ID': id_rule_2,
                    'Filter': {
                        'Prefix': folder_path2
                    },
                    'Status': 'Enabled'
                },
             ...
            ]
        }
    )

正如文档所述,put_bucket_lifecycle_configuration“为桶创建了新的生命周期配置,或者替换了现有的生命周期配置。”如果要更新生命周期配置,则必须使用get_bucket_lifecycle_configuration检索现有规则,修改它们,然后使用put_bucket_lifecycle_configuration覆盖现有配置。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70735043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档