(Cloudflare R2)バケット内のオブジェクトを一括ですべて削除する方法
結論
記事の執筆時点ではダッシュボードから一括削除する機能は提供されていません。そこで、AWS CLIを使って削除します。
次のコマンドを実行するとバケット内のオブジェクトがすべて削除されます。削除対象のオブジェクトを確認したら、--dryrun
フラグを外して再実行してください。
$ aws s3 rm 's3://バケット名' \
--profile 'r2' \
--endpoint-url 'Cloudflareのダッシュボードに表示されているURL' \
--dryrun \
--recursive
注意点
--endpoint-url
フラグに渡す値はCloudflareのダッシュボードに表示されています。Home→R2→バケット名と進むと、https://アカウントID.r2.cloudflarestorage.com/バケット名
という形式のURLが見つかるはずです。
ただし、このURLをそのまま使うとs3 rm
は失敗します。URL末尾の/バケット名
は除去してください。
(おまけ)認証情報を設定する手順
認証情報の設定は以下の手順で行います。
- Cloudflareのダッシュボードを開き、Home→R2→Manage R2 API Tokensと進みます。
- Create API tokenボタンを押します。
- 権限は「Edit: Allow edit access of all objects and List, Write, and Delete operations」を選びます。
- 有効期限を設定してください。万が一、作業中にトークンが漏洩した場合に備えて最短の有効期限を設定することをお勧めします。
- Client IP Address Filteringは空欄で構いません。
- Create API Tokenボタンを押します。
- Access Key IDとSecret Access Keyが作成されます。この画面を閉じると二度と閲覧できなくなるのでメモします。
- Finishボタンを押して完了です。
準備は整いました。次のコマンドを実行して認証情報を設定しましょう。
$ aws configure --profile 'r2'
コマンドを実行すると次のような入力が求められます。
AWS Access Key ID [None]: <先ほどメモしたAccess Key ID>
AWS Secret Access Key [None]: <先ほどメモしたSecret Access Key>
Default region name [None]:
Default output format [None]: json
以上で認証情報の設定は完了です。Default regionは空欄で構いません。
認証エラーが発生する場合の確認事項
AWS CLIの認証情報は~/.aws/config
ファイルと~/.aws/credentials
ファイルに保存されます。内容は次のとおりです。
~/.aws/config
ファイル
[profile r2]
output = json
~/.aws/credentials
ファイル
[r2]
aws_access_key_id = aaa
aws_secret_access_key = bbb
認証エラーが発生する場合、~/.aws/credentials
ファイルの内容を確認してみてください。値は'
や"
で囲まず、そのまま書き込まれているのが正しい状態です。
(おまけ)Dockerを使ってawsコマンドを実行する
開発用マシンの環境を汚したくない場合、Dockerを利用してAWS CLIを実行するのがお勧めです。AWSの認証情報とCloudflare R2を操作するための認証情報を隔離する場合にも便利です。
まずはカレントディレクトリに.aws
ディレクトリを作成します。
$ mkdir .aws
次のコマンドを実行すると、カレントディレクトリの.aws
に認証情報が保存されます。
$ docker run --rm -it \
--volume "$PWD/.aws:/root/.aws" \
amazon/aws-cli \
configure --profile 'r2'
オブジェクトの削除コマンドは次のとおりです。
$ docker run --rm -it \
--volume "$PWD/.aws:/root/.aws" \
amazon/aws-cli \
s3 rm 's3://バケット名' \
--profile r2 \
--endpoint-url 'Cloudflareのダッシュボードに表示されているURL' \
--dryrun \
--recursive
参考資料お
- [Amazon S3とAPIの互換性があるCloudflare R2をAWS CLIから使ってみる - DevelopersIO]((https://dev.classmethod.jp/articles/using-cloudflare-r2-compatible-with-amazon-s3-api-from-aws-cli/)
Discussion