Python boto3 s3 库 returns 与官方文档不同的词典

Python boto3 s3 library returns different dictionaries to the official documentation

我发现 boto3 的官方文档 (https://boto3.readthedocs.org/en/latest/reference/services/s3.html#S3.Bucket.create) 与 return 在实践中编写的内容之间存在令人沮丧的不匹配。

为了确保,我使用的是 boto3 1.2.1 和 botocore 1.3.2(均使用 pip 安装)。

我专门讨论使用 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() 命令 return 是一个看起来像

的字典
{
    'Location': 'string'
}

但我得到的字典如下所示:

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

如果我也尝试通过调用其 delete() 方法来删​​除 S3 对象,我会得到类似的结果,例如:

# 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 是 botocore 库的一个相关包装器,我要取回的字典中的 RequestID 键最终来自 botocore/parsers.py。我理解 create return 因为它实际上有额外的信息,但我不明白的是 put_object() 方法 return 不包含任何类似于文档

我想知道官方文档是否在骗我。

正如乔丹·菲利普斯所说:

"The docs are not lying, they just won't return anything when there's nothing to return. There was no versioning, so no version id or delete marker. There was no 'RequestCharged' sent with the request, so nothing there either."

我想这是我没想到的一件事。我假设 return 字典只包含记录的值,而不是其他值。