2013-03-09 2 views
2

Я пытаюсь найти способ разместить объект, находящийся где-то в Интернете, до Amazon S3, не загружая его сначала, а затем загружая его на S3. Возможно ли это в принципе?Поместить объект из удаленного ресурса в Amazon S3

Я использую SDK Node.js. В идеале я хочу сделать что-то вроде этого:

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 без полной загрузки его на один шаг перед загрузкой, если это поможет. Каждому байту все равно придется пройти через какую-нибудь машину, но вы можете ПОЛУЧИТЬ, а затем ПОПУЛЯТЬ ее куском за раз.

Весь документ S3 задокументирован 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

Смежные вопросы