S3 コンソールでファイル削除時に「予期しないエラーが発生しました。」と表示された時の対処方法

2020.09.03

困っていた内容

S3 バケット内のファイルを S3 コンソールで削除しようとすると「予期しないエラーが発生しました。」と表示され、ファイルの削除に失敗します。削除できないファイルは、名前にシャープ(#)などの記号文字が含まれています。

この状態でバケットを削除しようとしても、削除に失敗します。

どう対応すればいいの?

バケットごと削除が可能な場合は、以下のコマンドで削除できます。

$ aws s3 rb s3://<バケット名> --force

ファイル名にバックスペース(\b)などの制御文字が含まれている場合、コンソールでは正しいファイル名が表示されません。

Contain unsafe string filename

s3api コマンドで正しいファイル名を確認後、制御文字を $'' で囲うことでファイルの削除ができます。(Bash)

$ aws s3api list-objects-v2 --query 'Contents[*].Key' --bucket <バケット名>
[
    ...
    "index.html\btest",
    ...
]

$ aws s3 rm s3://<バケット名>/index.html$'\b'test

参考資料

テクニカルサポートノートとは?

クラスメソッドのカルチャー(CLP) の「情報発信を通じて、全ての人々の創造活動に貢献し続ける」という考えから、クラスメソッド メンバーズをご利用のお客様よりいただいたお問い合わせより、他の AWS ユーザーにとっても 有益な情報を一般的な TIPS としてご紹介しています。