ファイル削除時の「完全に削除」入力が面倒
S3バケット内のファイルを削除する時、みなさんどうしていますか?
普通は、AWSマネジメントコンソールのS3の画面を使うと思います。
が、しかし、ここで画面上で削除すると、削除確認を求められます。
間違えて消してしまう危険があるので、確認があったほうがいいんでないかい?
はい。確認はあってもいいのですが、問題はその確認の仕方です。
マウスは「はい」「いいえ」をクリックするぐらいなら全然良いのですが、まさかの文字列入力です。
この通り、削除を実行するたびにこの「完全に削除」という文字を打ち込まないと削除処理が実行できないのです。最初みた時は、マジか、、と思いました。
これはクリックジャッキング対策なのでしょうか?
そうだとしても、システム本番環境とかならまだわかります。しかしながら開発環境のような頻繁にバケット内のファイルを削除するようなところで毎回これをやるのはしんどいですので、省略したいところ。
ちなみに、私の場合、
- 最初の10回くらいは頑張って手入力
- 次の20回くらいはメモ帳に入力した「完全に削除」を毎回コピペ
- メモ帳を間違えて保存しないで終了してしまい、キレそうになる
その結果、「AWS CLI」のコマンドを使って消しちゃおう! となったわけです。
AWS CLIが必要ですので、インストールと設定が済んでいない方はこちらご覧ください。
aws s3 rmコマンド
このコマンドを使うと、指定したバケットの中身を確認なしで削除することができます。
また、サブフォルダ配下も再帰的に消してくれますので、かなり便利です。
構文
構文
バケットの中身すべて削除
aws s3 rm s3://バケット名 --recursive
バケットの中の指定したフォルダ配下をすべて削除
aws s3 rm s3://バケット名/フォルダ名 --recursive
以下、実際に動かしてみたものですが、これは便利です!
バケット内の指定したフォルダ配下すべて削除
ちょうど散らかったバケットがあったので、aws ls で中身を確認してみました。
dir2フォルダの中には、JPGファイルが3つ、サブフォルダ dir2.1があり、その中にJPGファイルがさらに2つあります。
ここで実験してみましょう。
Microsoft Windows [Version 10.0.19042.1110]
(c) Microsoft Corporation. All rights reserved.
c:\> aws s3 ls s3://battan-image-box/input/dir2 --recursive
2021-08-03 22:53:49 0 input/dir2/
2021-08-03 22:54:11 1883734 input/dir2/DSC_0161.JPG
2021-08-03 22:54:25 2104101 input/dir2/DSC_0162.JPG
2021-08-03 22:54:25 1869588 input/dir2/DSC_0166.JPG
2021-08-03 22:54:43 0 input/dir2/dir2.1/
2021-08-03 22:55:01 2123156 input/dir2/dir2.1/DSC_0188.JPG
2021-08-03 22:55:01 1967211 input/dir2/dir2.1/DSC_0190.JPG
dir2フォルダ配下をまるっと消してみます。ls を rm に変えればそのまま実行できます。
c:\ aws s3 rm s3://battan-image-box/input/dir2 --recursive
delete: s3://battan-image-box/input/dir2/dir2.1/DSC_0188.JPG
delete: s3://battan-image-box/input/dir2/
delete: s3://battan-image-box/input/dir2/DSC_0166.JPG
delete: s3://battan-image-box/input/dir2/DSC_0161.JPG
delete: s3://battan-image-box/input/dir2/dir2.1/
delete: s3://battan-image-box/input/dir2/dir2.1/DSC_0190.JPG
delete: s3://battan-image-box/input/dir2/DSC_0162.JPG
削除確認無しでちゃんと消えましたね。
バケットの中身すべて削除
次はバケットの中身をすべて削除してみましょう。この場合はバケット名だけ指定すればOKです。
c:\ aws s3 rm s3://battan-image-box --recursive
確認なしですべて消えましたね。
こうして、私は「完全に削除」地獄から解放されたのでありました。
コメント