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