Skip to content

外部存储

功能可用性

  • 适用于自托管企业计划
  • 如果您想在 Cloud Enterprise 上访问此功能,请联系 n8n

n8n 可以将工作流执行生成的二进制数据存储在外部。此功能有助于避免依赖文件系统存储大量二进制数据。

n8n 未来将引入其他数据类型的外部存储。

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

n8n 支持AWS S3作为工作流执行生成的二进制数据的外部存储。您可以使用其他兼容 S3 的服务,例如 Cloudflare R2 和 Backblaze B2,但 n8n 尚未正式支持这些服务。

企业级功能

您需要一个企业许可证密钥来用于外部存储。如果您的许可证密钥已过期,并且您仍处于 S3 模式,则实例将能够读取 S3 存储桶,但无法写入。

设置

按照AWS 文档创建并配置存储桶。您可以使用以下策略,将其替换为您创建的存储桶的名称:

 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:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*"]
  }
 ]
}

设置存储桶级生命周期配置,以便 S3 自动删除旧的二进制数据。n8n 将二进制数据的修剪委托给 S3,因此除非您想无限期地保留二进制数据,否则需要设置生命周期配置。

创建存储桶后,您将拥有主机、存储桶名称和区域,以及访问密钥 ID 和秘密访问密钥。您需要在 n8n 的环境中设置它们:

1
2
3
4
5
export N8N_EXTERNAL_STORAGE_S3_HOST=... # example: 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 将二进制数据存储在 S3 中:

1
2
export N8N_AVAILABLE_BINARY_DATA_MODES=filesystem,s3
export N8N_DEFAULT_BINARY_DATA_MODE=s3

授权自动检测

要自动检测凭证以验证您的 S3 调用,请设置为。这将使用默认凭证提供程序链

重新启动服务器以加载新配置。

用法

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

1
workflows/{workflowId}/executions/{executionId}/binary_data/{binaryFileId}

如果仍然列为选项,n8n 将继续从文件系统读取存储在文件系统中的旧二进制数据。

如果您将二进制数据存储在 S3 中,然后切换到文件系统模式,则只要仍然列出并且您的 S3 凭证仍然有效,实例就会继续读取存储在 S3 中的任何数据。

二进制数据修剪

二进制数据修剪基于活动的二进制数据模式。例如,如果您的实例将数据存储在 S3 中,而您后来切换到了文件系统模式,则 n8n 只会修剪文件系统中的二进制数据。这种情况将来可能会有所改变。