56


30

私は S3Foxを通じてAmazon S3とやり取りしていますが、自分のバケットを削除することはできません。 バケツを選択して削除を押し、ポップアップで削除を確認して…​ 何も起こりません。 私が使用すべき他のツールはありますか?

23 回答


143


新しいライフサイクル(有効期限)ルール機能を使用して、一度にすべてのファイルを削除することが最終的に可能です。 AWSコンソールからでもできます。

AWSコンソールでバケット名を右クリックし、[プロパティ]を選択してから、ページ下部のタブの列で[ライフサイクル]と[ルールの追加]を選択します。 「Prefix」フィールドを空白に設定してライフサイクルルールを作成します(空白はバケット内のすべてのファイルを意味します。または、名前を「a」で始まるすべてのファイルを削除するために「a」に設定できます)。 「日数」フィールドを「1」に設定します。 それでおしまい。 完了しました。 ファイルが1日以上経過していると仮定すると、それらはすべて削除されるはずです。その後、バケットを削除できます。

私はこれを初めて試したばかりなので、ファイルがどれだけ早く削除されるか(24時間以内に即座に発生するのではなく、おそらく24時間以内に発生するはずです)、そして1回の削除コマンドか5000万回の削除で課金されるかコマンド…​ 指が交差しました!


30


S3バケットは削除する前に空にする必要があります。 良いニュースは、ほとんどのサードパーティ製ツールがこのプロセスを自動化していることです。 あなたがS3Foxで問題に遭遇しているならば、私はGUIのためにS3FMまたはコマンドラインのためにS3Syncを試みることを勧めます。 Amazonはhttp://developer.amazonwebservices.com/connect/entry.jspa?externalID=931を説明する素晴らしい記事を持っています 変数を設定した後のキーコマンドは

./s3cmd.rb deleteall

多数の個別ファイルを含むバケットを削除すると、ディレクトリ内のすべてのファイルのリストを表示しようとするため、多数のS3ツールがクラッシュする傾向があります。 あなたはバッチで削除する方法を見つける必要があります。 この目的のために私が見つけた最高のGUIツールはBucket Explorerです。 s3FoxやS3FMのような大きなバケツを開こうとしても、1000個のファイルチャンクでS3バケツのファイルを削除してクラッシュしません。

この目的のために使用できるスクリプトもいくつかあります。 私はまだこれらのスクリプトを試していませんが、それらはかなり簡単に見えます。

ルビー

'aws / s3'が必要です

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

bucket = AWS :: S3 :: Bucket.find( 'バケット名')

while(!bucket.empty?)は "バケット内のオブジェクトの削除"を開始します

bucket.objects.each do | object | object.deleteは「バケットには#{bucket.objects.size}個のオブジェクトが残っています」と書いています。end

「オブジェクトを削除しました」と表示されます。

SocketErrorが "Had socket error"を終了させる

終わり
  • PERL *

#!/ usr / bin / perlはNet :: Amazon :: S3を使用します。 my $ aws_access_key_id = 'あなたのアクセスキー'; my $ aws_secret_access_key = 'あなたの秘密のアクセスキー';私の$増分= 50。 #50一度に私の$ 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 "$ bucket_nameの内容をインクリメンタルに削除します\ n";

