[英]Boto for amazon s3 allows no access to the key I just created
我具有以下形式的Amazon s3存储桶的凭证:
<AWS_ACCESS_KEY> = "some junk"
<AWS_SECRET_KEY> = "some more junk"
<bucketname> = "mybucket"
我使用boto访问存储桶:
import boto
s3=boto.connect_s3(<AWS_ACCESS_KEY>, <AWS_SECRET_KEY>)
bucket = s3.get_bucket('mybucket')
mykey = bucket.new_key('test_key')
mykey.set_contents_from_string('this is test content')
并退出ipython。 到目前为止一切顺利,在s3控制台上,我看到了具有正确内容的新文本文件。
重新启动Ipython,并通过相同的步骤检索存储桶。 到那时,我会
bucket.get_key('test_key')
导致403错误:
S3ResponseError: S3ResponseError: 403 Forbidden
我怎么可能无法访问刚刚创建的资源? 而且,我该如何解决?
您的代码没有问题,因为我没有任何错误地复制了代码,甚至使用Boto创建了存储桶。 代码和与API的交互都是可靠的。 该问题可能与您如何在本地管理AWS机密或IAM策略有关。
Here is your code with some slight modifications:
import boto
s3=boto.connect_s3()
c_bucket = s3.create_bucket('yodas')
g_bucket = s3.get_bucket('yodas')
mykey = bucket.new_key('test_key')
mykey.set_contents_from_string('this is test content')
>>> print mykey
<Key: yodas,test_key>
>>> bucket.get_key('test_key')
<Key: yodas,test_key>
您可能要同时创建存储桶和策略。 您可以使用简单的脚本将IAM用户,策略和存储桶分配给API。 然后,您对该用户有一个特定的策略。
my_bucket = "yodas"
my_iam_name = "myuser"
my_policy_name = "yodaspolicy"
policy_json = '''{
"Statement":[{
"Sid":"RandomStringIdentifier",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Effect":"Allow",
"Resource":"arn:aws:s3:::%s/*"
}]
}''' % my_bucket
response = iam.create_user(my_iam_name)
iam.put_user_policy(my_iam_name, my_policy_name, policy_json)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.