Как загрузить файл из ведра S3 с помощью wget?

Я могу подтолкнуть некоторый контент к ведро S3 с моими учетными данными через инструмент S3cmd с s3cmd put contentfile 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? в локальный файл txt?

Ответ 1

Получил это... Если вы загружаете файл в ведро 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

Ответ 2

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

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

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

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

Вы должны иметь wget этот файл со следующим URL:

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

Ответ 3

Вы можете использовать команду:

wget --no-check-certificate --no-proxy 'http://your_bucket.s3.amazonaws.com/my-file.jpg'

Ответ 4

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

aws s3 presign s3://private_resource

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

Ответ 5

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

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

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

Спасибо

Ответ 6

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

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

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