Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 AmazonS3对象过期_Amazon S3 - Fatal编程技术网

Amazon s3 AmazonS3对象过期

Amazon s3 AmazonS3对象过期,amazon-s3,Amazon S3,我读了很多关于如何使AmazonS3对象过期(删除)的文章,并试图设置生命周期规则来实现这一点,但是这些对象并没有被删除,我想知道我做错了什么 S3上的对象组织如下: Amazon S3 > my-test-bucket > my-test-org > a.csv, b.xml, c.xsl... 如果

我读了很多关于如何使AmazonS3对象过期(删除)的文章,并试图设置生命周期规则来实现这一点,但是这些对象并没有被删除,我想知道我做错了什么

S3上的对象组织如下:

Amazon S3 > my-test-bucket > my-test-org > a.csv, 
                                           b.xml, 
                                           c.xsl...
如果这些文件已经有365天了,我需要删除测试桶中的所有文件。那里有很多超过2年的文件,所以根据这个规则,这些文件应该被删除

在生命周期规则中,我指定添加筛选器来限制我的测试桶的范围,在“过期”部分,我选择了“当前版本”和“以前的版本”

  • 对象创建365天后过期对象的当前版本
  • 在成为以前的版本365天后永久删除以前的版本
  • 该规则适用于前缀“我的测试桶”
我的测试桶未启用版本控制

在所有这些都完成之后,我一直在等待,但什么也没发生。那些旧文件还在那里。我的问题是:

  • 自动过期何时发生?每天午夜还是什么时候
  • 是否有一个按钮,我可以按下,使其立即过期
  • 在我的例子中,我在我的测试组织下有文件,而不是在我的测试桶下,这个规则仍然有效吗?我是否必须在规则中应用通配符以确保它检查所有组织文件夹中的所有文件 谢谢

    “该规则适用于前缀‘我的测试桶’”

    这是你的错误。前缀指的是对象键前缀。这不包括bucket名称

    您需要的前缀是
    my test org/
    。尾随斜杠很重要,因为没有它,您的规则还将匹配其他键前缀,如
    my test organization
    my test organization
    ,这可能导致意外匹配

    请记住,S3中并没有真正的文件夹。对象键是字符串,由
    /
    分隔以表示文件夹层次结构,但文件夹实际上不是容器。文件夹“bar”中出现的文件“foo.txt”实际上有一个对象键“bar/foo.txt”

    伪代码中的前缀匹配为

    if(left(object_key, len(prefix)) == prefix) { # rule matches
    
    将规则更改为使用此前缀,如果超过365天,则将删除每个密钥以
    my test org/
    开头的对象。当然,这包括所有子目录

    规则测试似乎在UTC午夜左右开始,而实际的清除则在午夜之后开始