2013-10-17 101 views
6

我試圖上傳到S3,當我看到日誌從S3存儲桶記錄這就是它說:拒絕訪問上傳到S3

mybucket-me [17/Oct/2013:08:18:57 +0000] 120.28.112.39 
arn:aws:sts::778671367984:federated-user/[email protected] BB3AA9C408C0D26F 
REST.POST.BUCKET avatars/dean%2540player.com/4.png "POST/HTTP/1.1" 403 
AccessDenied 231 - 132 - "http://localhost:8080/ajaxupload/test.html" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17" - 

我被拒絕訪問。從它指向的位置我想我錯過的唯一的東西是添加存儲桶策略。所以在這裏。

使用我的電子郵件我可以登錄到我的應用程序並上傳頭像。我想放置我的頭像的存儲桶名稱是mybucket-me,並且它有一個名爲avatars的子存儲桶。

-mybucket-me 
-avatars 
    [email protected] //dynamic based on who are logged in 
    -myavatar.png //image uploaded 

如何添加一個水桶政策,所以我可以授予聯合比如我在S3上傳什麼是正確的說法,我會加上我的桶的政策,因此它可以給予我有權上傳到我們的存儲桶中?

回答

3

您可以將以下策略來鬥:

{ 
    "Version": "2008-10-17", 
    "Id": "Policy1358656005371", 
    "Statement": [ 
     { 
      "Sid": "Stmt1354655992561", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": [ 
        "arn:aws:sts::778671367984:federated-user/[email protected]"     
       ] 
      }, 
      "Action": [ 
       "s3:List*", 
       "s3:Get*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::my.bucket", 
       "arn:aws:s3:::my.bucket/*" 
      ] 
     } 
    ] 
} 

授予聯盟用戶[email protected]只讀權限爲「my.bucket」。

該政策不是很好維護,因爲它特別命名這個用戶。要以更具擴展性的方式僅允許某些聯邦用戶訪問,最好在調用GetFederationToken時執行此操作。如果您發佈STS代碼,我可以幫助您在那裏分配政策,但它與上述非常相似。

+0

喜,遺憾的響應晚。我使用s3瀏覽器上傳,我們有一個我們稱之爲API的API,它給我們提供了證書。這裏是幾乎所有相關代碼都發布的鏈接。 [鏈接](http://stackoverflow.com/questions/19401936/signaturedoesnotmatch-browser-based-upload-to-s3?noredirect=1#comment28781719_19401936) –

+0

這是行不通的行動只是「列表和獲取」?我試圖做的是上傳或張貼方法。另外您的正確我需要的是可擴展的方式,不同的用戶將上傳到存儲桶中。請幫忙。 –

+0

您需要將操作更改爲任何您需要的操作,只需「s3:*」即可訪問所有S3操作。 您使用哪種語言?發佈你到目前爲止的代碼 – prestomation

1

要上傳到S3鬥,你需要添加/創建IAM /組策略,例如:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": ["s3:ListBucket"], 
     "Resource": ["arn:aws:s3:::test"] 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:PutObject", 
     "s3:GetObject", 
     "s3:DeleteObject" 
     ], 
     "Resource": ["arn:aws:s3:::test/*"] 
    } 
    ] 
} 

哪裏arn:aws:s3:::test是你的亞馬遜資源名稱(ARN)。

來源:Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket

相關: