You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS服务将S3中新上传的文件推送至FTP/SFTP服务器?

用AWS内部服务实现S3文件自动推送至FTP的方案

完全可以通过AWS内部服务实现这个需求,核心思路是用S3事件触发Lambda执行FTP上传,以下是具体实现方案:

核心组件与流程

  • S3事件通知:作为触发源,当符合路径格式的新文件上传到S3时,自动触发后续操作
  • AWS Lambda:负责完成从S3读取文件、上传至FTP服务器的核心逻辑
  • (可选)AWS EventBridge:作为兜底机制,定时扫描补传遗漏的文件

1. 配置S3事件通知

针对你的路径模式s3-bucket/some_path/yyyymm/yyyymmdd/file_yyymmdd.csv.gz,在S3控制台的目标存储桶中配置事件通知:

  • 设置触发条件为「对象创建(全部)」
  • 配置对象键过滤规则:前缀填some_path/,后缀填.csv.gz,或者用更精准的过滤表达式匹配日期格式(比如some_path/[0-9]{6}/[0-9]{8}/file_[0-9]{8}\.csv\.gz)
  • 选择触发目标为「Lambda函数」,关联你后续创建的Lambda函数

2. 编写Lambda上传逻辑

在Lambda中编写代码实现FTP上传,以Python为例:

  • 用boto3库读取S3中的目标文件内容
  • 用ftplib(普通FTP)或paramiko(SFTP)库连接FTP服务器并上传文件
  • 敏感信息(FTP地址、端口、账号密码)不要硬编码,建议存在AWS Secrets Manager中,Lambda通过IAM权限读取该密钥

注意事项:

  • 给Lambda配置正确的IAM权限:允许读取触发事件对应的S3对象,允许访问Secrets Manager(如果使用),以及网络访问权限(如果FTP在公网,Lambda需配置公网访问;如果是内网,要将Lambda部署到VPC私有子网并配置NAT网关)
  • 根据文件大小调整Lambda的超时时间(最大15分钟),大文件建议采用分块上传逻辑
  • 添加异常捕获和日志记录,利用CloudWatch Logs排查上传失败问题

3. 可选:EventBridge定时补传

如果担心S3事件触发遗漏,可以配置EventBridge定时任务(比如每日凌晨执行):

  • 任务触发Lambda函数,扫描S3中指定日期路径下的文件
  • 检查该文件是否已成功上传至FTP(可通过记录上传状态到DynamoDB或FTP服务器文件列表判断)
  • 对未上传的文件执行补传操作

内容的提问来源于stack exchange,提问作者c0ng111

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:55:26