UNPKG

n8n-nodes-alicloud-oss

Version:
424 lines (325 loc) 13.8 kB
# n8n 阿里云 OSS 节点 <!-- PROJECT SHIELDS --> [![Contributors][contributors-shield]][contributors-url] [![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url] <p align="center"> <!-- PROJECT LOGO --> <br /> <p align="center"> <a href="https://github.com/felix-liuyj/n8n-nodes-alicloud-oss"> <img src="./nodes/AlicloudOss/alicloud-oss.logo.svg" alt="Logo" width="80" height="80"> </a> <h3 align="center">n8n 阿里云 OSS 节点</h3> <p align="center"> 为 n8n 工作流提供阿里云对象存储服务集成 <br /> <a href="https://github.com/felix-liuyj/n8n-nodes-alicloud-oss"><strong>查看详细文档 »</strong></a> <br /> <br /> <a href="https://github.com/felix-liuyj/n8n-nodes-alicloud-oss">演示</a> · <a href="https://github.com/felix-liuyj/n8n-nodes-alicloud-oss/issues">报告Bug</a> · <a href="https://github.com/felix-liuyj/n8n-nodes-alicloud-oss/issues">功能请求</a> </p> ## 目录 - [n8n 阿里云 OSS 节点](#n8n-阿里云-oss-节点) - [目录](#目录) - [关于项目](#关于项目) - [核心功能](#核心功能) - [技术栈](#技术栈) - [快速开始](#快速开始) - [环境要求](#环境要求) - [安装步骤](#安装步骤) - [项目结构](#项目结构) - [使用指南](#使用指南) - [配置凭据](#配置凭据) - [支持的操作](#支持的操作) - [操作详细说明](#操作详细说明) - [使用示例](#使用示例) - [开发命令](#开发命令) - [构建和开发](#构建和开发) - [代码质量](#代码质量) - [发布](#发布) - [部署选项](#部署选项) - [本地开发环境](#本地开发环境) - [生产环境部署](#生产环境部署) - [配置参数](#配置参数) - [凭据配置](#凭据配置) - [节点参数](#节点参数) - [兼容性](#兼容性) - [开发贡献](#开发贡献) - [许可证](#许可证) - [联系方式](#联系方式) ## 关于项目 这是一个专为 [n8n](https://n8n.io/) 工作流自动化平台开发的社区节点,提供了完整的阿里云 OSS(对象存储服务)集成功能。 阿里云 OSS 是一种安全、经济高效且高度可靠的云存储服务,支持存储和访问任意数量的数据。通过此节点,你可以在 n8n 工作流中无缝集成文件上传、下载、管理等功能。 ### 核心功能 - **🚀 高性能文件操作**:基于官方 ali-oss SDK,提供稳定可靠的文件操作 - **📁 完整的 CRUD 支持**:支持文件上传、下载、列表查询和删除操作 - **🔐 安全认证**:支持 Access Key 和自定义终端节点配置 - **📊 批量操作**:支持前缀过滤的批量对象管理 - **🎯 易于集成**:符合 n8n 标准,开箱即用 - **🌐 多区域支持**:支持阿里云所有 OSS 区域 ### 技术栈 - **n8n 框架**:[n8n-workflow](https://n8n.io/) - **阿里云 SDK**:[ali-oss](https://github.com/ali-sdk/ali-oss) - **开发语言**:TypeScript - **构建工具**:Gulp + TypeScript - **代码规范**:ESLint + Prettier ## 快速开始 ### 环境要求 - **n8n 版本**:>= 1.0.0 - **Node.js 版本**:>= 20.15 - **阿里云账户**:需要有效的 Access Key 和 OSS 存储桶 ### 安装步骤 1. **通过 n8n 社区节点安装** 按照 [n8n 社区节点安装指南](https://docs.n8n.io/integrations/community-nodes/installation/) 进行操作。 2. **通过 npm 安装** ```bash npm install n8n-nodes-alicloud-oss ``` 3. **重启 n8n 服务** ```bash # 如果使用 npm 安装的 n8n n8n start # 如果使用 Docker docker restart n8n ``` 4. **验证安装** 在 n8n 编辑器中搜索 "Alicloud OSS" 节点,应该能看到新增的节点。 ## 项目结构 ``` ├── /nodes/ # n8n 节点实现 │ └── /AlicloudOss/ # 阿里云 OSS 节点 │ ├── AlicloudOss.node.ts # 主节点实现 │ └── alicloud-oss.logo.svg # 节点图标 ├── /credentials/ # 凭据定义 │ └── AlicloudOssCredentialsApi.credentials.ts # 凭据配置 ├── /dist/ # 编译输出目录 ├── .eslintrc.js # ESLint 配置 ├── .prettierrc.js # Prettier 配置 ├── gulpfile.js # Gulp 构建配置 ├── package.json # 项目依赖和脚本 ├── tsconfig.json # TypeScript 配置 └── README.md # 项目文档 ``` ## 使用指南 ### 配置凭据 在使用节点之前,需要配置阿里云 OSS 凭据: 1. **获取阿里云凭据** - 登录 [阿里云控制台](https://ecs.console.aliyun.com/) - 创建或获取 Access Key ID 和 Access Key Secret - 创建 OSS 存储桶并记录区域信息 2. **在 n8n 中配置凭据**: | 字段名 | 描述 | 必填 | 示例值 | |------------------|----------------------------------------|------|---------------------------| | Access Key ID | 阿里云 Access Key ID | ✅ | LTAI4G*************** | | Access Key Secret| 阿里云 Access Key Secret | ✅ | 3yX9*************** | | 区域 | OSS 服务区域 | ✅ | oss-cn-hangzhou | | 存储桶 | OSS 存储桶名称 | ✅ | my-bucket | | 终端节点 | 自定义 OSS 终端节点(可选) | ❌ | oss-cn-hangzhou.aliyuncs.com | ### 支持的操作 | 操作 | 描述 | 用途场景 | |------------|------------------------------------|-----------------------------| | **上传** | 将文件上传到 OSS 存储桶 | 文件备份、数据存储 | | **下载** | 从 OSS 存储桶下载文件 | 文件获取、数据处理 | | **列出对象** | 列出存储桶中的对象(支持前缀过滤) | 文件管理、批量处理 | | **删除** | 从 OSS 存储桶删除指定对象 | 文件清理、存储空间管理 | ### 操作详细说明 #### 📤 上传操作 - **对象键**:文件在 OSS 中的完整路径(如:`documents/report.pdf`- **二进制属性**:包含文件数据的属性名称(默认:`data````typescript // 输入示例 { "data": { "filename": "report.pdf", "data": "binary file data" } } ``` #### 📥 下载操作 - **对象键**:要下载文件的完整路径 - **二进制属性**:下载数据的属性名称(默认:`data````typescript // 输出示例 { "data": { "filename": "report.pdf", "data": "binary file data", "mimeType": "application/pdf" } } ``` #### 📋 列出对象操作 - **前缀**(可选):过滤对象的前缀(如:`images/` 列出 images 文件夹下的文件) - **返回数量**:最多返回 1000 个对象 ```typescript // 输出示例 { "objects": [ { "name": "documents/report.pdf", "size": 1024, "lastModified": "2023-12-01T10:00:00.000Z" } ] } ``` #### 🗑️ 删除操作 - **对象键**:要删除文件的完整路径 ```typescript // 输出示例 { "deleted": true, "objectKey": "documents/report.pdf" } ``` ### 使用示例 **场景一:文档自动备份** ``` HTTP请求节点 → 文件处理 → Alicloud OSS上传 → 通知发送 ``` **场景二:批量文件处理** ``` Alicloud OSS列出对象 → 循环处理 → Alicloud OSS下载 → 数据处理 → Alicloud OSS上传 ``` **场景三:定时清理任务** ``` 定时触发 → Alicloud OSS列出对象 → 条件判断 → Alicloud OSS删除 ``` ## 开发命令 ### 构建和开发 - `npm run build` - 完整构建(TypeScript 编译 + 图标复制) - `npm run dev` - 开发模式,TypeScript 监听模式 - `npm run format` - 使用 Prettier 格式化代码 - `npm run lint` - 运行 ESLint 检查 - `npm run lintfix` - 自动修复 ESLint 问题 ### 代码质量 - `npm run prepublishOnly` - 发布前检查(构建 + lint) - `npm run publicPublish` - 发布到 npm(公开访问) ### 发布 ```bash # 发布新版本 npm version patch|minor|major npm run publicPublish ``` ## 部署选项 ### 本地开发环境 1. **克隆项目** ```bash git clone https://github.com/felix-liuyj/n8n-nodes-alicloud-oss.git cd n8n-nodes-alicloud-oss ``` 2. **安装依赖** ```bash npm install ``` 3. **开发模式** ```bash npm run dev ``` 4. **链接到本地 n8n** ```bash # 创建全局链接 npm link # 在 n8n 项目中链接 cd /path/to/n8n npm link n8n-nodes-alicloud-oss ``` ### 生产环境部署 1. **通过 npm 安装** ```bash npm install n8n-nodes-alicloud-oss ``` 2. **Docker 环境中安装** ```dockerfile FROM n8nio/n8n:latest RUN npm install n8n-nodes-alicloud-oss ``` 3. **通过 n8n 社区节点管理器** - 在 n8n 界面中安装社区节点 - 搜索 "n8n-nodes-alicloud-oss" - 点击安装并重启 n8n ## 配置参数 ### 凭据配置 | 参数名 | 类型 | 必填 | 描述 | 示例值 | |-----------------|---------|------|---------------------------|-------------------------------| | accessKeyId | string | ✅ | 阿里云 Access Key ID | LTAI4G*************** | | accessKeySecret | string | ✅ | 阿里云 Access Key Secret | 3yX9*************** | | region | string | ✅ | OSS 服务区域 | oss-cn-hangzhou | | bucket | string | ✅ | OSS 存储桶名称 | my-bucket | | endpoint | string | ❌ | 自定义 OSS 终端节点 | oss-cn-hangzhou.aliyuncs.com | ### 节点参数 #### 上传操作 | 参数名 | 类型 | 必填 | 描述 | 默认值 | |---------------|---------|------|-------------------------|--------| | objectKey | string | ✅ | 对象键(文件路径) | - | | binaryProperty| string | ❌ | 二进制数据属性名 | data | #### 下载操作 | 参数名 | 类型 | 必填 | 描述 | 默认值 | |---------------|---------|------|-------------------------|--------| | objectKey | string | ✅ | 对象键(文件路径) | - | | binaryProperty| string | ❌ | 输出二进制数据属性名 | data | #### 列出对象操作 | 参数名 | 类型 | 必填 | 描述 | 默认值 | |----------|---------|------|-----------------------------|--------| | prefix | string | ❌ | 对象前缀过滤器 | - | #### 删除操作 | 参数名 | 类型 | 必填 | 描述 | 默认值 | |----------|---------|------|-------------------------|--------| | objectKey| string | ✅ | 要删除的对象键(文件路径) | - | ## 兼容性 | 环境要求 | 最低版本 | 推荐版本 | 测试版本 | |---------------|------------|------------|-------------| | n8n | 1.0.0 | 最新版本 | 1.x | | Node.js | 20.15 | 20.x LTS | 20.15+ | | TypeScript | 5.0 | 5.8+ | 5.8.2 | ## 开发贡献 欢迎参与项目开发!请遵循以下步骤: 1. **Fork 项目** 2. **创建功能分支** (`git checkout -b feature/AmazingFeature`) 3. **提交更改** (`git commit -m 'Add some AmazingFeature'`) 4. **推送到分支** (`git push origin feature/AmazingFeature`) 5. **创建 Pull Request** **开发环境搭建**```bash # 克隆项目 git clone https://github.com/felix-liuyj/n8n-nodes-alicloud-oss.git cd n8n-nodes-alicloud-oss # 安装依赖 npm install # 开发模式 npm run dev # 构建项目 npm run build # 代码检查 npm run lint ``` ## 许可证 本项目基于 MIT 许可证开源。详细信息请查看 [LICENSE.md](LICENSE.md) 文件。 ## 联系方式 **作者**:Felix Liu (Cambria Tech) **邮箱**:felixliuyj@gmail.com **项目链接**:[https://github.com/felix-liuyj/n8n-nodes-alicloud-oss](https://github.com/felix-liuyj/n8n-nodes-alicloud-oss) --- **相关资源**- [n8n 官方文档](https://docs.n8n.io/) - [阿里云 OSS 文档](https://www.alibabacloud.com/help/zh/oss/) - [ali-oss SDK 文档](https://github.com/ali-sdk/ali-oss) - [n8n 社区节点开发指南](https://docs.n8n.io/integrations/creating-nodes/) <!-- 链接定义 --> [contributors-shield]: https://img.shields.io/github/contributors/felix-liuyj/n8n-nodes-alicloud-oss.svg?style=flat-square [contributors-url]: https://github.com/felix-liuyj/n8n-nodes-alicloud-oss/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/felix-liuyj/n8n-nodes-alicloud-oss.svg?style=flat-square [forks-url]: https://github.com/felix-liuyj/n8n-nodes-alicloud-oss/network/members [stars-shield]: https://img.shields.io/github/stars/felix-liuyj/n8n-nodes-alicloud-oss.svg?style=flat-square [stars-url]: https://github.com/felix-liuyj/n8n-nodes-alicloud-oss/stargazers [issues-shield]: https://img.shields.io/github/issues/felix-liuyj/n8n-nodes-alicloud-oss.svg?style=flat-square [issues-url]: https://github.com/felix-liuyj/n8n-nodes-alicloud-oss/issues [license-shield]: https://img.shields.io/github/license/felix-liuyj/n8n-nodes-alicloud-oss.svg?style=flat-square [license-url]: https://github.com/felix-liuyj/n8n-nodes-alicloud-oss/blob/master/LICENSE.md