Amazon web services 在AmazonS3中放置来自远程资源的对象

Amazon web services 在AmazonS3中放置来自远程资源的对象,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我试图找到一种方法,将互联网上某个地方的对象放到AmazonS3,而不必先下载它,然后再上传到S3。这从根本上说是可能的吗 我正在使用Node.js SDK。理想情况下,我想这样做: s3.client.putObject({ Bucket: 'my-own-bucket', Key: 'myKey', BodyFromRemoteRecource: 'https://www.google.com/images/srpr/logo4w.png' }, function(err, da

我试图找到一种方法,将互联网上某个地方的对象放到AmazonS3,而不必先下载它,然后再上传到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");
});

如果源代码已经在S3上的某个地方,那么您可以这样做,但对于其他资源则不行。所以不,你不能按照你的例子用例的要求去做

如果有帮助的话,您可以将数据从URL移动到S3,而无需在上传前一步完全下载。每一个字节仍然需要通过你拥有的某台机器,但你可以一次获取并放入一个块


整个S3API都有文档记录,您可以检查每一个操作,并查看是否没有任何操作可以做到这一点。

类似的内容适用于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') ),
) );

您确定运行此脚本的计算机没有首先在本地获取远程资源吗?