2016-06-16 2 views
0

Вот мои права: enter image description hereКак получить доступ к ведру с boto3

Кроме того, у меня есть это как политика ковша:

{ 
    "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/*" 
      ] 
     } 
    ] 
} 

У меня есть это в моем файле ~/.aws/конфигурации:

[default] 
region=us-west-2 

И это в моем ~/.aws/файл полномочия:

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

Сейчас я:

>>> 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 

И вы видите отслеживающий там. Я следую шагам здесь: https://github.com/boto/boto3

Любые предложения?

+1

это разрешает только ведро 'manga-learn-data', но ваши коды на Python пытаются пройти через все ведра. – BMW

ответ

3

Ваш код в настоящее время пытается перечислить все ковши, но у пользователя IAM нет разрешения на это.

Вы должен либо предоставить ListAllMyBuckets доступ к IAM пользователю, например:

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

Или вам нужно изменить свой код, чтобы получить доступ только к ведру вы заинтересованы в:

bucket = s3.Bucket('manga-learn-data') 
for object in bucket: 
    # do whatever you need to do here 
Смежные вопросы