はじめに
業務ですs3の棚卸しをしていました。
S3 sync で削除するバケットの中身をアーカイブ用アカウントに作成したS3に同期させる際に詰まったことがあったので書いてきます。
何が起こったか
タイトル通りですが、あるAWSアカウントから他のAWSアカウントにs3 syncした際に、sync元と先のバケットを確認したところ、
バケットのサイズは一致するもののオブジェクト数が一致しませんでした。
何故か
結論から言うと、s3でフォルダを作成すると、0KBのオブジェクトが作成されていました。
そもそもマネコン上でS3を確認すると、S3はディレクトリ構造に見えるのですが、S3はディレクトリ構造ではなく、実態としてはKVSのようです。
Key=ファイルのフルパス
Value=ファイルの中身
例えば、test/
フォルダを作成すると、マネコン上では確認できないですが、
S3の実態としては、サイズ0の、test/
という要素が作成されます。
この要素(?)がs3 sync で同期されなかったため、sync元と先でオブジェクトの数が一致していない原因でした。
sync先のバケットを確認しましたが、オブジェクトはちゃんと同期されていたので問題はなかったです。
終わりに
AWSでは利用者側から見てわかりやすいように、内部の構造を意識させないようにしている工夫が沢山あると思いました。
今回のように、普段は意識していなくても良いけど、いざという時にしっかりと実態を理解しておく必要があると感じました。
ちょっと抽象的な説明になってしまったので、指摘あればコメントに何なりとお願いします。