如何将文件从Amazon EC2服务器上传到S3存储桶?

将文件从EC2 Web服务器上传到S3存储桶以进行内容传送的默认方式是什么?

答案是相当依赖于目的。 例如,如果您的EC2实例正在运行PHP应用程序,那么使用PHP-SDK将是最佳路线。 某些应用程序可能会发现将S3存储桶安装为本地文件系统(例如S3保险丝)非常有用。

但是,如果你只是试图通过shell从EC2上传到S3,我会推荐Tim Kay的aws脚本。 它是一个自包含的perl脚本,可以在没有安装的情况下运行,或者可以安装以设置别名函数。 使用此脚本将文件上载到现有存储桶达到以下内容:

s3put bucket_name/filename.ext /path/to/local/file/name.ext 

它支持AWS的大部分function,并且在其错误消息中有足够的冗余以使debugging问题相当容易。

你可以使用s3cp工具。 这是一个类似于scp的命令。 有关下载和文档,请参阅http://www.beaconhill.com/opensource/s3cp.html和http://aws.amazon.com/code/Java/3124

安装完毕后,你可以拷贝到S3:s3cp local-file s3:// bucket / object [/]

这里有一个简单的例子来说明直接上传到S3

http://sente.cc/upload_to_s3.html

码:

 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <h3>refresh the page after you've submitted to see your new image</h3> <div style="width:300px"> <form action="http://s3.amazonaws.com/dev.sente" method="post" enctype="multipart/form-data"> <fieldset> <input type="hidden" name="acl" value="public-read" /> <br /> <i>name of key:</i><input type="text" name="key" readonly="true" value="image.jpg" /> <br /> <input name="file" type="file" /> <br /> <input name="submit" value="Upload" type="submit" /> </fieldset> </form> </div> <br> <a href="http://s3.amazonaws.com/dev.sente/image.jpg">http://s3.amazonaws.com/dev.sente/image.jpg</a> <br> <a href="http://s3.amazonaws.com/dev.sente/image.jpg"><img src="http://s3.amazonaws.com/dev.sente/image.jpg"></a> </a> </body> </html> 

从我的答案复制到类似的问题 – 在这里

一般来说,如果你将文件从应用程序上传到S3,以便设置一个用于该应用程序的CDN,那么你应该首先查看该应用程序是否已经没有这个function或者一个插件去做。 如果你拿WordPress的例子有W3的总caching插件,为您处理这个很好。 这当然是用PHP编写的,必要时使用AWS API调用来处理上传/删除操作。

如果您正在编写自己的应用程序,那么我会寻找能够协助与AWS通信的库。 对于Python来说,您可能会想看一下Boto ,它允许您无缝地与AWS API进行交互。 您也可以随时查看Amazon本身,获取有关您可以使用的其他SDK API的信息。

通过HTTP,就像从其他任何地方上传到S3一样。