View a markdown version of this page

S3 Files の同期のカスタマイズ - Amazon Simple Storage Service

S3 Files の同期のカスタマイズ

S3 Files を使用すると、同期設定を通じてファイルシステムとリンクされた S3 バケット間のデータフローを制御できます。デフォルト設定では、ほとんどのワークロードにおいてレイテンシーとコストのバランスが取れていますが、アクセスパターンに合わせて調整することも可能です。事前により多くのデータをインポートすると、読み取りレイテンシーが短縮されますが、ストレージ料金と書き込み料金が高くなります。インポートするデータが少ないと、ストレージコストは低くなりますが、S3 からの読み取りが多くなり、レイテンシーが高くなります。各設定には 2 つのコンポーネントがあります。インポートデータルールは、ファイルシステムにコピーされるデータとタイミングを制御し、有効期限データルールは、未使用のデータがファイルシステムに保持される期間を制御します。これらのルールは、AWS マネジメントコンソールまたは PutSynchronizationConfiguration API を使用して更新できます。

インポートデータルール

データインポートルールは、バケットからファイルシステムへのデータのコピー方法を制御します。ファイルシステムごとに最大 10 個のインポートデータルールを設定できます。各インポートデータルールには、次のパラメータがあります。

prefix – ルールが適用される S3 プレフィックス。バケット全体 (ファイルシステムスコープ) を指定する場合は空の文字列 ("") を指定し、ファイルシステム内の特定のプレフィックス (例:「data/ml/」) を指定することもできます。バケット全体を "" で指定しない限り、プレフィックスはスラッシュ (/) で終わる必要があります。ルートディレクトリには、インポートルールを必ず 1 つだけ含める必要があります。デフォルト: ""(バケットまたはファイルシステムスコープ全体)。

trigger – データのインポートタイミング: ON_DIRECTORY_FIRST_ACCESS または ON_FILE_ACCESS。デフォルト: ON_DIRECTORY_FIRST_ACCESS。

  • ON_DIRECTORY_FIRST_ACCESS – ファイルデータは、ディレクトリに初めてアクセスするときにインポートされます。例えば、内容を一覧表示したり、ディレクトリ内のファイルを開いたりしてディレクトリに初めてアクセスすると、そのディレクトリ内の sizeLessThan しきい値より小さいすべての直下の子ファイルのデータがインポートされます。このオプションは、ファイルへの初回アクセス時に低レイテンシーを必要とするワークロードに役立ちます。

  • ON_FILE_ACCESS – ファイルデータは、ファイルが初めて読み取られた場合にのみインポートされます。このオプションは、初回読み取り時にレイテンシーが高くなるという代償を伴いますが、インポートされるデータを最小限に抑えます。

sizeLessThan – 自動的にインポートする最大ファイルサイズ (バイト単位)。S3 Files はすべてのファイルのメタデータをインポートしますが、このしきい値より小さいファイルのデータのみをインポートします。最小: 0 バイト (データはインポートされませんが、メタデータはインポートされます)。最大: 52,673,613,135,872 バイト (48 TiB)。デフォルト: 131,072 バイト (128 KiB)。

プレフィックスのマッチング動作

複数のインポートデータルールがファイルに一致する場合、S3 Files は最も具体的なプレフィックスを持つルールを適用します。例えば、次のような 3 つのルールがあるとします。

  • ルール 1: prefix = "" (バケット全体)、sizeLessThan = 64 KiB、trigger = ON_FILE_ACCESS

  • ルール 2: prefix = "hot/"、sizeLessThan = 1 MiB、trigger = ON_DIRECTORY_FIRST_ACCESS

  • ルール 3: prefix = "hot/largeData/"、sizeLessThan = 256 KiB、trigger = ON_DIRECTORY_FIRST_ACCESS

hot/largeData/data.txt のファイルの場合、S3 Files はルール 3 を適用します。hot/data.txt のファイルの場合、S3 Files はルール 2 を適用します。cold/data.txt のファイルの場合、cold/ プレフィックスに特定のルールがないため、S3 Files はルール 1 を適用します。

