22

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

远程服务器基本上是一个基于 URL 的文件服务器。例如,使用http://example.com/1.jpg,它提供图像。它不执行任何其他操作,也无法在此服务器上运行代码。

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

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

4 回答 4

24

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

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

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

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

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

于 2012-05-08T08:32:01.183 回答
1

我认为提供的建议非常好,您可以将文件 SCP 到 S3 Bucket。提供 pem 文件将是一种无密码身份验证,通过 PHP 文件您可以验证扩展。PHP 文件可以将文件作为参数传递给 SCP 命令。

此解决方案的唯一问题是,您的实例必须在 AWS 中。如果您的网站托管在其他托管服务提供商中并且您尝试将文件直接上传到 S3 存储桶,则无法使用此解决方案。

于 2015-09-11T13:39:31.323 回答
1

从技术上讲,使用 AWS Signature Version 4是可能的,假设您remote server是下图中的客户,您可以在主服务器中准备一个表单,然后将表单字段发送到远程服务器,供其使用curl。详细的例子在这里

使用 POST 请求上传 Amazon S3

于 2015-09-29T22:04:43.387 回答
-4

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

1)使用终端,转到您要传输到服务器的文件的地方

2)输入:

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

注意在您从 Ec2 网站获得的 ec2blablbla 内容之前添加“ec2-user@”!!这是一个如此挑剔的错误!

3)您的文件将被上传并显示进度。当它是 100% 时,你就完成了!

于 2013-08-08T21:11:38.443 回答