2016-02-29 129 views
0

我想給閱讀(下載)權利給單個用戶。 我感到困惑,我應該用什麼:AWS S3政策混淆

我應該使用

  • 遺願策略編輯器從S3接口
  • 用戶的在線策略,並指定讀取權限(從IAM接口)
  • 激活「任何經過身份驗證的AWS用戶」有權讀取(從s3界面),然後使用內聯權限獲取更多粒度?

我使用的直列政策,它不會工作:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AllowUserToReadObject", 
      "Action": [ 
       "s3:GetObject", 
       "s3:GetObjectVersion", 
       "s3:GetObjectTorrent" 
      ], 
      "Effect": "Allow", 
      "Resource": [ 
       "arn:aws:s3:::staging/*", 
       "arn:aws:s3:::prod/*" 
      ] 
     } 
    ] 
} 

當我使用的Boto:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
from boto.s3.connection import S3Connection 
from boto.s3.key import Key 
import sys, os 

AWS_KEY = '' 
AWS_SECRET = '' 



from boto.s3.connection import S3Connection 

conn = S3Connection(AWS_KEY, AWS_SECRET) 

bucket = conn.get_bucket('staging') 
for key in bucket.list(): 
    print key.name.encode('utf-8') 

我得到了以下錯誤:

Traceback (most recent call last): 
    File "listing_bucket_files.py", line 20, in <module> 
    bucket = conn.get_bucket('staging') 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 503, in get_bucket 
    return self.head_bucket(bucket_name, headers=headers) 
    File "/usr/local/lib/python2.7/dist-packages/boto/s3/connection.py", line 536, in head_bucket 
    raise err 
boto.exception.S3ResponseError: S3ResponseError: 403 Forbidden 

回答

0

您沒有分配"s3:ListBucket"權限,該帳戶已停止在訪問存儲桶stagingprod,則沒有權限訪問這些存儲桶中的文件/文件夾。

請記住,您必須如下分隔代碼,並且不要在存儲桶名稱後添加/*

"Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::staging", 
       "arn:aws:s3:::prod", 
      ] 
     }, 
+0

謝謝,我保留了我的代碼,並添加了's3:ListBucket'。 – 4m1nh4j1