我正在使用Perl脚本删除Amazon S3中超过特定时期的对象/文件。但问题是Perl模块 Amazon :: S3 仅显示1000个对象。现在我的帐户中有超过18000个对象在亚马逊,我从未超过前1000个。有没有办法列出所有18000个对象?
用于列出1000个对象的代码是:
my $bucket = $s3->bucket("<bucket_name>");
$response = $bucket->list or die $s3->err . ": " . $s3->errstr;
print $response->{bucket}."\n";
# This for loop lists only 1000 objects:
for my $key (@{ $response->{keys} })
{
#print "\t".$key->{key}."\n";
#delete key from bucket
$bucket->delete_key($key->{key});
}
答案 0 :(得分:4)
你可以尝试,
my $response = $bucket->list_all;
<强> list_all 强>
列出此存储桶中的所有密钥,而不必担心“标记”。这可能会引发S3的多个请求。 有关此方法的文档,请参阅Amazon :: S3中的“list_bucket_all”。
答案 1 :(得分:0)
Amazon S3 默认响应前 1000 个文件。 取最后一个文件名并将其作为标记传递以显示接下来的 1000 个文件。
$s3->list_bucket({bucket=>"bucketname", marker=>"directory/last_file"});