Выполнение запроса PUT для корзины AWS S3 в Python - PullRequest
0 голосов
/ 27 сентября 2019

Я использую открытый и закрытый ключи через свою учетную запись пользователя IAM для доступа к корзине S3, и я использовал urllib для выполнения запроса PUT;В настоящее время я пытаюсь использовать библиотеку запросов.Однако было бы предпочтительнее использовать библиотеку urllib.Это иногда дает мне сообщение об ошибке, а иногда ничего не говорит мне.Есть ли способ, чтобы он всегда говорил мне, в чем ошибка, или это просто, как работает Amazon?

Я попытался изменить заголовки, и у меня есть Хост, Длина контента, Контент-MD5, Тип контента, Пользователь-агент, X-Amz-Content-Sha256, X-Amz-Date,Авторизация в моем словаре.Есть ли что-то из этого чрезмерное или я что-то упустил?Я следую почти всему, что Amazon предоставляет в своих примерах сценариев.

Что-то интересное, что я заметил, это то, что, когда я включаю заголовок «Expect», установленный в «100-continue», терминал выводит ошибку, где часть его говорит:

  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", line 603, in urlopen
    chunked=chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/urllib3/connectionpool.py", line 355, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 1244, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/http/client.py", line 1290, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)

Означает ли это, что запросы автоматически разделяют мои данные?Как мне заставить его не делать этого?Есть так много разных факторов, но все, что я получаю, это Ошибка 400 каждый раз.Должно ли я использовать hexdigest () вместо digest () для хэша полезной нагрузки и дайджеста md5?мой хэш полезной нагрузки и дайджест md5 должны быть закодированы в base64?Это только закодировано в заголовках, но не в подписи, или это наоборот?Я не понимаю проблему, и сейчас я просто надеюсь распечатать сообщения об ошибках, чтобы я мог найти реальную проблему.

...