跳至内容

外部存储#

功能可用性

  • 适用于自托管企业版计划
  • 如果您想在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_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将仅修剪文件系统中的二进制数据。此行为在未来可能会发生变化。

优云智算