Как я могу загрузить файл из корзины S3 с помощью wget?

Я могу отправить некоторый контент в корзину S3 с моими учетными данными через инструмент S3cmd с s3cmd, поместив файл содержимого S3://test_bucket/test_file

Вопрос в том, что мне нужно загрузить содержимое из этой корзины на другие компьютеры, на которых не установлен s3cmd, НО на них установлен wget.

когда я пытаюсь загрузить какой-либо контент из своей корзины с помощью wget, я получаю следующее:

 https://s3.amazonaws.com/test_bucket/test_file
--2013-08-14 18:17:40--  `https`://s3.amazonaws.com/test_bucket/test_file
Resolving s3.amazonaws.com (s3.amazonaws.com)... [ip_here]
Connecting to s3.amazonaws.com (s3.amazonaws.com)|ip_here|:port... connected.
HTTP request sent, awaiting response... 403 Forbidden
`2013`-08-14 18:17:40 ERROR 403: Forbidden.

Я вручную сделал это ведро общедоступным через веб-консоль Amazon AWS.

Вопрос: как я могу загрузить контент из корзины S3 с помощью wget? в локальный текстовый файл?


person Becks    schedule 14.08.2013    source источник
comment
Примечание для других: мне пришлось заключить URL-адрес S3 в кавычки, чтобы он работал. В противном случае я получил 403 Forbidden. например wget "https://s3.amazonaws.com/test_bucket/test_file". Срок действия наших URL-адресов истекает, и в них есть некоторые хитрости для аутентификации.   -  person Joshua Pinter    schedule 10.08.2020


Ответы (9)


Вы должны иметь доступ к нему с URL-адреса, созданного следующим образом:

http://{bucket-name}.s3.amazonaws.com/<path-to-file>

Теперь предположим, что ваш путь к файлу s3:

s3://test-bucket/test-folder/test-file.txt

Вы должны иметь возможность получить этот файл со следующим URL-адресом:

http://test-bucket.s3.amazonaws.com/test-folder/test-file.txt

person Amar    schedule 14.08.2013
comment
обратите внимание, что вы используете протокол HTTP, и мне предоставляется URL-адрес HTTPS из консоли управления Amazon ... как HTTPS меняет ситуацию? - person Becks; 15.08.2013

  1. Перейти в консоль S3

  2. Выберите свой объект

  3. Нажмите «Действия с объектом».

  4. Выберите «Скачать как».

  5. Используйте правую кнопку мыши, чтобы «Копировать адрес ссылки».

  6. Затем используйте команду:

    wget --no-check-certificate --no-proxy 'http://your_bucket.s3.amazonaws.com/your-copied-link-address.jpg'

person tiagomatos    schedule 18.05.2015
comment
Прекрасно работает! Нет необходимости устанавливать s3cmd или другой CLI :) - person max kaplan; 09.08.2017
comment
HTTP-запрос отправлен, ожидается ответ... 403 Запрещено - person JimmyTheCode; 18.03.2021

Понятно ... Если вы загрузите файл в корзину S3 с помощью S3CMD с общедоступным флагом --acl, тогда можно будет легко загрузить файл с S3 с помощью wget ...

Вывод: чтобы загрузить с помощью wget, сначала нужно загрузить контент в S3 с помощью s3cmd put --acl public --guess-mime-type <test_file> s3://test_bucket/test_file

в качестве альтернативы вы можете попробовать:

s3cmd setacl --acl-public --guess-mime-type s3://test_bucket/test_file

обратите внимание на флаг setacl выше. ЭТО сделает файл в s3 общедоступным, после чего вы сможете выполнить wget http://s3.amazonaws.com/test_bucket/test_file

person Becks    schedule 16.08.2013

AWS cli имеет команду «presign», которую можно использовать для получения временного общедоступного URL-адреса для частного ресурса s3.

aws s3 presign s3://private_resource

Затем вы можете использовать wget для загрузки ресурса, используя предварительно подписанный URL-адрес.

person beevor    schedule 03.08.2017
comment
ОШИБКА 403: Запрещено. - person user2568374; 26.03.2019
comment
Работает отлично!!! Это дает мне http-путь, который я могу использовать в wget для возобновления загрузки файла. Спасибо!!! - person Anton Danilchenko; 07.02.2020
comment
У меня также была ошибка FORBIDDEN в прошлый раз, когда я пытался ее использовать. И нашел гораздо лучший способ сделать это с помощью команды aws s3 cp, как я описал в своем ответе (см. выше или ниже) - person Anton Danilchenko; 14.04.2020

У меня была такая же ситуация пару раз. Самый быстрый и простой способ загрузить любой файл с AWS с помощью CLI — это следующая команда:

aws s3 cp s3://bucket/dump.zip dump.zip

Файл загружается намного быстрее, чем через wget, по крайней мере, если вы находитесь за пределами США.

person Anton Danilchenko    schedule 14.04.2020

У меня была такая же ошибка, и я решил ее, добавив правило входящих групп безопасности:

Введите HTTPS через порт 443 на мой IP-адрес (поскольку я единственный, кто имеет к нему доступ) для подсети, в которой находился мой экземпляр.

Надеюсь, это поможет всем, кто забыл включить это

person Hilmi Marzuqi    schedule 07.08.2019

Пожалуйста, убедитесь, что разрешение на чтение было предоставлено правильно.

Если вы не хотите вводить какую-либо учетную запись/пароль, просто с помощью команды wget без пароля, убедитесь, что разрешение соответствует следующему параметру.

По Amazon S3 -> Сегменты -> Разрешения - Редактировать Проверить объект для всех (общий доступ) и сохранить изменения.такая настройка разрешений - снимок экрана

или выберите объект и перейдите в Действия -> Сделать общедоступным, сделайте то же самое в настройках разрешений.

person ZoomRui    schedule 10.06.2021

если у вас нет доступа для установки клиента aws на вашем компьютере с Linux, попробуйте метод ниже.

  • попал в ведро и нажмите кнопку «Загрузить как». скопируйте сгенерированную ссылку.
  • выполнить команду ниже

    wget --no-check-certificate --no-proxy --user=имя пользователя --ask-password -O "URL-адрес загрузки"

Спасибо

person Dino    schedule 08.05.2019

вы сделали бакет общедоступным, вам также необходимо сделать общедоступным объект. Кроме того, команда wget не работает с адресом S3://, вам необходимо найти URL-адрес объекта в веб-консоли AWS.

person John    schedule 10.06.2021
comment
Я рекомендую отказаться от риторических вопросов в ответах. Они рискуют быть неправильно понятыми как не ответ вообще. Вы пытаетесь ответить на вопрос вверху этой страницы, не так ли? В противном случае удалите этот пост. - person Yunnosch; 10.06.2021
comment
Пожалуйста, сформулируйте это как объясненный условный ответ, чтобы избежать впечатления, что вы задаете уточняющий вопрос вместо ответа (для которого вместо ответа следует использовать комментарий, сравните meta.stackexchange.com/questions/214173/). Например, если ваша проблема ..., то решение состоит в том, чтобы .... потому что .... . - person Yunnosch; 10.06.2021