Python boto, le contenu de la liste de spécifique dir dans le seau

J'ai S3 uniquement l'accès à un répertoire spécifique dans un compartiment S3.

Par exemple, avec la s3cmd commande si j'essaie de la liste de l'ensemble de seau:

    $ s3cmd ls s3://my-bucket-url

J'obtiens une erreur: Access to bucket 'my-bucket-url' was denied

Mais si j'essaie d'accéder à un niveau particulier dir dans le seau, je peux voir le contenu:

    $ s3cmd ls s3://my-bucket-url/dir-in-bucket

Maintenant je veux me connecter à la S3 seau avec python boto. De même avec:

    bucket = conn.get_bucket('my-bucket-url')

J'obtiens une erreur: boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden

Mais si j'essaie:

    bucket = conn.get_bucket('my-bucket-url/dir-in-bucket')

Le script stands pendant environ 10 secondes, et affiche une erreur par la suite. Soufflet est la trace complète. Une idée de comment procéder?

Traceback (most recent call last):
  File "test_s3.py", line 7, in <module>
    bucket = conn.get_bucket('my-bucket-url/dir-name')
  File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 471, in get_bucket
    return self.head_bucket(bucket_name, headers=headers)
  File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 490, in head_bucket
    response = self.make_request('HEAD', bucket_name, headers=headers)
  File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 633, in make_request
    retry_handler=retry_handler
  File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 1046, in make_request
    retry_handler=retry_handler)
  File "/usr/local/lib/python2.7/dist-packages/boto/connection.py", line 922, in _mexe
    request.body, request.headers)
  File "/usr/lib/python2.7/httplib.py", line 958, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib/python2.7/httplib.py", line 992, in _send_request
    self.endheaders(body)
  File "/usr/lib/python2.7/httplib.py", line 954, in endheaders
    self._send_output(message_body)
  File "/usr/lib/python2.7/httplib.py", line 814, in _send_output
    self.send(msg)
  File "/usr/lib/python2.7/httplib.py", line 776, in send
    self.connect()
  File "/usr/lib/python2.7/httplib.py", line 1157, in connect
    self.timeout, self.source_address)
  File "/usr/lib/python2.7/socket.py", line 553, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
socket.gaierror: [Errno -2] Name or service not known
Peut-être que vous devriez utiliser my-bucket-url/dir-in-bucket au lieu de my-bucket-url/my-bucket-url dans votre script?
désolé, c'était une erreur lorsque vous essayez de supprimer le réel seau et dir noms.

OriginalL'auteur Martin Taleski | 2014-12-04