私の$ deleted = 1;私の$ total_deleted = 0。 while($ deleted> 0){print "$ $までのインクリメントキーを読み込んでいます... \ n"; $ response = $ bucket-> list({'max-keys' => $ increment、})または$ s3-> errで死ぬ。 ":" $ s3  - > errstr。 "\ n"; $ deleted =スカラー(@ {$ response  - > {keys}}); $ total_deleted = $ deleted;印刷 "$ deleted keys($ total_deleted total)を削除しています... \ n";私の$ keyを見越して(@ {$ response  - > {keys}}){my $ key_name = $ key  - > {key}; $ bucket-> delete_key($ key  - > {key})または$ s3-> errで終了する ":" $ s3  - > errstr。 "\ n"; print "bucketを削除しています... \ n"; $ bucket-> delete_bucketまたはdie $ s3-> err ":" $ s3-> errstr; 「完了」を印刷します。\ n ";

ソース:Tarkblog

お役に立てれば!


16


s3cmdの最近のバージョンには—​recursiveがあります

例えば。、

〜/ $ s3cmd rb  - 再帰的s3:// bucketwithfiles


7


s3cmdの場合:新しい空のディレクトリを作成します。s3cmd sync --delete-removed empty_directory s3:// yourbucket


5


一般的に再帰的にアイテムを削除することができるので、これはS3Foxのバグかもしれません。 ただし、バケット全体とその内容を一度に削除しようとしたことがあるかどうかはわかりません。

Stuが述べた JetS3tプロジェクトには、S3バケットを管理するためにブラウザで簡単に実行できるJava GUIアプレットが含まれています。http:// jets3t。 s3.amazonaws.com/applications/cockpit.html[Cockpit]。 S3Foxに比べて長所と短所がありますが、厄介なバケツに対処するのに役立つ可能性があります。 ただし、最初にオブジェクトを削除してからバケットを削除する必要があります。

免責事項:私はJetS3tとCockpitの作者です


5


http://www.codeplex.com/spaceblock[SpaceBlock]はまたs3バケツを削除することを簡単にします - 右クリックバケツ、削除、転送ビューで仕事が完了するのを待つ、完了。

これは私が管理しているフリーでオープンソースのウィンドウズs3フロントエンドなので、恥知らずなプラグアラートなど


4


ruby(およびhttps://rubygems.org/[rubygems])がインストールされている場合は、http://amazon.rubyforge.org/[aws-をインストールしてください。 s3]宝石

gem install aws-s3

or

sudo gem install aws-s3

ファイル `delete_bucket.rb`を作成します。

require "rubygems" # optional
require "aws/s3"
AWS::S3::Base.establish_connection!(
  :access_key_id     => 'access_key_id',
  :secret_access_key => 'secret_access_key')
AWS::S3::Bucket.delete("bucket_name", :force => true)

それを実行します。

ruby delete_bucket.rb

`Bucket#delete`はタイムアウトの例外をたくさん返すので、スクリプトを拡張しました。

require "rubygems" # optional
require "aws/s3"
AWS::S3::Base.establish_connection!(
  :access_key_id     => 'access_key_id',
  :secret_access_key => 'secret_access_key')
while AWS::S3::Bucket.find("bucket_name")
  begin
    AWS::S3::Bucket.delete("bucket_name", :force => true)
  rescue
  end
end


4


私は* bucket-destroy *を実装しました。これは、バケットを削除するために必要なすべてのことを実行するマルチスレッドユーティリティです。 バージョン対応のバケットキーと同様に、空でないバケットも処理します。

あなたはここでブログの投稿を読むことができますhttp://bytecoded.blogspot.com/2011/01/recursive-delete-utility-for-version.htmlそしてここでの説明はhttp://code.google.com/p/bucket-破壊する/

キー名に二重の '//'、バージョン管理されたキー、DeleteMarkerキーを含むバケットを削除することに成功しました。 現在、私はこれまでに約40,000,000を含むバケットでそれを実行していますこれまでのところ私はm1.largeで数時間で1,200,000を削除することができました。 このユーティリティはマルチスレッドですが、(まだ)シャッフリング(水平方向の拡大縮小が行われるため、いくつかのマシンでユーティリティを起動すること)は実装されていません。


4


amazonのコンソールを使用していて、1回限りでバケットを消去する必要がある場合は、バケットを参照して上のキーを選択し、次に下部にスクロールしてからキーボードのshiftキーを押しながら下部のキーをクリックします。 それはその間にすべてを選択します、そしてあなたは右クリックして削除できます。


3


最も簡単な方法は、Amazon S3用の無料のオンラインファイルマネージャーである S3fmを使用することです。 インストールするアプリケーション、サードパーティのWebサイトの登録は不要です。 安全かつ便利な、Amazon S3から直接実行します。

バケツを選択して削除をクリックするだけです。