多个生命周期s3cmd

时间:2018-04-02 17:40:27

标签: amazon-web-services amazon-s3 aws-cli s3cmd

我想在我的存储桶中为多个文件夹设置多个生命周期。

如果我使用网络界面,这似乎很容易,但这应该是一个自动化过程,所以,至少在我的情况下,必须使用s3cmd。

使用时效果很好:

s3cmd expire ...

但是,不知怎的,每次我运行这个时,我的上一个生命周期都会被淹没。

github上有一个问题:

https://github.com/s3tools/s3cmd/issues/863

我的问题是:还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

你让我注意到我和你有完全相同的问题。使用s3cmd访问过期规则的另一种方法是显示存储桶的生命周期配置。

s3cmd getlifecycle s3://bucketname

通过这种方式,您可以获得一些xml格式的文本:

<?xml version="1.0" ?>
<LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
        <Rule>
                <ID>RULEIDENTIFIER</ID>
                <Prefix>PREFIX</Prefix>
                <Status>Enabled</Status>
                <Expiration>
                        <Days>NUMBEROFDAYS</Days>
                </Expiration>
        </Rule>
        <Rule>
                <ID>RULEIDENTIFIER2</ID>
                <Prefix>PREFIX2</Prefix>
                <Status>Enabled</Status>
                <Expiration>
                        <Days>NUMBEROFDAYS2</Days>
                </Expiration>
        </Rule>
</LifecycleConfiguration>

如果您将该文本放在一个文件中,更改相应的字段(放置您选择的标识符,设置所需的前缀和到期前的天数),您现在可以使用以下命令(更改路径的FILE)你把规则放在哪里):

s3cmd setlifecycle FILE s3://bucketname

这应该有用(在我的情况下,现在我在执行getlifecycle命令时会看到几个规则,尽管我还不知道对象是否真的过期了。)