Я нахожу расстраивающее неправильное совпадение между официальной документацией 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()
метод возврата не содержит какой-либо аналогична документации
То, что я пытаюсь работать в является ли официальная документация мне.
Почему -1? По крайней мере, оправдайте это. – Mani
Документы не лежат, они просто ничего не вернут, когда нечего возвращать. Не было никакого управления версиями, поэтому маркер версии или маркер удаления не было. Не было отправлено «RequestCharged» с запросом, и ничего там не было. –
Правильно, поэтому +1 для краткой двусмысленной документации. ;) – Mani