如何从远程服务器直接将文件上传到Amazon S3?

Cor*_*ory 17 amazon-s3 amazon-ec2 amazon-web-services

是否可以从远程服务器上传文件到S3?

远程服务器基本上是基于URL的文件服务器.例如,使用http://example.com/1.jpg,它为图像提供服务.它没有做任何其他事情,也无法在此服务器上运行代码.

可以让另一台服务器告诉S3上传文件 http://example.com/1.jpg

           upload from http://example.com/1.jpg 
server -------------------------------------------> S3 <-----> example.com
Run Code Online (Sandbox Code Playgroud)

rea*_*ers 20

如果您无法在服务器上运行代码或执行请求,那么不,您不能这样做.您必须将文件下载到您拥有并从那里上传的服务器或计算机.

您可以在http://docs.amazonwebservices.com/AmazonS3/latest/API/APIRest.html上查看您可以在亚马逊S3上执行的操作.

检查REST和SOAP API的操作,您将看到无法为Amazon S3提供远程URL并让它为您抓取对象.所有PUT请求都要求将对象的数据作为请求的一部分提供.这意味着发起Web请求的服务器或计算机需要拥有数据.

我过去遇到过类似的问题,我想下载用户的Facebook缩略图并将其上传到S3以便在我的网站上使用.我这样做的方法是将图像从Facebook下载到我的服务器上的内存中,然后上传到Amazon S3 - 完整的东西花了不到2秒.上传到S3完成后,将存储桶/密钥写入数据库.

不幸的是,没有其他办法可以做到这一点.