我发现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(都使用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()
命令返回的字典,这些看起来像
{
'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库的一个包含的包装,而我得到的dictionary中的RequestID
键最终来自botocore/parsers.py
。我明白了create
回报它实际上有更多的信息,但我不明白的是,put_object()
方法的返回不包含任何类似文件
我正在试图找出是官方文件是否对我说谎。
为什么-1?至少证明它有道理。 – Mani
文档没有说谎,当没有任何东西可以返回时,它们不会返回任何东西。没有版本号,所以没有版本号或删除标记。没有与请求一起发送的'RequestCharged',所以也没有。 –
正确,所以+1简洁模糊的文档。 ;) – Mani