给出可下载文件的URL,例如:
http://zannee-docs.s3.amazonaws.com/rockefeller-summary.pdf
有没有办法直接POST / PUT到S3?或者我有必要这样做:
# download the file
requests.get(url, stream=True)
# save the file locally
# upload the local file to S3
s3.upload_file()
如果有办法将其直接上传到S3(无需下载并重新上传到S3),我该怎么做?
答案 0 :(得分:3)
是的,但仅如果源URL也在S3中托管,并且您的S3密钥可以访问它。 (文档没有明确说明,但我认为源对象也需要存储在同一个区域。)
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html
由于您正在使用boto,因此您需要的特定API为boto.s3.key.Key.copy()
。
答案 1 :(得分:0)
可以将预先签名的URL直接用于PUT对象到S3。我不相信你可以用POST工作,因为POST必须对请求的主体进行编码,但也许有办法做到这一点。这个SO线程应该是有用的:
How to generate a temporary url to upload file to Amazon S3 with boto library?