2016-06-16 8 views
0

Hier meine Berechtigungen sind: enter image description hereWie für den Zugriff auf Eimer mit boto3

Zusätzlich habe ich dies als einen Eimer Politik:

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
     { 
      "Sid": "", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::manga-learn-data", 
       "arn:aws:s3:::manga-learn-data/*" 
      ] 
     } 
    ] 
} 

ich dies habe in meinem ~/.aws/config-Datei:

[default] 
region=us-west-2 

Und dies in meinem ~/.aws/Credentials-Datei:

[default] 
aws_access_key_id = <access-key> 
aws_secret_access_key = <secret-key> 
Jetzt 210

ich tun:

>>> import boto3 
>>> s3 = boto3.resource('s3') 
>>> s3.buckets.all() 
s3.bucketsCollection(s3.ServiceResource(), s3.Bucket) 
>>> for bucket in s3.buckets.all(): 
...   print(bucket.name) 
... 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/Users/alex/anaconda2/lib/python2.7/site-packages/boto3/resources/collection.py", line 83, in __iter__ 
    for page in self.pages(): 
    File "/Users/alex/anaconda2/lib/python2.7/site-packages/boto3/resources/collection.py", line 161, in pages 
    pages = [getattr(client, self._py_operation_name)(**params)] 
    File "/Users/alex/anaconda2/lib/python2.7/site-packages/botocore/client.py", line 262, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "/Users/alex/anaconda2/lib/python2.7/site-packages/botocore/client.py", line 552, in _make_api_call 
    raise ClientError(parsed_response, operation_name) 
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied 

Und Sie sehen die Zurückverfolgungs dort. Ich befolge die Schritte hier: https://github.com/boto/boto3

Irgendwelche Vorschläge?

+1

erlaubt nur die Erlaubnis für Bucket 'manga-learn-data', aber Ihre Python-Codes versuchen alle Buckets zu durchlaufen. – BMW

Antwort

3

Ihr Code versucht derzeit, alle Buckets aufzulisten, aber der IAM-Benutzer hat keine Berechtigung dafür.

Sie entweder die ListAllMyBuckets Zugriff auf Ihre IAM Benutzer zu gewähren, zB:

{ 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "arn:aws:s3:::*" 
    }, 

Oder Sie müssen Ihren Code nur den Eimer greifen Sie daran interessiert sind, ändern: es

bucket = s3.Bucket('manga-learn-data') 
for object in bucket: 
    # do whatever you need to do here