阿里云ECS内网RPA自动化部署实践
时间:2026-06-12 17:40
基于安全合规需求,在阿里云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上搭建开发环境,不用配置数据库,也无需连接授权服务器。在本地开发机上编写好流程,打包导出成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调用
https://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自动检测新版本并下载,财务同事完全无感知。
运行效果
上线三个月后的数据:

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