Amazon S3 权限错误 403,简单上传一个文本文件

Amazon S3 Permission Errors 403, simple upload of a text file

所以我在 Whosebug 中使用了几个不同的教程,它们似乎都出现了同样的错误:403 权限被拒绝。

我正在使用 python2.7 和 boto ubuntu 14.04.

下面是代码(没有密钥和存储桶名称),我想知道为什么我被拒绝访问我自己的存储桶。

我在 IAM 中创建了一个对 S3 具有完全访问权限的用户,并且我将存储桶的权限设置为允许 'Everyone' 到 upload/download。我使用的是正确的密钥,因为我将它们复制并粘贴到了代码中。

这会不会与存储桶策略有关?或者有什么我不知道的?我是新手,只需要这个来上传和下载 S3 上的文本文件。

import boto
from boto.s3.key import Key
import boto.s3.connection

AWS_ACCESS_KEY_ID = ''
AWS_SECRET_ACCESS_KEY = ''
Bucketname = '' 
conn = boto.connect_s3(aws_access_key_id=AWS_ACCESS_KEY_ID,
       aws_secret_access_key=AWS_SECRET_ACCESS_KEY )

bucket = conn.get_bucket(Bucketname)

评论很有帮助,谢谢 FirebladeDan。所以我创建了一个具有管理员访问权限和完全 S3 访问权限的用户。这一切都是在 IAM 中完成的。现在,在存储桶属性中,我向 Grantee 'Everyone' 添加了一个权限集,允许他们 upload/download 并列出。现在最后一步是添加存储桶策略。我认为我不需要这样做,所以我在这里发帖。

我错了。所以这就是我用的。注意:这允许我上传到 S3,但是大多数时候 set_contents_from_filename() 只上传 header 而并不总是上传文件。这可能是我的代码中的一个错误,但如果您遇到同样的事情,那么此政策可能需要某种额外的权限。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "USERNAME",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::GETNUMBERSOFUSER:root"
            },
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::BUCKETNAME",
                "arn:aws:s3:::BUCKETNAME/*"
            ]
        }
    ]
}