2015-11-02 6 views
-1

Я нахожу расстраивающее неправильное совпадение между официальной документацией boto3 (https://boto3.readthedocs.org/en/latest/reference/services/s3.html#S3.Bucket.create) и тем, что возвращается на практике.Библиотека Python boto3 s3 возвращает различные словари в официальную документацию

Просто убедитесь, что я использую boto3 1.2.1 и botocore 1.3.2 (оба установлены вместе с пипсом).

Я специально говорю о создании ведра с использованием boto3.Session метода:

import boto3 
session = boto3.Session(region_name = 'us-west-2', \ 
        aws_access_key_id = 'AAA', \ 
        aws_secret_access_key = 'BBB') 
s3 = session.resource('s3') 
bucket = s3.Bucket('testbucket').create() 

Я сказал в документации, что команда s3.Bucket('testbucket').create() возвращает словарь, который выглядит как

{ 
    'Location': 'string' 
} 

но вместо этого я получаю словарь, который выглядит так:

{ 
    u'Location': '/testbucket', 
    'ResponseMetadata': { 
     'HTTPStatusCode': 200, 
     'HostId': 'alphnumericalmixed/alphanumericalmixed', 
     'RequestId': 'MIXEDUPPERANDNUMBERS123' 
    } 
} 

я получаю подобную вещь, если я пытаюсь удалить объект S3 тоже, вызывая его delete() метод, например:

# some initialisation as above code 
obj=bucket.put_object(Body='123', Key='456') 
print obj.delete() 

где я получаю:

{'ResponseMetadata': 
{'HTTPStatusCode': 204, 
'HostId': 'something/something', 
'RequestId': 'SOMETHING'}} 

вместо (https://boto3.readthedocs.org/en/latest/reference/services/s3.html#S3.Object.delete):

{ 
'DeleteMarker': True|False, 
'VersionId': 'string', 
'RequestCharged': 'requester' 
} 

Я знаю, что boto3 является вовлеченной оболочкой библиотеки ботокора, а ключ RequestID в словаре, который я получаю обратно в конечном итоге происходит от botocore/parsers.py. Я понимаю create возвращение, как это на самом деле имеет дополнительную информацию, но то, что я не понимаю, что put_object() метод возврата не содержит какой-либо аналогична документации

То, что я пытаюсь работать в является ли официальная документация мне.

+0

Почему -1? По крайней мере, оправдайте это. – Mani

+2

Документы не лежат, они просто ничего не вернут, когда нечего возвращать. Не было никакого управления версиями, поэтому маркер версии или маркер удаления не было. Не было отправлено «RequestCharged» с запросом, и ничего там не было. –

+0

Правильно, поэтому +1 для краткой двусмысленной документации. ;) – Mani

ответ

0

В Иордании Филлипс говорит:

«Документах не лгут, они просто ничего не вернется, когда нет ничего, чтобы вернуть Там не было версий, так что ни одна из версий идентификатор или удалить маркер Был нет.. «RequestCharged» отправлен с запросом, поэтому ничего там не было ».

Я думаю, это была одна вещь, которую я не ожидал. Я предположил, что словарь возврата будет содержать только документированные значения, а не дополнительные.

 Смежные вопросы

  • Нет связанных вопросов^_^