2013-03-09 72 views
2

我试图找到一种方法,可以将互联网中的某个对象放到Amazon S3中,而无需先下载它,然后将其上传到S3。它从根本上可能吗?从亚马逊S3中的远程资源中放入对象

我正在使用Node.js SDK。理想情况下,我想要做这样的事情:

s3.client.putObject({ 
    Bucket: 'my-own-bucket', 
    Key: 'myKey', 
    BodyFromRemoteRecource: 'https://www.google.com/images/srpr/logo4w.png' 
}, function(err, data) { 
    if (err) 
    console.log(err) 
    else 
    console.log("Successfully uploaded data to myBucket/myKey"); 
}); 

回答

4

如果源已经在S3上的某个地方,但不能用于其他资源,则可以这样做。所以不,你不能做你的例子用例所要求的。

您可以将数据从URL移动到S3,而无需在上传之前完全下载它,如果这会有所帮助的话。每个字节仍然需要通过某台机器,但是您可以先GET,然后再将其放入一个块中。

整个S3 API记录在here中,您可以检查每个操作并查看没有任何操作会执行此操作。

1

像这样的事情对我的作品与PHP2 SDK:

$aws_transfer = $s3->PutObject(array(
    'Bucket' => 'bucket', 
    'Key' => $unique_file_name, 
    'Body' => \Guzzle\Http\EntityBody::factory(file_get_contents('http://www.example.com/file.flv')), 
)); 
+3

确定运行此脚本不获取远程资源本地第一机? – Mohsen 2013-04-12 19:36:09