我正在尝试使用boto访问S3上的存储桶。我已经获得了对存储桶的读取权限,当我在S3浏览器中浏览它时,我的密钥正在工作。以下代码返回403 Forbidden Access Denied。
conn = S3Connection('Access_Key_ID', 'Secret_Access_Key')
conn.get_all_buckets()
通过boto配置文件使用访问密钥和秘密访问密钥时也会发生这种情况。还有什么我需要做的,因为键可能来自IAM吗?这可能表示设置中有错误吗?我对IAM知之甚少,我只是给了钥匙。
答案 0 :(得分:6)
要检查的一些事情......
如果您使用的是boto,请确保使用conn.get_bucket(bucket_name)仅访问您有权访问的存储桶。
在您的IAM(用户)政策中,如果您要限制对单个用户的访问权限 存储桶,请确保该策略包含足够的权限 存储桶并且不包含ARN名称的尾部斜杠+星号(请参阅下面的示例)。
请务必在S3中为存储桶中的“Authenticated Users”设置“上传/删除”权限。
权限示例:
IAM政策示例:
注意:使用策略生成器
时将自动生成SID{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:*"
],
"Sid": "Stmt0000000000001",
"Resource": [
"arn:aws:s3:::myBucketName"
],
"Effect": "Allow"
}
]
}
答案 1 :(得分:3)
我的猜测是,因为您正在为您有权访问的个人存储区调用conn.get_all_buckets()而不是conn.get_bucket(bucket_name)。
答案 2 :(得分:-2)
from boto.s3.connection import S3Connection
conn = S3Connection('access key', 'secret access key')
allBuckets = conn.get_all_buckets()
for bucket in allBuckets:
print(str(bucket.name))