Я хочу загрузить файл, полученный с URL-адреса http, непосредственно в корзину amazon s3, а не в локальную систему. Я запускаю python на 64-битной ОС Windows.

Я попытался предоставить URL-адрес корзины Amazon S3 в качестве второго аргумента функции urlretrieve python во время извлечения файла.

urllib.request.urlretrieve(url, amazon s3 bucket url)

Я ожидал, что он загрузит файл непосредственно в s3, однако он не работает с ошибкой filenotFound, которая после некоторых размышлений имеет смысл.

-1
j raj 3 Апр 2019 в 07:43

1 ответ

Лучший ответ

Похоже, вы хотите запустить команду на компьютере под управлением Windows (локальном или запущенном в Amazon EC2), которая скопирует содержимое страницы, идентифицированной URL-адресом, непосредственно в Amazon S3.

Это невозможно. Для Amazon S3 нет вызова API, который извлекает контент из другого места.

Вам нужно будет загрузить файл из Интернета, а затем загрузить его в Amazon S3. Код будет выглядеть примерно так:

import boto3
import urllib.request

urllib.request.urlretrieve('http://example.com/hello.txt', '/tmp/hello.txt')

s3 = boto3.client('s3')
s3.upload_file('/tmp/hello.txt', 'mybucket', 'hello.txt')
2
John Rotenstein 3 Апр 2019 в 11:32