有効期限データルール

有効期限データルールは、未使用のデータがファイルシステムからいつ削除されるかを制御して、ストレージコストを最適化します。S3 Files は、指定された期間読み取られなかったデータ、およびその変更内容が既に S3 バケットに同期されたデータを削除します。ファイルが読み取られるたびに有効期限タイマーがリセットされ、データがファイルシステムに保持される時間が長くなります。有効期限データルールでは、次のパラメータを指定できます。

daysAfterLastAccess – ファイルシステムからデータが削除されるまでの、最後の読み取りからの日数。最小: 1 日。最大: 365 日。デフォルト: 30 日。

同じデータに頻繁にアクセスする長時間実行されるワークロードがある場合は、より長い有効期限 (30~90 日) を検討してください。一時的なデータの場合は、より短い期間 (1~7 日) を検討してください。

設定例

汎用ファイル共有 (デフォルト設定) – 開発者とデータサイエンティストのチームが S3 ファイルシステムをマウントして、コード、設定ファイル、小規模なデータセットを共有します。ほとんどのファイルは 128 KiB 未満で、1 日を通して繰り返し読み取られます。デフォルト設定は、このワークロードに適しています。ON_DIRECTORY_FIRST_ACCESS は、ディレクトリ内のいずれかのファイルが最初にアクセスされたときにメタデータと小さなファイルデータをインポートします。これは、プロジェクト内のソースファイルやデプロイ内の設定ファイルなど、同じディレクトリ内のファイルが一緒にアクセスされる可能性が高い場合に効果的です。以降のユーザーによるアクセスは高速です。ユーザーがログアーカイブなどの大きなファイルを開くと、S3 Files は自動的に S3 から直接ストリーミングして高スループットを実現します。30 日間の有効期限ウィンドウにより、アクティブに使用されているファイルは手動でクリーンアップしなくてもファイルシステムに保持されます。

反復読み取りによる ML トレーニング – トレーニングジョブは、複数のエポックにわたって何千もの小さなファイル (<10 MiB) を繰り返し読み取ります。レイテンシーを最小限に抑えるには、ON_DIRECTORY_FIRST_ACCESS で sizeLessThan のしきい値を高く設定します (10 MiB など)。これにより、トレーニングスクリプトが各ディレクトリを最初に一覧表示したときにファイルデータがプリロードされます。トレーニングジョブの完了直後にデータがファイルシステムから削除されるように、有効期限を短く設定します (3 日間など)。

広範なファイル検出を備えたエージェントワークロード – AI エージェントは、ドキュメント、コード、またはナレッジベースファイルの大規模なリポジトリを調べてクエリに回答し、関連するコンテキストを検索するときに多数の小さなファイルを一度に読み取ります。sizeLessThan を 0 に設定して、データがファイルシステムにインポートされないようにします。エージェントは低レイテンシーでディレクトリツリー全体を参照してファイルを検出でき、読み取られた各ファイルは S3 から直接提供されます。これにより、多くのファイルを予測不可能に処理するものの、同じファイルを再び参照することがほとんどないワークロードにおいて、コストを低く抑えることができ、さらに並列に読み取りを行うエージェントを追加しても自然にスケールします。

ホットプレフィックスとコールドプレフィックス – ファイルシステムには、config/ の下に頻繁にアクセスされる設定ファイルと、archive/ の下に頻繁にアクセスされないアーカイブデータの両方が含まれています。2 つのインポートルールを作成します。1 つは config/ 用で、sizeLessThan の値を高くして、ON_DIRECTORY_FIRST_ACCESS を設定します。もう 1 つは archive/ 用で、sizeLessThan を 0 に設定し、ON_FILE_ACCESS を設定します。これにより、設定ファイルがファイルシステム上に保持され、高速アクセスを実現しながら、ほとんど読み取られないアーカイブデータのストレージコストを削減できます。