🪣

オブジェクトストレージのオブジェクト、全部消す

に公開

概要

さくらのオブジェクトストレージはバケットを削除する際、バケット内のオブジェクト、フォルダを全て削除する必要があります
(参考: 公式FAQ
しかし、管理画面からオブジェクト、フォルダを一つ一つ消すのは非常に手間がかかります
さくらのオブジェクトストレージは Amazon S3 互換 APIに対応しており、AWS CLIを使って一括削除することができます
本記事では、バケット内のオブジェクトをAWS CLIでまとめて削除する方法を紹介します

事前準備

1. AWS CLIのインストール

公式より一部バージョンで動作不良が報告されています
以下の案内を確認し、対象外バージョンを使用してください

オブジェクトストレージ AWS CLI および AWS SDK ご利用できないバージョンのご案内

2. アクセスキーとパーミッション

READ/WRITE 権限が付与されたアクセスキーとシークレットキーが必要です
作成していない場合は、以下の公式マニュアルを参照してください

パーミッション設定によるアクセスキーの発行

手順

1. 初期設定

AWS CLIにさくら用のプロファイルを作成し、READ/WRITE権限のあるパーミッションのアクセスキー、シークレットアクセスキーを設定します

aws configure --profile プロファイル名

入力内容の例:

AWS Access Key ID [None]: アクセスキーを入力
AWS Secret Access Key [None]: シークレットアクセスキーを入力
Default region name [None]: jp-north-1
Default output format [None]: text

2. バケットとオブジェクトを確認

バケット一覧を表示

aws --profile プロファイル名 \
    --endpoint-url="https://s3.isk01.sakurastorage.jp" \
    s3 ls

削除対象バケット内のオブジェクトを確認

aws --profile プロファイル名 \
    --endpoint-url="https://s3.isk01.sakurastorage.jp" \
    s3 ls s3://バケット名 --recursive

3. Dry-run で削除対象を確認

誤ったデータを消してしまわないよう、dryrunで確認しましょう

(参考:aws s3 rm - AWS CLI リファレンス)

aws --profile プロファイル名 \
    --endpoint-url="https://s3.isk01.sakurastorage.jp" \
    s3 rm s3://バケット名 --recursive --dryrun

4. バケット内のオブジェクトを一括削除

削除対象が正しいことを dryrunで確認したら、いよいよ本番です
削除後、オブジェクトは復元できないので注意してください

aws --profile プロファイル名 \
    --endpoint-url="https://s3.isk01.sakurastorage.jp" \
    s3 rm s3://バケット名 --recursive

まとめ

管理画面で一つずつ削除するのは億劫ですが、AWS CLIを使えば数行のコマンドで一気に削除できます

Discussion