阿里云 ECS 内网 RPA 自动化部署实践

作者:技术拾光时间:2026-06-13 06:32:08浏览:172

基于安全合规需求,在阿里云ECS无公网VPC内部署RPA自动化系统。选用支持打包EXE离线运行的工具,流程本地开发后直接部署至内网节点,通过内网API和云监控定时触发,财务同事双击即可执行税务申报自动化,数据全程本地保存,实现一人偶尔查看日志即可完成月度申报。

为什么非得在内网跑 RPA? 去年接手公司税务自动化项目时,遇到的第一个阻力不是技术问题,而是安全合规。财务部提了三条红线:税务数据不能出内网,不能依赖外部 SaaS 服务,部署方案要简单,财务同事自己能直接上手用。这三条直接把市面上大多数云端 RPA 方案筛选掉了。试过某知名国产 RPA 的企业版,报价六位数起步,而且必须连他们的管控平台,数据要走公网同步——财务总监听完直接否决。 最后决定自己搭。选型阶段对比了四五款工具,最终锁定了一款支持内网离线使用、能打包导出 EXE、数据全程本地保存的方案。后文会详细说为什么选它。

内网 RPA 自动化架构设计

部署架构本身很简单,核心就两层:
┌─────────────────────────────────────┐
│ 阿里云 ECS(内网 VPC,无公网 IP)    │
│ ┌─────────────┐  ┌─────────────┐   │
│ │ Windows     │  │ RPA 自动化  │   │
│ │ Server      │  │ 执行节点    │   │
│ │ (财务跳板) │  │ (定时任务) │   │
│ └─────────────┘  └─────────────┘   │
│                ↑                    │
│ ┌─────────────┐                    │
│ │ 阿里云 OSS  │ ← 报表输出存储     │
│ │ (内网端点)│                    │
│ └─────────────┘                    │
└─────────────────────────────────────┘
关键设计点在于:ECS 实例放在无公网 IP 的私有子网,通过堡垒机跳转管理;RPA 流程包提前在开发机打包好,通过内网上传部署;执行日志和输出报表写入阿里云 OSS 内网端点,财务同事通过内部系统下载;定时触发走阿里云云监控的内网 API 调用,不依赖外部定时服务。

ECS 环境准备

实例选型

选的是 ecs.g7.large(2 核 8G),Windows Server 2022 数据中心版。为什么不选更高配?RPA 本身并不吃 CPU,但内存要留够——浏览器自动化场景下,Chrome 开十几个标签是常态。实测 8G 内存跑三个并发流程,稳定不崩。

网络配置

VPC 网段规划:VPC CIDR 设为 172.16.0.0/16,私有子网 172.16.1.0/24(无公网路由),堡垒机子网 172.16.2.0/24(有公网 EIP)。安全组规则只开放两部分:堡垒机子网到私有子网的 3389(RDP),以及私有子网到 OSS 内网端点的 443。拒绝所有出向公网连接。

系统初始化

登录 ECS 后,先装基础环境:
# 安装 Chrome(RPA 自动化大多基于浏览器)
# 下载企业版离线安装包,通过堡垒机 SCP 传进去
chrome_installer.exe --system-level --silent --install

# 关闭 Windows 自动更新(避免执行期间重启)
reg add "HKLMSOFTWAREPoliciesMicrosoftWindowsWindowsUpdateAU" /v NoAutoUpdate /t REG_DWORD /d 1 /f

# 配置高性能电源计划(防止休眠导致流程中断)
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c

RPA 工具选型与部署

选型过程

列了张需求清单,逐条打分: 阿里云 ECS 内网 RPA 自动化部署实践 最终选定的这款工具,最打动人的是部署方式:不用在 ECS 上装开发环境,不用配数据库,不用连授权服务器。在本地开发机把流程编好,打包导出成 EXE,直接丢到 ECS 上,财务同事双击就能跑。

流程打包与部署

