2017-08-03 244 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