2015-11-02 1 views
-1

Je trouve un désaccord frustrant entre la documentation officielle de boto3 (https://boto3.readthedocs.org/en/latest/reference/services/s3.html#S3.Bucket.create) et ce qui est retourné en pratique. Pour être sûr, j'utilise boto3 1.2.1 et botocore 1.3.2 (tous deux installés avec pip).La bibliothèque Python boto3 s3 renvoie différents dictionnaires à la documentation officielle

Je parle en particulier sur la création d'un seau à l'aide de la méthode 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() 

On me dit dans la documentation que la commande s3.Bucket('testbucket').create() retourne un dictionnaire qui ressemble

{ 
    'Location': 'string' 
} 

mais à la place, je reçois un dictionnaire qui ressemble à:

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

je reçois une chose similaire si je tente de supprimer un objet S3 trop en invoquant sa méthode delete(), par exemple:

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

où je reçois:

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

au lieu de (https://boto3.readthedocs.org/en/latest/reference/services/s3.html#S3.Object.delete):

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

Je sais que boto3 est un wrapper impliqué de la bibliothèque botocore, et la clé RequestID dans le dictionnaire que je reçois retour vient finalement de botocore/parsers.py. Je comprends le retour create comme il l'a fait plus d'informations, mais ce que je ne comprends pas est que le retour de la méthode put_object()ne contient aucune similaire à la documentation

Ce que je suis en train de travailler est si la documentation officielle me ment.

+0

Pourquoi le -1? Au moins le justifier. – Mani

+2

Les docs ne mentent pas, ils ne renvoient rien quand il n'y a rien à retourner. Il n'y avait pas de versionnage, donc pas d'identifiant de version ou de marqueur de suppression. Il n'y avait pas de 'RequestCharged' envoyé avec la demande, donc rien là non plus. –

+0

À droite, donc +1 pour une documentation ambiguë alors. ;) – Mani

Répondre

0

Comme Jordan Phillips dit:

« Les documents ne mentent pas, ils ne ne retournera rien quand il n'y a rien à retourner Il n'y avait pas versioning, donc pas id version ou supprimer marqueur Il n'y avait pas.. 'RequestCharged' envoyé avec la demande, donc rien là non plus. " Je suppose que c'était une chose que je ne m'attendais pas. J'ai supposé que le dictionnaire de retour ne contiendrait que les valeurs documentées, plutôt que celles supplémentaires.