AWS S3に制御文字を含むファイルをアップロードしてしまうことがままあります(あるんです)が、制御文字によってはTransmitやCyberduck、CloudBerry Explorerでそのファイルを含むフォルダーが表示できなくなってしまいます。
そんな時はaws cli。
Access Key IdとSecret Access Key、bucket名でアクセスして、オブジェクトのリストを取得します。
% aws s3api list-objects --bucket [BUCKET NAME] --prefix root/images
...},
{
"Key": "images/icon\u0003.png",
"LastModified": "2024-12-24T00:00:00+00:00",
"Size": 30000,
"StorageClass": "STANDARD",
},
{....
images/erroedfile\u0003.png
を削除したいのですが、
aws s3api delete-object --bucket [BUKET NAME] --key 'images/icon\u0003.jpg'
では消せません。aws cliのエスケープシーケンスに従って、以下のようにして消しましょう。
aws s3api delete-object --bucket [BUKET NAME] --key 'images/icon'$'\u0003''.jpg'