

# 自定义 S3 Files 的同步
<a name="s3-files-synchronization-customizing"></a>

S3 Files 可让您通过同步配置来控制文件系统和关联的 S3 存储桶之间的数据流动方式。默认设置可以平衡大多数工作负载的延迟和成本，但您可以对其进行调整以匹配您的访问模式。预先导入更多数据可以减少读取延迟，但代价是存储和写入费用更高。导入较少的数据可以降低存储成本，但意味着从 S3 中读取的次数更多，延迟也更高。每种配置都有两个组成部分：导入数据规则，用于控制将哪些数据复制到文件系统以及何时复制；以及到期数据规则，用于控制未使用的数据在文件系统上保留多长时间。您可以使用 AWS 管理控制台或 PutSynchronizationConfiguration API 更新这些规则。

## 导入数据规则
<a name="s3-files-sync-import-rules"></a>

导入数据规则控制如何将数据从您的存储桶复制到文件系统。每个文件系统最多可以有 10 个导入数据规则。每个导入数据规则都具有以下参数：

**前缀**：规则适用的 S3 前缀。为整个存储桶（文件系统范围）指定一个空字符串（""），或指定文件系统中的特定前缀（例如，“data/ml/”）。前缀必须以正斜杠（/）结尾，除非使用 "" 指定整个存储桶。您必须为根目录包含正好一个导入规则。默认：""（整个存储桶或文件系统范围）。

**触发器**：何时导入数据：ON\_DIRECTORY\_FIRST\_ACCESS 或 ON\_FILE\_ACCESS。默认：ON\_DIRECTORY\_FIRST\_ACCESS。
+ **ON\_DIRECTORY\_FIRST\_ACCESS**：在您首次访问目录时导入文件数据。例如，当您首次通过列出目录的内容或打开其中的文件来访问该目录时，将导入该目录中所有小于 sizeLessThan 阈值的直接子文件的数据。对于首次访问文件时需要低延迟的工作负载，此选项非常有用。
+ **ON\_FILE\_ACCESS**：只有在首次读取文件时才会导入文件数据。此选项可最大限度地减少导入的数据，但代价是首次读取时延迟较高。

**sizeLessThan**：要自动导入的最大文件大小（以字节为单位）。虽然 S3 Files 会导入所有文件的元数据，但它只导入小于此阈值的文件的数据。最小值：0 字节（不导入任何数据，仍将导入元数据）。最大值：52673613135872 字节（48 TiB）。默认值：131072 字节（128 KiB）。

### 前缀匹配行为
<a name="s3-files-sync-prefix-matching"></a>

当多个导入数据规则与一个文件匹配时，S3 Files 会应用带有最具体前缀的规则。例如，假设您有三条规则：
+ 规则 1：前缀 = ""（整个存储桶），sizeLessThan = 64 KiB，触发器 = ON\_FILE\_ACCESS
+ 规则 2：前缀 =“hot/”，sizeLessThan = 1 MiB，触发器 = ON\_DIRECTORY\_FIRST\_ACCESS
+ 规则 3：前缀 =“hot/largeData/”，sizeLessThan = 256 KiB，触发器 = ON\_DIRECTORY\_FIRST\_ACCESS

对于 hot/largeData/data.txt 处的文件，S3 Files 应用规则 3。对于 hot/data.txt 处的文件，S3 Files 应用规则 2。对于 cold/data.txt 处的文件，S3 Files 应用规则 1，因为没有针对 cold/ 前缀的特定规则。

## 到期数据规则
<a name="s3-files-sync-expiration-rules"></a>

到期数据规则控制何时从文件系统中移除未使用的数据，以优化存储成本。在指定的持续时间内未读取数据并且其更改已同步到 S3 存储桶后，S3 Files 会移除这些数据。每当读取文件时，其到期计时器都会重置，从而延长数据在文件系统中的保留时间。可以在到期数据规则中指定以下参数：

**daysAfterLastAccess**：上次读取后从文件系统中移除数据的天数。最小值：1 天。最大值：365 天。默认值：30 天。

如果您具有长时间运行的工作负载，它们频繁访问相同的数据，请考虑采用更长的到期时间（30-90 天）。对于临时数据，考虑采用较短的时间段（1-7 天）。

## 示例配置
<a name="s3-files-sync-example-configs"></a>

**通用文件共享（默认配置）**：由开发人员和数据科学家组成的团队挂载 S3 文件系统以共享代码、配置文件和小型数据集。大多数文件小于 128 KiB，并且全天重复读取。默认配置非常适用于此工作负载：ON\_DIRECTORY\_FIRST\_ACCESS 会在首次访问目录中的任何文件时导入元数据和小文件数据，当可能一起访问同一目录中的文件（例如项目中的源文件或部署中的配置文件）时，这种方法效果很好。任何用户的后续访问速度都很快。当用户打开大型文件（例如日志归档）时，S3 Files 会自动直接从 S3 流式传输该文件以实现高吞吐量。30 天的到期时段将活跃使用的文件保留在文件系统上，无需手动清理。

**带有重复读取的 ML 训练**：训练作业在多个 epoch 内重复读取数千个小文件（<10 MiB）。为了最大限度地减少延迟，请使用 ON\_DIRECTORY\_FIRST\_ACCESS 设置一个较高的 sizeLessThan 阈值（例如 10 MiB），以便在训练脚本首次列出每个目录时预加载文件数据。设置较短的到期时间（例如 3 天），以便在训练作业完成后立即从文件系统中移除数据。

**具有广泛文件发现功能的代理式工作负载**：人工智能代理探索庞大的文档、代码或知识库文件存储库以回答查询，当它搜索相关上下文时读取一次许多小文件。将 sizeLessThan 设置为 0，这样就不会将任何数据导入到文件系统中。代理能够以低延迟浏览完整目录树以发现文件，而读取的每个文件都直接从 S3 提供。对于那些无法以可预测的方式接触许多文件但很少重访同一文件的工作负载，这可以降低成本，并且会随着您添加更多并行读取的代理而自然扩展。

**热前缀和冷前缀**：文件系统中既包含 `config/` 下频繁访问的配置文件，也包含 `archive/` 下不常访问的归档数据。创建两个导入规则：一个规则用于 `config/`（具有较高的 sizeLessThan 和 ON\_DIRECTORY\_FIRST\_ACCESS），另一个规则用于 `archive/`（sizeLessThan 设置为 0 和 ON\_FILE\_ACCESS） 这样可以将配置文件保存在文件系统上以便快速访问，同时避免了极少读取的归档数据的存储成本。