N8N中文教程
部署托管/Scaling_and_performance

外部存储#

功能可用性

  • 仅在自托管(Self-hosted)企业版计划中提供
  • 如果您希望在云端企业版(Cloud Enterprise)中使用此功能,请联系 n8n。

n8n 可以将工作流执行产生的二进制数据存储在外部系统中。该功能有助于避免依赖本地文件系统来存储大量二进制数据。 未来,n8n 将会为其他类型的数据引入外部存储支持。

在 S3 中存储 n8n 的二进制数据#

n8n 支持使用 AWS S3 作为工作流执行所产生的二进制数据的外部存储。您可以使用其他与 S3 兼容的服务(如 Cloudflare R2 和 Backblaze B2),但这些服务并未被 n8n 官方支持。

企业版功能 您需要一个 企业版许可证密钥(Enterprise license key) 才能使用外部存储功能。如果您的许可证过期但仍处于 S3 模式,实例将只能从 S3 存储桶读取数据,无法写入新数据。

配置#

请按照 AWS 文档 创建并配置一个存储桶。您可以使用以下策略,将 <bucket-name> 替换为您创建的存储桶名称:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11

| ``` { "Version":"2012-10-17", "Statement":[ { "Sid":"VisualEditor0", "Effect":"Allow", "Action":["s3:"], "Resource":["arn:aws:s3:::","arn:aws:s3:::/"] } ] }

---|---

设置存储桶级别的生命周期配置(lifecycle configuration),以便 S3 自动删除旧的二进制数据。n8n 将二进制数据的清理任务委托给 S3,因此除非您希望无限期保留这些数据,否则必须设置生命周期规则。

完成存储桶创建后,您将获得主机地址(host)、存储桶名称(bucket name)、区域(region),以及访问密钥 ID 和密钥(access key ID 与 secret access key)。您需要将这些信息设置为 n8n 的环境变量:

1 2 3 4 5

| ```
export N8N_EXTERNAL_STORAGE_S3_HOST=... # 示例:s3.us-east-1.amazonaws.com
export N8N_EXTERNAL_STORAGE_S3_BUCKET_NAME=...
export N8N_EXTERNAL_STORAGE_S3_BUCKET_REGION=...
export N8N_EXTERNAL_STORAGE_S3_ACCESS_KEY=...
export N8N_EXTERNAL_STORAGE_S3_ACCESS_SECRET=...
```
---|---

无需区域
如果您的服务提供商不需要指定区域,可将 `N8N_EXTERNAL_STORAGE_S3_BUCKET_REGION` 设置为 `'auto'`。

通知 n8n 使用 S3 存储二进制数据:

```
1
2
```

| ```
export N8N_AVAILABLE_BINARY_DATA_MODES=filesystem,s3
export N8N_DEFAULT_BINARY_DATA_MODE=s3

```

```

---|---
认证自动检测
要自动检测凭据以认证您的 S3 调用,请将 `N8N_EXTERNAL_STORAGE_S3_AUTH_AUTO_DETECT` 设置为 `true`。这将使用默认的 凭证提供链。
重启服务器以加载新的配置。

### 使用方法#

启用 S3 后,n8n 会将所有新的二进制数据写入并从 S3 存储桶中读取。n8n 将二进制数据以如下格式写入您的 S3 存储桶:

```
1
```

| ```
workflows/{workflowId}/executions/{executionId}/binary_data/{binaryFileId}

```

---|---
如果 `filesystem` 仍列在 `N8N_AVAILABLE_BINARY_DATA_MODES` 配置项中,n8n 会继续从文件系统读取之前存储的旧二进制数据。
如果您将二进制数据存储在 S3 中,之后切换回文件系统模式,只要 `s3` 仍在 `N8N_AVAILABLE_BINARY_DATA_MODES` 中列出,并且您的 S3 凭据仍然有效,实例就会继续读取存储在 S3 中的数据。
二进制数据清理
二进制数据的清理操作仅作用于当前激活的二进制数据模式。例如,如果您的实例先前将数据存储在 S3 中,之后切换到了文件系统模式,n8n 只会清理文件系统中的二进制数据。此行为未来可能会发生变化。