Python: Amazon S3 ne peut pas obtenir le seau: dit 403 Interdit
J'ai un seau pour mon organisation dans Amazon S3 qui ressemble mydev.orgname
- J'ai une application Java qui peut se connecter à Amazon S3 avec les informations d'identification et peut se connecter à S3, de créer, de lire des fichiers
- J'ai une condition où une application lit les données à partir de Python de même seau. Je suis donc en utilisant boto pour cela.
Je ne le suit dans oder pour obtenir le seau
>>> import boto
>>> from boto.s3.connection import S3Connection
>>> from boto.s3.key import Key
>>>
>>> conn = S3Connection('xxxxxxxxxxx', 'yyyyyyyyyyyyyyyyyyyyyy')
>>> conn
S3Connection:s3.amazonaws.com
Maintenant, quand j'essaie d'obtenir le seau, je vois l'erreur
>>> b = conn.get_bucket('mydev.myorg')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/boto/s3/connection.py", line 389, in get_bucket
bucket.get_all_keys(headers, maxkeys=0)
File "/Library/Python/2.7/site-packages/boto/s3/bucket.py", line 367, in get_all_keys
'', headers, **params)
File "/Library/Python/2.7/site-packages/boto/s3/bucket.py", line 334, in _get_all
response.status, response.reason, body)
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>EEC05E43AF3E00F3</RequestId><HostId>v7HHmhJaLLQJZYkZ7sL4nqvJDS9yfrhfKQCgh4i8Tx+QsxKaub50OPiYrh3JjQbJ</HostId></Error>
Mais à partir de l'application Java tout semble fonctionner.
Je fais quelque chose de mal ici?
source d'informationauteur daydreamer
Vous devez vous connecter pour publier un commentaire.
Donnant à l'utilisateur un "rôle plus important" n'est pas la bonne solution. C'est tout simplement un problème avec
boto
utilisation de la bibliothèque. Clairement, vous n'avez pas besoin de droits supplémentaires lors de l'utilisation de Java S3 bibliothèque.Bonne façon d'utiliser les boto dans ce cas est:
Fondamentalement,
boto
par défaut (ce qui est une erreur de leur part à mon humble avis), suppose que vous voulez interagir avec compartiment S3. Accordé, parfois, vous ne voulez, mais vous devez utiliser les informations d'identification qui ont des autorisations pour les S3 seau opérations. Mais de plus en plus populaire de cas d'utilisation est d'interagir avec les objets S3, et dans ce cas, vous n'avez pas besoin de tout compartiment spécial des autorisations de niveau, d'où l'utilisation devalidate=False
kwarg.cette réponse de travail pour moi 🙂
Je n'ai
Après avoir donné mon "Utilisateur" rôle beaucoup plus important, cette erreur a disparu. Signifie que l'Utilisateur donné la permission d'get_bucket