当前位置:  开发笔记 > 编程语言 > 正文

删除Amazon S3存储桶?

如何解决《删除AmazonS3存储桶?》经验,为你挑选了6个好方法。

我一直在通过S3Fox与Amazon S3进行交互,我似乎无法删除我的存储桶.我选择一个桶,点击删除,在弹出窗口中确认删除,然后......没有任何反应.我应该使用另一种工具吗?



1> chris14679..:

最终可以使用新的生命周期(到期)规则功能一次性删除所有文件.您甚至可以从AWS控制台执行此操作.

只需右键单击AWS控制台中的存储桶名称,选择"属性",然后在页面底部的选项卡行中选择"生命周期"和"添加规则".创建生命周期规则,将"前缀"字段设置为空白(空白表示存储桶中的所有文件,或者您可以将其设置为"a"以删除名称以"a"开头的所有文件).将"天"字段设置为"1".而已.完成.假设文件超过一天,它们都应该被删除,然后您可以删除存储桶.

我只是第一次尝试这个,所以我还在等待文件被删除的速度有多快(它不是即时的,但可能是在24小时内发生)以及我是否需要支付一个删除命令或50万删除命令......手指交叉!


为了跟进这一点,它工作得很好,所有文件都在24小时内被删除,据我所知,我们甚至没有收到任何删除请求的费用.这是问题的最终解决方案!
真棒!非常感谢.一票多了!一个小小的变化.当您进入规则窗口时,它们会有一个复选框,可以将规则明确应用于整个存储桶.它现在不会让Prefix字段留空.

2> 小智..:

记住S3 Buckets在被删除之前需要为空.好消息是大多数第三方工具都会自动执行此过程.如果您遇到S3Fox问题,我建议您尝试使用S3FM for GUI或S3Sync作为命令行.亚马逊有一篇很棒的文章描述了如何使用S3Sync.设置变量后,键命令为

./s3cmd.rb deleteall 

删除包含大量单个文件的存储桶往往会导致很多S3工具崩溃,因为它们会尝试显示目录​​中所有文件的列表.您需要找到批量删除的方法.我为此找到的最好的GUI工具是Bucket Explorer.它以1000个文件块的形式删除S3存储桶中的文件,并且在尝试打开s3Fox和S3FM等大型存储桶时不会崩溃.

我还发现了一些可用于此目的的脚本.我还没有尝试过这些脚本,但它们看起来非常简单.

红宝石

require 'aws/s3'

AWS::S3::Base.establish_connection!(
:access_key_id => 'your access key',
:secret_access_key => 'your secret key'
)

bucket = AWS::S3::Bucket.find('the bucket name')

while(!bucket.empty?)
begin
puts "Deleting objects in bucket"

bucket.objects.each do |object|
object.delete
puts "There are #{bucket.objects.size} objects left in the bucket"
end

puts "Done deleting objects"

rescue SocketError
puts "Had socket error"
end

end

PERL

#!/usr/bin/perl
use Net::Amazon::S3;
my $aws_access_key_id = 'your access key';
my $aws_secret_access_key = 'your secret access key';
my $increment = 50; # 50 at a time
my $bucket_name = 'bucket_name';

my $s3 = Net::Amazon::S3->new({aws_access_key_id => $aws_access_key_id, aws_secret_access_key => $aws_secret_access_key, retry => 1, });
my $bucket = $s3->bucket($bucket_name);

print "Incrementally deleting the contents of $bucket_name\n";

my $deleted = 1;
my $total_deleted = 0;
while ($deleted > 0) {
print "Loading up to $increment keys...\n";
$response = $bucket->list({'max-keys' => $increment, }) or die $s3->err . ": " . $s3->errstr . "\n";
$deleted = scalar(@{ $response->{keys} }) ;
$total_deleted += $deleted;
print "Deleting $deleted keys($total_deleted total)...\n";
foreach my $key ( @{ $response->{keys} } ) {
my $key_name = $key->{key};
$bucket->delete_key($key->{key}) or die $s3->err . ": " . $s3->errstr . "\n";
}
}
print "Deleting bucket...\n";
$bucket->delete_bucket or die $s3->err . ": " . $s3->errstr;
print "Done.\n";

消息来源:Tarkblog

希望这可以帮助!



3> robbyt..:

最近版本的s3cmd有--recursive

例如,

~/$ s3cmd rb --recursive s3://bucketwithfiles

http://s3tools.org/kb/item5.htm



4> 小智..:

使用s3cmd:创建一个新的空目录s3cmd sync --delete-removed empty_directory s3:// yourbucket



5> James Murty..:

这可能是S3Fox中的一个错误,因为它通常能够递归地删除项目.但是,我不确定我是否曾尝试立即删除整个存储桶及其内容.

Stu提到的JetS3t项目包括一个Java GUI小程序,您可以在浏览器中轻松运行以管理您的S3存储桶:Cockpit.与S3Fox相比,它有优点和缺点,但很有可能它可以帮助您处理麻烦的存储桶.虽然它会要求您先删除对象,然后删除存储桶.

免责声明:我是JetS3t和Cockpit的作者



6> 小智..:

SpaceBlock还可以简单地删除s3存储桶 - 右键单击​​存储桶,删除,等待作业在传输视图中完成,完成.

这是我维护的免费开源windows s3前端,所以无耻的插件警报等.

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有