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

2019-05-12 04:58发布

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

远程服务器基本上是一个基于URL文件服务器。 例如,使用http://example.com/1.jpg ,它服务的图像。 它没有做任何事情,不能在此服务器上运行代码。

有可能在另一台服务器,告诉S3从上传文件http://example.com/1.jpg

           upload from http://example.com/1.jpg 
server -------------------------------------------> S3 <-----> example.com

Answer 1:

如果你不能在服务器上运行代码或执行请求的话,不,你不能做到这一点。 你将不得不下载文件到您自己的服务器或计算机,并从那里上传。

你可以看到的操作,你可以在Amazon S3上执行http://docs.amazonwebservices.com/AmazonS3/latest/API/APIRest.html

检查操作的REST和SOAP API,您会看到有没有办法让Amazon S3的远程URL,并把它抓住对象为你们俩。 所有PUT请求需要的对象的数据将作为请求的一部分提供。 这意味着正在启动web请求都需要有数据的服务器或计算机。

我曾在这里我想下载我的用户的Facebook的缩略图,并把它们上传到S3为我的网站上使用了过去类似的问题。 我做的方式,它是从Facebook的图像下载到记忆我的服务器上,然后上传到亚马逊S3 - 全事情了不到2秒。 上传到S3完成后,写桶/关键的数据库。

不幸的是有没有其他办法做到这一点。



Answer 2:

我想提供的建议是相当不错的,你可以的SCP文件S3桶。 给PEM文件将是一个密码验证少,通过PHP文件,你可以验证扩展。 PHP文件可以通过文件,作为参数传递给SCP命令。

这种解决方案的唯一的问题是,你必须有你的实例在AWS。 如果你的网站在其他托管服务提供商托管您不能使用此解决方案,您要上传文件直接到S3桶。



Answer 3:

从技术上讲这是可能的, 使用AWS签名版本4 ,假设你的remote server是在下面的图片中的客户,你可以在主服务器准备一个表格,并发送表单字段到远程服务器,为它curl它。 详细的例子在这里 。



Answer 4:

你可以从终端使用scp命令。

1)使用终端,去的地方那里是要传送到服务器文件

2)输入:

scp -i yourAmazonKeypairPath.pem  fileNameThatYouWantToTransfer.php ec2-user@ec2-00-000-000-15.us-west-2.compute.amazonaws.com:

NB你从EC2网站得到了您的ec2blablbla东西之前添加“EC2用户@”! 这是这样一个挑剔的错误!

3)你的文件将被上传和进度将被显示。 当它是100%,你做!



文章来源: How to upload files directly to Amazon S3 from a remote server?