get_bucket () дает «плохой запрос» для кодов S3, которые я не создал через Boto

Я использую Boto, чтобы попытаться получить ведро в Amazon S3, но он возвращает Bad Request, когда я использую get_bucket () для некоторых из ковшей. Я начинаю задаваться вопросом, является ли это ошибкой с Boto, так как я могу получить ведро с помощью get_all_buckets ().

>>> from boto.s3.connection import S3Connection >>> conn = S3Connection(S3_ACCESS_KEY, S3_SECRET_KEY) >>> buckets = conn.get_all_buckets() >>> buckets [<Bucket: mysite-backups>] >>> buckets[0] <Bucket: mysite-backups> >>> conn.get_bucket('mysite-backups') Traceback (most recent call last): File "<console>", line 1, in <module> File "/path/to/virtualenv/lib/python2.7/site-packages/boto/s3/connection.py", line 502, in get_bucket return self.head_bucket(bucket_name, headers=headers) File "/path/to/virtualenv/lib/python2.7/site-packages/boto/s3/connection.py", line 549, in head_bucket response.status, response.reason, body) S3ResponseError: S3ResponseError: 400 Bad Request >>> conn.create_bucket('mysite_mybucket') <Bucket: mysite_mybucket> >>> conn.get_bucket('mysite_mybucket') <Bucket: mysite_mybucket> 

Это, кажется, проблема, даже если я вхожу в систему с той же учетной записью пользователя, что и я использую учетные записи доступа и создаю их из консоли AWS.

Любая идея, почему это может произойти?

5 Solutions collect form web for “get_bucket () дает «плохой запрос» для кодов S3, которые я не создал через Boto”

Оказывается, проблема связана с регионом (я использовал Франкфурт). Два способа борьбы с ним:

  1. Откажитесь от Франкфурта (@andpei указывает, что в настоящее время есть проблемы ) и воссоздать ведро в другом регионе.

  2. Укажите регион, используя параметр «host» при подключении (спасибо @Siddarth):

     >>> REGION_HOST = 's3.eu-central-1.amazonaws.com' >>> conn = S3Connection(S3_ACCESS_KEY, S3_SECRET_KEY, host=REGION_HOST) >>> conn.get_bucket('mysite-backups') <Bucket: mysite-backups> 

    Здесь вы можете найти соответствующий регион.

Используйте подключение к региону при работе с ведрами в разных регионах.

Общее и простое решение, которое не связано с изменением региона или настройкой определенного хоста, находится по адресу https://github.com/boto/boto/issues/2916 . После некоторого редактирования:

Регион Франкфурта AWS (Ирландия и CN тоже, по-видимому) поддерживают только алгоритм подписи V4. (…)

В документации [s3] use-sigv4 = True вы можете добавить [s3] use-sigv4 = True в ваш файл ~/.boto или установить список os.environ для включения S3_USE_SIG_V4: os.environ['S3_USE_SIGV4'] = 'True' .

Добавить хост-узел s3 к подключению boto

conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, host=AWS_HOST)

Мне пришлось использовать комбинацию ответов EOL и seddonym – сначала я указал, что хотел бы использовать Sigv4 со следующим:

 os.environ['S3_USE_SIGV4'] = 'True' 

Затем, подключившись к ведру, я должен был указать хост, который казался немного глупым, но здесь идет:

 s3 = S3Connection('key id', 'access key', host='s3.eu-central-1.amazonaws.com') 

Обратите внимание, что это только для Франкфурта

  • Предварительно подписанные URL-адреса и x-amz-acl
  • Запрос dynamoDB с полем без хэш-ключа (с boto / python)
  • Обновление Atomic счетчика DynamoDB с Python / Boto
  • С помощью boto, как я могу назвать недавно созданный экземпляр EC2?
  • Boto - Как удалить набор записей из маршрута53 - Прошел, чтобы удалить набор записей ресурсов, но он не был найден
  • Django colcstatic boto broken pipe при большой загрузке файла
  • Использование Boto для определения того, какое устройство и объем EBS монтируются
  • Как мне перебрать все элементы в таблице DynamoDB с помощью boto?
  • Несогласованная SignatureDoesNotMatch Amazon S3 с django-трубопроводом, s3boto и хранилищами
  •  
    Interesting Posts for Van-Lav

    Построение Pandas DataSeries.GroupBy

    Как я могу проверить аргументы вызова, если они будут изменены с помощью unittest.mock

    регулярное выражение python: получить конечные цифры из строки

    authomatic: REQUEST устарел / Возвращенное состояние не совпадает с сохраненным состоянием

    Как соответствие регулярному выражению, если оно не содержит определенного слова?

    Длинные программы, использующие переключатель python -c

    Асинхронный запрос COMET с торнадо и прототипом

    создавать уникальные пули django

    Portscanner не работает должным образом, возможно, семантическая ошибка

    Pygame – перерисовывает пикселы определенного цвета для другого с помощью SurfArray (проблема среза массива)

    max второй элемент в кортежах python

    фантомной оси в изображениях eps, несмотря на то, что установлена ​​невидимая ось в matplotlib

    Есть ли какая-либо функция / библиотека python для вычисления биномиальных доверительных интервалов?

    как установить python-spidermonkey на windows

    Python: разделение строки юникода на границах слов

    Python - лучший язык программирования в мире.