如何将公开URL文件直接存储到S3对象中无需经过本地服务器
完全可以跳过你的自有服务器中转环节,你之前查到的InputStream搭配PutObjectRequest的方案即使不落地存储到本地磁盘,数据依然会流经你的服务器占用带宽,以下是几种可行的无中转方案:
方案1:使用AWS Lambda运行传输逻辑
将公开URL拉取、上传到S3的代码部署在Lambda上,传输过程仅在Lambda、源站、S3之间进行,完全不经过你的自有服务器。
- 可按需选择触发方式:API网关触发、定时触发、其他AWS服务事件触发均可
- 代码逻辑简单,仅需调用HTTP客户端拉取源URL数据流,直接传入S3 SDK的
PutObject方法即可,无需额外维护服务器资源,小文件传输场景几乎可使用Lambda免费额度完成 - 大文件传输建议搭配S3分片上传功能,避免Lambda执行超时(Lambda最长支持15分钟执行时长,可支持GB级文件传输)
方案2:使用AWS DataSync服务
如果是批量迁移大量公开URL资源到S3,可直接使用AWS官方DataSync服务,支持公开HTTP源作为数据源,直接同步到目标S3桶,全程由AWS官方服务处理传输,自带断点续传、数据校验、流量控制等功能,适合大规模迁移场景。
特殊场景最优方案
如果源文件本身存储在其他公开访问的AWS S3桶中,可直接调用S3的CopyObject API完成跨桶复制,数据完全在AWS内部传输,速度最快、成本最低。
内容的提问来源于stack exchange,提问作者shinzou
相关产品推荐
相关产品推荐

