Существует не метод, поддерживаемый S3, который выполнит то, что вы пытаетесь сделать.
S3 не поддерживает тип запроса, который говорит, по существу, «перейдите к этому URL-адресу и все, что вы получите оттуда, сохраните его в моем ковше под следующим ключом».
Единственный вариант здесь - получить то, что вы хотите, а затем загрузить его. Если объекты большие, и вы не хотите выделять необходимое дисковое пространство, вы можете получить его по частям от источника и загрузить его по частям с помощью многостраничной загрузки ... или если вы пытаетесь сохранить пропускную способность где-нибудь, даже очень маленький экземпляр t1.micro
, расположенный в том же регионе, что и ведро S3, вероятно, даст вам очень приемлемую производительность для выполнения операции выборки и загрузки.
Единственное исключение из этого правила, где вы копируете объект из S3, S3, и объект находится под 5 ГБ. В этом случае, вы посылаете PUT
запрос на целевой ведро, сопровождающееся:
x-amz-copy-source: /source_bucket/source_object_key
Это не совсем «URL», и я предполагаю, что вы не означает, что копирование из ведра в ведро, где у вас есть оба ведра, или вы бы попросили это более прямо ... но это единственное, что S3 имеет то, что похоже на поведение, которое вы ищете вообще.
http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectCOPY.html
Вы не можете использовать подписанный URL здесь ... учетные данные, используемые для отправки PUT
запроса должны иметь разрешения как принести и магазин.
Я считаю, что этот вопрос является дубликатом, но в данный момент я не могу перенести палец на дубликат, поэтому ответ ниже. –
@ Michael-sqlbot Следующим может быть дубликат, о котором вы думаете, но я думаю, что текущий вопрос и ваш ответ более четко освещают тему. http://stackoverflow.com/questions/7586533/is-it-possible-to-upload-to-s3-directly-from-url-using-post/ –