Загрузите файл на s3 по адресу https s3 - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь скопировать объект из одной корзины s3 в мою корзину s3, но мне присваивается http-адрес файла, как этот;

* ** 1003 тысяча два *https://not -my-bucket.s3.amazonaws.com / 123456738160996-2019-03-23-eo_branch_cta_view-v2-cf5e81e668466de13406877ad681895f6fdd50f38ab7fdb48193d78210098b81-acZMLZ.csv.gz? Подпись = 12345678Hr3ght0cOPw7bLz% 2FJWM% 3D & AWSAccessKeyId = 123456 & Истекает = 1554017348

Если я выброшу этот браузер, я получу CSV, не беспокоясь вообще (примечание: я скрыл части реального URL, поэтому он не будет работать для вас).

Я использую API copyObject в узле со следующими параметрами:

var params = { Ведро: "я-букет", CopySource: "https://not -my-bucket.s3.amazonaws.com / 123456738160996-2019-03-23-eo_branch_cta_view-v2-cf5e81e668466de13406877ad681895f6fdd50f38ab7fdb48193dd648193d782100ZD3SBXB050DBXBXBXBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXFXXXXXXXXXXXXX5_5_4X0_5x060F060DF060DF060DF060DFX0605X5-WFX0605-WF-0-X-0-0 1554017348 » , Ключевые данные" };

Я получаю сообщение об ошибке: "InvalidArgument: неподдерживаемый параметр источника копирования."

Что я делаю не так ??

Ответы [ 2 ]

1 голос
/ 28 марта 2019

S3 не поддерживает использование предварительно подписанного URL (или любого другого URL) в качестве CopySource.Требуемое значение - /${bucket}/${key}, которое в данном случае равно /not-my-bucket/1234567381...acZMLZ.csv.gz (начальный https:// заменяется начальным слешем, .s3.amazonaws.com удален, ? и все, что следует за ним, удалены).

Но ... это все равно вряд ли сработает, если только пользователь, вызывающий copyObject(), не имеет разрешения на непосредственное чтение исходного объекта, что маловероятно ... в противном случае третья сторона не дала бы вам предварительную оценку.URL со знаком.

«Исправление» вашего запроса, как описано выше, вероятно, изменит ошибку на AccessDenied.

Без разрешения на непосредственное чтение объекта вы не можете использовать copyObject().Вам нужно будет загрузить файл, а затем загрузить его в корзину в два этапа.

0 голосов
/ 27 марта 2019

Вышеуказанная ошибка указывает, что заданный вами параметр CopySource неверен. Правильный способ задать параметр CopySource будет следующим:

var params = { Bucket: "your_bucket", CopySource: "/source_bucketname_url/sourceobjectkey"};

Примечание. Имя исходного сегмента и имя ключа исходного объекта должны быть разделены косой чертой (/).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...