「ストレージは全部S3に集約しましょう」というAWSらしい方針は正しい。ですが、S3をオンプレのファイルサーバやNASの延長で捉えると、設計は静かに破綻します。S3はファイルシステムではなくオブジェクトストレージで、その差はSIerが染み付いた常識とぶつかります。まず、いくつかの「アンラーン(学び直し)」から始めましょう。

01オブジェクトは「上書き」しかできない — 部分更新がない

最初のアンラーンです。ファイルシステムなら、ファイルの途中を書き換えたり追記したりできます。S3の汎用バケットでは、オブジェクトは実質不変(イミュータブル)で、変更=オブジェクト丸ごとのPUT(置き換え)が基本です。とくに一部だけの更新(オブジェクト途中の書き換え)は、どのストレージクラスでもできません。ただし追記については例外があり、S3 Express One Zone(ディレクトリバケット)では2024年11月以降、既存オブジェクトへのデータ追記(append)が可能になりました。汎用バケットでは追記もできないため、多くのユースケースでは「上書きしかできない」前提で設計するのが安全です。

この違いは、ログの追記、DBのデータファイル、頻繁に一部更新される共有Excel——「ちょっとずつ書き換える」用途をS3に直に載せようとした瞬間に牙をむきます。それらはそもそもS3向きではないか、追記を「新しいオブジェクトを積む」形に設計し直す必要があります。

02フォルダは存在しない — キーのプレフィックスという幻

S3コンソールはフォルダのように見せてくれますが、S3にディレクトリという概念はありません。あるのはフラットなキー空間だけで、「/」はただの文字です。logs/2026/07/data.csv というキーは、logs/2026/07/ というフォルダの中のファイルではなく、そういう名前の1つのオブジェクトにすぎません。

現場のコツ:この幻を理解していないと、「10万ファイルの入ったフォルダをリネームしたい」が「10万回のコピーと削除」だと気づかず、時間と請求(リクエスト課金)の両方で事故ります。S3では「移動」は存在せず、すべては新規PUTと削除だと肝に銘じてください。

03ファイルロックがない — 排他制御は自分で

ファイルサーバなら、誰かが開いているファイルは排他ロックがかかります。S3にそういうロックはありません。同じキーに2つのプロセスが同時にPUTすれば、後勝ちで一方が消えます(バージョニングを使えば履歴は残せますが、ロックとは別の話)。

複数の書き手が同じオブジェクトを更新する設計は、S3では避けるか、外側で排他を作る(DynamoDBでロックを取る等)必要があります。「ファイルサーバでできていた同時編集」をS3で素朴に再現しようとすると、データを失います。

04「結果整合性」はもう古い — 今は強整合

ここは特にベテランほどアンラーンが要ります。かつてS3は「結果整合性(eventual consistency)」で、書いた直後に読むと古い内容が返ることがある、と教えられてきました。これは現在では解消されており、S3は書き込み後の読み取りに強い整合性(strong read-after-write consistency)を提供します。新規作成・上書き・削除の直後でも、最新の状態が読めます。

古い記事や古い記憶をもとに「S3は結果整合だから、書いた直後に読むな」という前提で複雑な回避策を組んでいるなら、それはもう不要な複雑さです。ただし、これは「同じキーへの操作の整合性」の話で、後述の大量リクエスト時の挙動やLISTの特性は別問題として残ります。

05POSIXではない — 「マウントできる」に飛びつかない

S3をファイルシステムのようにマウントする手段(File Gatewayやマウント系ツール)は存在しますが、裏側がオブジェクトストレージである事実は消えません。POSIXの完全なセマンティクス(細かいロック、部分更新、rename の原子性)を期待すると、性能や挙動で裏切られます。マウントは「既存アプリを繋ぐ橋」として割り切り、新規設計は素直にS3 API(PUT/GET)で組むのが安全です。共有ファイルシステムが本当に要るなら、それはEFSやFSxの領分です。

まとめ

S3は安くて頑丈で無限に伸びる、素晴らしいストレージです。ただしファイルサーバではありません。上書きしかできない、フォルダはない、ロックはない、POSIXではない——この差を「アンラーン」してから設計すると、S3は驚くほど素直に働きます。逆に、オンプレのストレージ感覚のまま突っ込むと、リネームで請求が跳ね、同時書き込みでデータが消えます。次はS3の性能と癖で、書き込み速度とスロットリングの深いところに踏み込みます。

「全ストレージをS3へ」の設計は、S3の性質を正しく捉えることから始まります。EMWは、どのデータをS3に、どれをEFS/FSxに置くべきかの振り分けから、オブジェクトストレージ前提の設計までご支援します。

相談する
← ブログ一覧へ戻る