将对象从远程资源放入Amazon S3

时间:2013-03-09 22:25:30

标签: amazon-web-services amazon-s3

我正在尝试找到一种方法将互联网中的某个对象放到Amazon 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");
});

2 个答案:

答案 0 :(得分:4)

如果源已在S3上的某个位置,您可以执行此操作,但不能用于其他资源。所以不,你做不了你的例子用例要求。

如果这样做有帮助,您可以将数据从URL移动到S3而无需在上传前完全下载一步。每个字节仍然必须通过你拥有的某台机器,但你可以GET然后一次把它丢去一块。

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

答案 1 :(得分:2)

这样的东西适用于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') ),
) );