多个生命周期 s3cmd

Multiple lifecycles s3cmd

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

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

当我使用时它工作正常:

s3cmd expire ...

但是,不知何故,每次我 运行 我的最后一个生命周期都会被覆盖。

github 上有问题:

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

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

你让我注意到我遇到了和你完全一样的问题。使用 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 命令时看到了几个规则,尽管我还不知道对象是否真的过期)。