外部存储#
功能可用性
- 在自托管企业计划中可用
- 如果您想在云企业版中访问此功能,请联系 n8n。
n8n 可以外部存储工作流执行产生的二进制数据。此功能有助于避免依赖文件系统存储大量二进制数据。
n8n 将来会为其他数据类型引入外部存储。
在 S3 中存储 n8n 的二进制数据#
n8n 支持 AWS S3 作为工作流执行产生的二进制数据的外部存储。您可以使用其他 S3 兼容服务,如 Cloudflare R2 和 Backblaze B2,但 n8n 不正式支持这些。
企业级功能
您需要企业许可证密钥才能使用外部存储。如果您的许可证密钥过期并且您仍在 S3 模式下,实例将能够从 S3 存储桶读取,但不能写入。
设置#
按照 AWS 文档创建和配置存储桶。您可以使用以下策略,将 <bucket-name> 替换为您创建的存储桶名称:
1 2 3 4 5 6 7 8 9 10 11 | |
设置存储桶级生命周期配置,以便 S3 自动删除旧的二进制数据。n8n 将二进制数据的清理委托给 S3,因此除非您想无限期保留二进制数据,否则需要设置生命周期配置。
完成创建存储桶后,您将拥有主机、存储桶名称和区域,以及访问密钥 ID 和秘密访问密钥。您需要在 n8n 的环境中设置它们:
1 2 3 4 5 | |
无区域
如果您的提供商不需要区域,您可以将 N8N_EXTERNAL_STORAGE_S3_BUCKET_REGION 设置为 'auto'。
验证并更新 S3 bucket 区域格式(v2.6.4 及更高版本)#
从 n8n v2.6.4 开始,环境变量 N8N_EXTERNAL_STORAGE_S3_BUCKET_REGION 的值必须满足以下条件:
- 只能包含字母数字字符(
a-z、A-Z、0-9)和连字符(-)。 - 不能包含下划线(
_)或其他特殊字符。
如果不满足这些条件,即使存储端点可访问且之前在较旧版本中可以正常工作,n8n 也会因连接错误而启动失败。
如果在将 n8n 升级到 v2.6.4 后 S3 连接失败,请验证你的区域值是否符合这些条件,然后重新部署 n8n。
告诉 n8n 在 S3 中存储二进制数据:
1 2 | |
身份验证自动检测
要自动检测凭据以验证您的 S3 调用,请将 N8N_EXTERNAL_STORAGE_S3_AUTH_AUTO_DETECT 设置为 true。这将使用默认的凭据提供程序链。
重启服务器以加载新配置。
使用#
启用 S3 后,n8n 将任何新的二进制数据写入和读取到 S3 存储桶。n8n 以此格式将二进制数据写入您的 S3 存储桶:
1 | |
如果 filesystem 仍在 N8N_AVAILABLE_BINARY_DATA_MODES 中列为选项,n8n 继续从文件系统读取存储在文件系统中的较旧二进制数据。
如果您在 S3 中存储二进制数据,然后切换到文件系统模式,只要 s3 仍在 N8N_AVAILABLE_BINARY_DATA_MODES 中列出且您的 S3 凭据仍然有效,实例就会继续读取存储在 S3 中的任何数据。
二进制数据清理
二进制数据清理在活动的二进制数据模式上运行。例如,如果您的实例在 S3 中存储数据,然后您切换到文件系统模式,n8n 只会清理文件系统中的二进制数据。这在将来可能会改变。
S3 存储升级最佳实践#
使用 S3 或 S3 兼容存储时:
- 同时将所有 n8n 组件(main、worker、runner)升级到相同版本,以避免协议不兼容。
- 对于通过 HTTP 访问的本地部署或 S3 兼容存储,请设置
N8N_EXTERNAL_STORAGE_S3_PROTOCOL=http,并在 host 配置中包含协议。 - 仅使用受支持的环境变量名称:对于访问密钥,请使用
N8N_EXTERNAL_STORAGE_S3_ACCESS_KEY。
较新的 n8n 版本具有更严格的验证和协议处理。升级后,较旧的配置可能需要更新。