S3 Files の計測方法
S3 Files は、S3 バケットにリンクされた共有ファイルシステムであり、アクティブなワーキングセットに比例したコストを維持しながら、低レイテンシーのファイルアクセスを提供するように設計されています。ファイルシステムはバケット内のオブジェクトのビューを維持し、ユーザーに代わってファイルシステムオペレーションを効率的な S3 リクエストにインテリジェントに変換します。ファイルシステムを介して特定のファイルやディレクトリを操作すると、関連するファイルメタデータとコンテンツが、ファイルシステムの高性能ストレージ、特に低レイテンシーアクセスの恩恵を受ける部分に配置されます。多くの読み取りオペレーションはファイルシステムを完全にバイパスし、データは S3 バケットから直接 S3 GET リクエストレートで提供され、S3 ファイルデータ料金は発生しません。信頼できるデータは、常に S3 バケットに保持されます。データを書き込むと、そのデータはファイルシステムの耐久性の高い高性能ストレージに保存され、その後 S3 バケットに同期されるため、ファイルシステムと S3 バケットの双方向の整合性が保たれます。
S3 Files では、ファイルシステムの高性能ストレージに保存されているアクティブなデータの割合に対してストレージ料金を支払い、ファイルシステムの高性能ストレージとの間で読み書きするためのデータアクセス料金を支払います。このページでは、コストを理解して最適化できるように、各ディメンションを計測する方法について説明します。AWS リージョン別の料金については、「Amazon S3 の料金
ファイルシステムストレージの計測方法
データにアクセスすると、ファイルシステムはファイルメタデータとコンテンツの一部をオンデマンドでファイルシステムの高性能ストレージにロードし、データセット全体を複製することなく高速読み取りを実現します。高性能ストレージに保存されるファイルを決定するファイルサイズのしきい値 (デフォルトは 128 KiB) を設定します。このしきい値以下のファイルは、低レイテンシーアクセスから最も恩恵を得ます。しきい値を超えるファイルは S3 バケットから直接ストリーミングされるため、S3 Files ストレージ料金は発生しません。設定可能なウィンドウ (1~365 日、デフォルト 30 日) 内にアクセスされなかったデータは、高性能ストレージから自動的に有効期限切れになります。高性能ストレージに存在するアクティブなデータの割合に応じて、ストレージ料金が発生します。通常、この割合は小さくなります。大きなファイルは S3 バケットから直接ストリーミングされ、古いデータは自動的に有効期限切れになり、レイテンシーの影響を受けやすい小さなファイルのみが高性能ストレージに保存されるためです。高性能ストレージの最小請求可能ファイルサイズは 10 KiB です。
データアクセスの計測方法
メタデータオペレーションとファイルシステムの高性能ストレージへの読み取りと書き込みには、データアクセス料金が発生します。大きなファイル読み取り (1 MiB 以上) は、データがファイルシステムの高性能ストレージに存在する場合でも、常に S3 バケットから直接ストリーミングされます。S3 は高スループットの読み取り用に最適化されており、高性能ストレージは低レイテンシーの小さいファイルのアクセスに最適化されています。直接読み取りでは、S3 GET リクエストと S3 Files メタデータの読み取り (4 KiB) が発生し、ファイル読み取り料金はかかりません。バックグラウンド同期オペレーションにも、データアクセス料金と S3 リクエスト料金が発生します。高性能ストレージにデータをインポートすると書き込み料金が発生し、変更を S3 バケットにエクスポートすると読み取り料金が発生します。
ファイルシステムからのデータアクセスの計測方法
S3 Files は、すべてのファイルシステムオペレーションを読み取りまたは書き込みのいずれかとして計測し、ファイルまたはメタデータに適用します。各オペレーションには最小計測サイズがあり、その後は、次の 1 KiB 単位まで切り上げられます。つまり、すべてのオペレーションは、データ読み取り、メタデータ読み取り、データ書き込み、メタデータ書き込みの 4 つのカテゴリのうちの 1 つまたは 2 つに分類されます。例えば、ファイルの読み取りはデータの読み取りとメタデータの読み取りの両方として計測され、ファイルの名前の変更はメタデータの読み取りとメタデータの書き込みとして計測されます。1 つのオペレーションが 3 つ以上のカテゴリとして計測されることはありません。
高性能ストレージからのファイル読み取りは、読み取りオペレーションごとに 32 KiB 以上のデータ読み取りサイズで計測されます。
高性能ストレージへのファイル書き込みは、書き込みオペレーションごとに最低 32 KiB で、書き込まれたデータのサイズで計測されます。
メタデータの読み取りは 4 KiB の最小サイズで計測され、S3 Files の読み取りとして適用されます。メタデータ読み取りオペレーションの例には、ディレクトリの一覧表示とファイル属性の表示などが含まれます。
メタデータの書き込みは 4 KiB の最小サイズで計測され、S3 Files の書き込みとして適用されます。メタデータ書き込みオペレーションの例には、ファイルとディレクトリの作成または削除、名前の変更、アクセス許可の変更、fsync の呼び出しなどがあります。
S3 バケットから直接ストリーミングする場合の計測方法
S3 Files は、ファイルのデータが高性能ストレージに保存されていない場合、または、データが高性能ストレージに存在する場合でも読み取りが 1 MiB 以上の場合の 2 つのケースで、S3 バケットから直接読み取りをストリーミングします。この設計は、各ストレージレイヤーの長所を反映しています。S3 バケットは高スループット用に最適化され、ファイルシステムは低レイテンシーアクセス用に最適化されています。
小さなファイル (デフォルトで 128 KiB 未満) の場合、S3 Files はデータを高性能ストレージに非同期的にインポートし、後続の読み取りを低レイテンシーで処理します。ダイレクトバケットストリームの場合、S3 GET リクエストと S3 Files メタデータの読み取り (4 KiB) に対して、ファイル読み取り料金はかかりません。
バケット同期の計測方法
S3 Files は、ファイルシステムとリンクされた S3 バケットを自動的に同期させます。同期は、ファイル読み取り、ファイル書き込み、および S3 リクエスト料金として計測されます。詳細については、「同期の仕組みを理解する」を参照してください。
ファイルシステムへのデータのインポート: S3 が設定に基づいて S3 バケットから高性能ストレージにデータをコピーすると、そのオペレーションはファイルシステムへの書き込みとして計測されます。インポート書き込みは、ディレクトリに初めてアクセスしたとき、高性能ストレージに保存されていないファイルを読み取ったとき、S3 Files が S3 バケットに直接加えられた変更を反映するときに発生します。計測サイズとは、高性能ストレージに書き込まれるデータの量と、メタデータ書き込みのことです。
S3 バケットへの変更のエクスポート: S3 Files がファイルシステムの変更を S3 バケットにコピーすると、そのオペレーションはファイルシステムのメタデータとファイルの読み取りとして計測されます。高性能ストレージから読み取られたデータのみが、この料金にカウントされます。例えば、ファイルにデータを追加すると、S3 Files は UploadPartCopy を使用して、追加前にオブジェクト全体を高性能ストレージにインポートしないようにします。これにより、高性能ストレージのコストが最適化されます。
名前変更および移動オペレーション: S3 バケットはディレクトリまたは名前変更をネイティブにサポートしていません。S3 ファイルシステムにディレクトリとして表示されるのは、バケット内のオブジェクトのキーによって共有される共通のプレフィックスであり、S3 オブジェクトは変更不可能です。その結果、ファイルの名前を変更したり移動したりすると、S3 Files は更新されたキー (S3 PUT リクエストとして測定) を使用して新しいオブジェクトにデータをコピーし、元のオブジェクトを削除します。同期は、データの場所に基づいてメタデータ読み取りとファイル読み取りとして計測されます。ファイルデータが高性能ストレージに保存されていない場合、4 KiB のメタデータの読み取りのみが適用されます。ファイルの名前変更またはディレクトリの移動の場合、S3 Files はそのプレフィックスの下にあるすべてのオブジェクトに対してこのコピーと削除を繰り返します。詳細については、「名前変更および移動オペレーションの影響を理解する」を参照してください。
ファイルデータの有効期限: 設定可能な期間である 1~365 日 (デフォルトは 30 日) 以内にアクセスされないファイルデータは、高性能ストレージから自動的に有効期限切れになります。有効期限切れによるデータアクセスやメタデータの料金は発生しません。
メタデータの更新: ファイルシステムメタデータ (inode) には、リンクされた S3 バケットの内容が反映されます。バケットが変更されると、バケットの現在の状態と一致するようにメタデータが更新されます。アクセスされたディレクトリのメタデータは有効期限切れになりません。Inode CloudWatch メトリクスを使用して、メタデータの使用状況をモニタリングできます。メタデータの有効期限が切れても料金は発生しません。
計測例
大規模なディレクトリを初めて一覧表示する
S3 Files は、ディレクトリを初めて一覧表示すると、そのディレクトリ内のすべてのファイルのメタデータをインポートします。各ファイルのメタデータのインポートは、4 KiB の書き込みとして計測されます。インポート設定 (デフォルトは 128 KiB) によっては、S3 Files は、そのディレクトリ内の小さなファイルのデータをプリフェッチしてファイルシステムの高性能ストレージにコピーし、レイテンシーを最小限に抑えるように最適化します。各ファイルのデータインポートは、ファイルのサイズ (最小 32 KiB) で書き込みとして計測されます。インポートルールを設定することで、どのファイルのデータをインポートするかを制御できます。詳細については、「S3 Files の同期のカスタマイズ」を参照してください。
高性能ストレージに保存されていない小さなファイルの読み取り
S3 Files は、S3 バケットからクライアントへ読み取りを直接ストリーミングし、データをファイルシステムの高性能ストレージに非同期的にインポートして、今後の読み取りを高速化します。これは、転送されたデータのサイズ (最小 32 KiB) に基づいて、ファイルシステムの読み取りとして計測されます。ファイルシステムの高性能ストレージへのデータの非同期データインポートは、転送されたデータのサイズに応じて書き込みとして計測されます。ファイルシステムからデータが有効期限切れになったファイルを読み取る場合も、同様のプロセスが実行されます。高性能ストレージからファイルの有効期限が切れても、ファイルシステムのオペレーション料金は発生しません。
ファイルシステムへの書き込み
すべてのファイル書き込みは高性能ストレージに保存され、最低 32 KiB で、書き込まれたデータのサイズで計測されます。S3 Files は、S3 バケットにコピーする前に、同じファイルに対する連続する変更を集約するために、書き込みアクティビティが停止した状態が一定期間 (60 秒) 続くのを待機します。高速書き込みは、個々の変更ごとに新しいオブジェクトバージョンを生成するのではなく、単一の S3 PUT でキャプチャされます。これにより、S3 リクエストコストとファイル高性能ストレージコストの両方が削減されます。このバケット同期は、高性能ストレージから読み取られたデータに対するファイルシステムの読み取りとして、また S3 PUT リクエストとして計測されます。