S3 バケット内の名称空フォルダを削除する方法

2020.09.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

S3 バケットに名前が空のフォルダが存在します。

S3 コンソールでこのフォルダを削除しようとしても、削除ボタンが押せません。root ユーザーの権限が必要なのでしょうか?

S3名称空フォルダ

どう対応すればいいの?

root ユーザーの権限は必要ありません。S3 バケット内の名前が空のフォルダを削除する方法は、以下の 2 通りあります。

  • 空のフォルダ内のすべてのオブジェクトを削除する(S3 コンソールのみで実施可能)
  • AWS CLI で以下コマンドを実施する
$ aws s3api list-objects-v2 --query 'Contents[*].Key' --bucket <バケット名> | grep //
>   "blog//test",
# ListObjectsV2 API では S3 の名称空フォルダを「//」と表現します。

$ aws s3 rm 's3://<バケット名>/blog//' --recursive
> delete: s3://<バケット名>/blog//test

$ aws s3api list-objects-v2 --query 'Contents[*].Key' --bucket <バケット名> | grep //
> 
# 出力結果から "blog//test", がなくなったので削除成功

参考資料