使用perl列出Amazon S3中的所有对象

时间:2014-04-30 06:25:32

标签: perl amazon-s3

我正在使用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});
 }

2 个答案:

答案 0 :(得分:4)

你可以尝试,

my $response = $bucket->list_all;

来自perldoc Amazon::S3::Bucket

  

<强> list_all

     

列出此存储桶中的所有密钥,而不必担心“标记”。这可能会引发S3的多个请求。   有关此方法的文档,请参阅Amazon :: S3中的“list_bucket_all”。

答案 1 :(得分:0)

Amazon S3 默认响应前 1000 个文件。 取最后一个文件名并将其作为标记传递以显示接下来的 1000 个文件。

$s3->list_bucket({bucket=>"bucketname", marker=>"directory/last_file"});