2017-08-03 242 views
2

我想從aws-sdk-js上s3上的對象,但不能找出我的情況的政策。我想只允許一個用戶擁有上傳權限和公開閱讀權限。s3桶策略訪問被拒絕

這裏是我的S3存儲政策

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "PublicReadForGetBucketObjects", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::some-bucket/*" 
     }, 
     { 
      "Sid": "", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "arn:aws:iam::1111111111111:user/some-bucket-user" 
      }, 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::some-bucket/*" 
     } 
    ] 
} 

和我的IAM策略是:

{ 
    "Version":"2012-10-17", 
    "Statement":[ 
    { 
     "Sid":"AddPerm", 
     "Effect":"Allow", 
     "Action":"s3:*", 
     "Resource":["arn:aws:s3:::some-bucket/*"] 
    } 
    ] 
} 

可有人請指出我在做什麼錯在這裏?

回答

1

我的壞,我沒有被正確初始化的AWS.S3,它用的是用戶/ EC2實例的角色,而不是一個我正在分配。

1

爲此,您不必處理桶策略。存儲桶策略用於允許服務訪問您的S3數據庫 - 而不是用戶。

要允許用戶訪問您的S3數據庫,請在權限/訪問控制列表(位於「存儲桶策略」旁邊)中添加所需權限。

如果它絕對必須通過桶政策來完成這個環節涵蓋了一切:http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html

+0

我正在使用'private' ACL,而在JS中我只是簡單地在'aws.config.update({})'中添加創建用戶的密鑰/祕密。如果我這樣做,原則:{AWS:*}'這個整個事情是有效的,因爲它給予所有用戶權限。 –

+0

哦,在這種情況下,這個鏈接應該覆蓋這一切: http://docs.aws.amazon.com/AmazonS3/latest/dev/s3-bucket-user-policy-specifying-principal-intro.html – HerSta