はじめに
AWSを使用していた際に、EKS上からAWSのS3上に作業時のログファイルを送ることがありました。
そのファイルを削除した時に格納先のパスまで消えてしまったためメモとして残したいと思います。
今回はCloudShellを使用して試してみたいと思います。
事前に
AWSのs3上で汎用バケットを作成します。
今回は「pratest000」という名前で汎用バケットを作成しました。

AWS CloudShellからs3上にファイルを送る
AWS CloudShellを開きます。
→以下のような画面が表示されます。

ここでテキストファイルを作成してみます。
~ $ touch test.txt
これで「test.txt」というファイルが作成されました。
作成した「test.txt」をs3の「pratest000」バケットの/log上に送ってみます。
aws s3 cp test.txt s3://pratest000/log/test.txt
上記を実行するとawsのs3のtestというバケットの/logにファイルが格納されます。
実際にs3上を確認してみます。
→画像のように/log を作成しなくても「test.txt」が送れていることが確認できると思います。

次にs3のGUI上から/log配下のファイルを削除してみます。
「test.txt」のチェックボックスにチェックを付け右上の削除を選択

オブジェクトの選択画面で「完全に削除」を入力しオブジェクトの削除をクリック

「pratest000」のバケット内に戻ると、「test.txt」が削除されているのと同時に先ほどまで存在していた「/log」も無くなってしまいました。

まとめ
EKSやAWS Clodshellからs3バケット上にファイルを送るときはs3上に事前にプレフィックスを作成していなくても送ることができる。
ただし、中身のファイルをすべて削除した場合は該当のプレフィックスも同時に無くなる。
■参考
S3について
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/Welcome.html
