5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

S3バケットをインタラクティブに簡単に削除する

Last updated at Posted at 2021-06-11

はじめに

オブジェクトの入ったS3バケットをAWSCLIを使って、インタラクティブに削除する方法です。

S3の削除コマンドって、、

意外と検討段階だったり、AWSサービス使ってると自動的に作られて、あー、消したいなぁって思うことがあります。ありますよね。
で、さすがにGUIはめんどくさいので、CLIで打つんだけど、何が面倒くさいって、バケットの名前って一意にしないといけないので、とても長ったらしくて、コマンド打つのがめんどくさい。ていうかよく間違えて、そんなバケット無いよ、って言われてイライラする。

# バケットを探す
aws s3 ls

# バケットを消す
aws s3 rb aaaabbbbccccdddd-backet --force

あー、backetじゃなくて、bucketだったーみたいな。

解決法

インタラクティブに消せたらいいよね。
ということで、こちらを使わせて頂く。

下準備として、sentakuをインストール。

brew tap rcmdnk/rcmdnkpac
brew install sentaku

下記スクリプトを準備。
個人的にはこういうオレオレスクリプトをどこかにまとめて作っておいて、環境変数のPATHに追加しておくといつでも使えて便利なのでそれをオススメする。やっていることはシンプルで、s3のリストを取得して、選んだバケットをごそっと消しちゃうというもの。(消えるので使い方には注意を・・責任は負いません。)

rm_bucket
#!/bin/bash

STR=`aws s3 ls | sentaku -s $'\n'`
ARR=(${STR// / })
BUCKET=${ARR[2]}
BUCKET=`echo ${BUCKET} | tr -d '\n'`

if [ -z ${BUCKET} ]; then
    echo "Error: Cannot find bucket name."
    exit
fi

read -p "delete ${BUCKET}? (y/N): " yn
if [[ $yn = [yY] ]]; then
    echo "s3://${BUCKET}"
    aws s3 rb s3://${BUCKET} --force
else
    echo "Abort."
fi

使ってみる

こんなふうに使えます。

$ rm_bucket

実行すると、下記のようなS3バケットのリストが表示されます。
image.png

バケットを選択してエンターを押すと確認メッセージが表示されて、yを打てば、そのまま強制的に消せます。

delete example-example-2? (y/N): y
s3://example-example-2
remove_bucket: example-example-2

## まとめ
快適!快適だ!
でも--forceで消してるので、気をつけて使ってください。

(既存バケット名をIntelisenseとか出来るなら、そのほうが快適な気がする・・)

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?