0

boto3 の公式ドキュメント ( https://boto3.readthedocs.org/en/latest/reference/services/s3.html#S3.Bucket.create ) と実際に返されるものとの間にイライラする不一致があることがわかりました。 .

念のため、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 ライブラリの関与するラッパーであり、返さRequestIDれる辞書のキーは最終的にbotocore/parsers.py. create実際には追加情報があるため、戻り値は理解していますが、理解できないのは、put_object()メソッドの戻り値にドキュメントに類似したものが含まれていないことです

私が解決しようとしているのは、公式ドキュメントが私に嘘をついているかどうかです。

4

1 に答える 1

0

ジョーダン・フィリップスは次のように述べています。

「ドキュメントは嘘をついていません。返すものが何もない場合、何も返さないだけです。バージョン管理がなかったので、バージョン ID も削除マーカーもありませんでした。リクエストとともに送信された 'RequestCharged' はなかったので、そこにも何もありませんでした。」

これは私が予想していなかったものだったと思います。戻り辞書には、追加の値ではなく、文書化された値のみが含まれると想定しました。

于 2015-11-02T21:03:40.747 に答える