跳到主要内容

外部存储#

功能可用性

  • 仅限自托管企业版计划
  • 如需在云端企业版使用此功能,请联系 n8n

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

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

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

n8n 支持使用 AWS S3 作为工作流执行产生二进制数据的外部存储。您也可使用其他 S3 兼容服务(如 Cloudflare R2 和 Backblaze B2),但 n8n 不提供官方支持。

企业级功能

使用外部存储需配备企业版许可证密钥。若许可证过期后仍保持 S3 模式,实例将仅支持从 S3 存储桶读取数据,无法执行写入操作。

设置#

请根据 AWS 文档创建并配置存储桶。可使用以下策略(需将 <bucket-name> 替换为实际存储桶名称):

 {
"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环境中配置这些参数:

 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:

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存储桶:

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 仅会清理文件系统中的二进制数据。此机制未来可能调整。