Как использовать соединение Boto3 S3 с прокси?

#python #amazon-web-services #amazon-s3 #proxy #boto3

#python #amazon-веб-сервисы #amazon-s3 #прокси #boto3

Вопрос:

Я хочу написать скрипт Python для загрузки из корзины S3 с помощью Boto3. Мой код работает нормально, когда не используется прокси, но я должен запустить его через прокси. Я установил прокси в Boto3.client(config=) и получаю следующую ошибку.

Прокси устанавливается как:

 s3 = boto3.client('s3',
                      aws_access_key_id = usrkey,
                      aws_secret_access_key = sctkey,
                      region_name = 'eu-west-2',
                      config=Config(proxies={'http': '<proxy-server>:<port>'})
                      )
 

все равно появляется ошибка

     Traceback (most recent call last):
  File "C:UsersHelloAppDataLocalProgramsPythonPython38-32libsite-packagesurllib3connection.py", line 159, in _new_conn
    conn = connection.create_connection(
  File "C:UsersHelloAppDataLocalProgramsPythonPython38-32libsite-packagesurllib3utilconnection.py", line 61, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "C:UsersHelloAppDataLocalProgramsPythonPython38-32libsocket.py", line 918, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:
 

и в конце:

 botocore.exceptions.EndpointConnectionError: Could not connect to the endpoint URL:"<URL>".
 

Я могу подключиться с помощью WinSCP к AWS-S3 с помощью прокси, который работает нормально. Но появляется предупреждающее сообщение, которое я должен принимать каждый раз, нажимая ok. В чем здесь проблема, я не понимаю с Python.

Ответ №1:

Убедитесь, что у вас <proxy-server> есть имя хоста:

 config=Config(proxies={'http': 'example.com:port'}
 

Не URL-адрес:

 config=Config(proxies={'http': 'http://example.com:port'}