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

如何从EC2实例无SSH上传文件至S3?附Mac端上传示例

从Mac上传文件到S3及EC2直接传S3的实用方案

首先,你贴的Mac上传S3的代码是完全可行的,我帮你整理成更规范的格式:

import boto3
s3 = boto3.resource('s3', region_name="us-west-1")
s3.meta.client.upload_file('/User/gantao/amz.jpg', 'gantao_created', 'amz.jpg')

当然有无需SSH连接EC2实例,直接让EC2上传文件到S3的方法!给你分享几种常用且安全的方案:

  • 通过EC2用户数据自动执行上传:在启动EC2实例时,配置用户数据(User Data),让实例启动后自动运行上传命令。比如用AWS CLI的话,用户数据可以这样写:
#!/bin/bash
# Amazon Linux 2默认预装AWS CLI,其他系统可自行添加安装命令
aws s3 cp /path/to/ec2/local/file s3://your-target-bucket/desired-path/

⚠️ 关键提醒:一定要给EC2实例绑定IAM角色,并赋予该角色s3:PutObject(必要时加上s3:ListBucket)权限,这样实例无需存储敏感的AWS Access Key就能访问S3,完全符合AWS安全最佳实践。

  • 在EC2上部署Python脚本自动运行:和你Mac上的逻辑类似,把上传脚本放在EC2实例里,通过用户数据设置成启动时执行,或者配置成systemd服务实现定时/触发式运行。示例代码:
import boto3
# 绑定IAM角色后无需手动配置凭证,boto3会自动获取实例权限
s3 = boto3.resource('s3', region_name='us-west-1')
s3.meta.client.upload_file('/ec2/local/path/your-file.jpg', 'your-bucket-name', 'uploaded-file.jpg')
  • 利用SSM Run Command远程执行上传:如果你不想预先在EC2里配置脚本,也可以用AWS Systems Manager的Run Command功能,直接在AWS控制台或通过CLI发送上传命令到EC2实例,全程无需SSH连接。前提是EC2实例已安装SSM Agent并有权限接收SSM命令。

  • 开启S3 Transfer Acceleration优化速度:如果EC2实例和S3桶不在同一区域,开启S3的Transfer Acceleration功能后,上传时指定加速端点就能提升传输速率。比如AWS CLI命令可以加上--endpoint-url https://your-bucket.s3-accelerate.amazonaws.com。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:42:33