开发阶段在本地完成,流程涉及登录电子税务局、自动填写增值税申报表、截图保存申报结果、生成 Excel 汇总报表。打包配置要点如下:
# 打包参数(工具界面配置后自动生成)
output: 税务申报自动化.exe
include_runtime: true   # 自带运行时,目标机零依赖
encryption: true        # EXE 加密,防止反编译
auto_update: true       # 支持在线推送更新
trigger_config:
  api_endpoint: /run/tax
  schedule: "0 9 1 * *"  # 每月1号上午9点定时执行
打包后的 EXE 约 180MB,通过堡垒机 SCP 传到 ECS:
scp -J bastion@eip 税务申报自动化.exe admin@172.16.1.10:C:/RPA/

内网触发方案

ECS 没公网 IP,不能用外部定时服务。搭了两套触发机制。 方案一:阿里云云监控内网 HTTP 调用。
# 部署在 ECS 上的轻量触发服务(Flask)
from flask import Flask
import subprocess

app = Flask(__name__)

@app.route('/run/tax', methods=['POST'])
def run_tax():
    # 调用打包的 EXE
    subprocess.Popen(['C:/RPA/税务申报自动化.exe', '--headless'])
    return {'status': 'started'}

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)
云监控配置定时任务,每月 1 号 09:00 通过内网 HTTP 调用 http://172.16.1.10:8080/run/tax。 方案二:钉钉/飞书机器人回调(可选)。财务总监想手动触发时,在钉钉群里发指令。利用这款工具自带的 Agent 功能,对接了钉钉机器人:钉钉消息 → 内网回调 → ECS 上的 EXE 执行,执行结果截图自动回传钉钉群。配置时用的是自接 DeepSeek API,费用按实际调用量走,比买 SaaS 套餐便宜得多。

内网 RPA 自动化踩坑记录

坑 1:Chrome 版本兼容性。RPA 工具自带的浏览器驱动和 ECS 上手动装的 Chrome 版本对不上,导致元素定位失败。解决:用工具自带的“本地智能生成”功能重新抓取元素路径,它会根据当前浏览器版本自动生成稳定的 XPath,不用手动改代码。 坑 2:OSS 内网端点域名解析。一开始写死 OSS 外网域名,结果 ECS 没公网,上传报表失败。解决:换成 OSS 内网端点 oss-cn-hangzhou-internal.aliyuncs.com,同时给 ECS 实例绑定 OSS 的 VPC 端点。 坑 3:Windows 会话 0 隔离。RPA 流程作为后台服务跑时,Chrome 弹窗无法截图,UI 自动化失效。解决:不用 Windows Service 方式启动,改用计划任务(Task Scheduler)配置“只在用户登录时运行”,配合堡垒机保持 RDP 会话存活。或者直接用这款工具的 API 触发模式,它内部处理了会话隔离问题。 坑 4:EXE 更新分发。流程改了十几次,每次手动传 EXE 到 ECS 太烦。解决:开启打包时的在线推送更新功能。开发机重新打包后,EXE 自动检测新版本并下载,财务同事完全无感知。

运行效果

上线三个月后的数据: 阿里云 ECS 内网 RPA 自动化部署实践 财务总监的评价很实在:“以前月底三个人加班,现在一个人偶尔看看日志就行。” 内网 RPA 自动化的核心难点从来不是技术多复杂,而是选型阶段就要想清楚部署约束:能不能离线跑?能不能零依赖分发?数据能不能不出域?后期更新麻不麻烦?我们最后用的这款工具,在这几点上确实省了不少事。它支持打包导出 EXE、内网离线使用、数据本地保存、API 触发和定时执行,对个人开发者、小团队、中小企业来说,免费就能用,不用走采购流程。 如果你也在找内网 RPA 自动化的落地方案,建议把“部署友好度”放在选型权重的前三位。工具再强,部署不进去、财务同事不会用,都是白搭。