Boto3 помещает результаты объекта в botocore.exceptions.ReadTimeoutError

Я установил два кластера ceph со шлюзом rados на узле для каждого из них. Чего я пытаюсь добиться, так это перенести все объекты из корзины «А» с конечной точкой в ​​моем кластере «1» в корзину «Б», до которой можно добраться из другой конечной точки в моем кластере «2». Это на самом деле не имеет значения для моей проблемы, но, по крайней мере, вы понимаете контекст.

Я создал скрипт на питоне, используя модуль boto3. Скрипт действительно простой. Я просто хотел положить предмет в ведро.

Соответствующая часть написана ниже:

 s3 = boto3.resource('s3',
                      endpoint_url=credentials['endpoint_url'],
                      aws_access_key_id=credentials['access_key'],
                      aws_secret_access_key=credentials['secret_key'],
                      use_ssl=False)

    s3.Object('my-bucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))

(hello.txt содержит только слово)

Допустим, этот сценарий написан и запускается с узла (который является узлом конечной точки radosgw) в моем кластере 1. Он хорошо работает, когда «endpoint_url» является узлом, с которого я запускаю сценарий, но он не работает, когда я m пытаюсь связаться с другой моей конечной точкой (radosgw, расположенной в другом узле в моем кластере «2»).

Я получил эту ошибку:

botocore.exceptions.ReadTimeoutError: Read timeout on endpoint URL

Странно то, что я могу создать ведро без ошибок:

s3_src.create_bucket(Bucket=bucket_name)
s3_dest.create_bucket(Bucket=bucket_name)

Я даже могу перечислить сегменты двух моих конечных точек.

У вас есть идеи, почему я могу делать почти все, но не помещать ни одного объекта во вторую конечную точку?

Я надеюсь, что это имеет смысл.


person user3561383    schedule 18.04.2019    source источник
comment
Это происходит только тогда, когда для объектов, у которых есть ключ? В смысле пытаетесь перезаписать?   -  person julian joseph    schedule 12.06.2019


Ответы (1)


В конечном итоге я обнаружил, что проблема связана не с boto, а с моим пулом ceph, который содержит мои данные.

Пул корзины был исправен, поэтому я мог создавать свои корзины, тогда как пул данных был неисправен, отсюда и проблема, когда я пытался поместить объект в корзину.

person user3561383    schedule 26.04.2019