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

寻求AWS EC2与S3共享文件夹的自动同步非定时任务替代方案

自动同步S3存储桶变更到EC2目录的优化方案

针对你不想用定时任务(怕资源浪费)、要自动感知S3变更同步到EC2的需求,推荐以下几个方案:

方案1:S3事件通知 + Lambda + SSM Run Command

这是事件驱动的无常驻进程方案,只有S3有变更时才触发同步:

  • 前提:EC2实例要预装SSM Agent(Amazon Linux系列默认自带),并且给EC2的IAM角色加上AmazonSSMManagedInstanceCore权限,让SSM能管控实例。
  • 操作步骤:
    1. 去S3桶的「事件通知」配置页,添加规则:选择对象创建、删除等你需要触发同步的事件类型,目标选Lambda函数。
    2. 写个简单的Lambda函数(Python/Node.js都行),调用SSM的send_command API,指定你的EC2实例ID,执行命令:aws s3 sync s3://my-bucket-with-images /var/www/images。
    3. 测试:往S3传个文件或者删个文件,看EC2的/var/www/images目录是不是自动同步了。
  • 优缺点:
    • 优点:完全事件触发,没变更时不占EC2资源;不用在EC2上跑常驻脚本。
    • 缺点:Lambda最长只能跑15分钟,如果桶里文件特别多,首次同步可能超时,得手动先跑一次全量同步;要确保EC2能访问SSM服务,VPC里的话可以配SSM VPC端点。

方案2:S3 File Gateway

把S3桶直接挂载成EC2的本地目录,实现实时双向同步:

  • 操作步骤:
    1. 在AWS控制台创建S3 File Gateway,部署到你的VPC里(可以用一台小规格EC2当网关载体)。
    2. 配置网关关联你的my-bucket-with-images桶,用已有的IAM角色做权限控制。
    3. 在EC2上用NFS或SMB协议挂载网关提供的共享目录到/var/www/images。
  • 优缺点:
    • 优点:EC2上操作目录和本地文件完全一样,S3和EC2的变更实时双向同步;不用写任何脚本代码。
    • 缺点:需要额外部署网关EC2,会占点资源;网关有额外计费(按存储量和请求次数算)。

方案3:inotify + SQS 轻量本地方案

适合不想依赖太多AWS服务的场景,用本地工具监听变更:

  • 操作步骤:
    1. 在EC2上装inotify-tools(Amazon Linux用yum install inotify-tools),写个脚本监听/var/www/images的本地修改,一旦有变动就执行aws s3 sync /var/www/images s3://my-bucket-with-images把本地变更推去S3。
    2. 配置S3事件通知到SQS队列,然后在EC2上跑个脚本监听SQS,收到S3变更的消息时,执行aws s3 sync s3://my-bucket-with-images /var/www/images拉取S3的变更。
    3. 把这两个脚本做成systemd服务,让它们开机自启常驻运行。
  • 优缺点:
    • 优点:不用额外AWS服务,成本低;双向同步都能覆盖。
    • 缺点:EC2上要跑两个常驻进程,会占少量CPU内存;SQS监听脚本要处理消息重复、幂等性问题,避免重复同步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:50:37