我试图访问桶中的密钥,但我没有权限,尽管我对密钥有权限。为了能够执行get_key('this/is/my_key'),我需要桶对象:
conn = boto.connect_s3(key, secret_key)
my_bucket = conn.get_bucket('a_bucket')产S3ResponseError: S3ResponseError: 403 Forbidden。
另一方面,以下工作
my_bucket = boto.s3.bucket.Bucket(conn, 'a_bucket')
my_bucket.get_key('this/is/my_key')问题:,创建对象Bucket和使用get_bucket方法有什么区别?检查多古 --我只看到验证的检查。还要别的吗?
发布于 2017-03-10 11:48:12
在调用validate=True时,get_bucket中的验证(默认)检查桶的存在。由于您没有访问桶的权限,因此拒绝了您的请求(403)。在另一种情况下,类实例化似乎不进行验证,因此get_key方法按预期工作。
发布于 2017-03-10 18:40:58
get_bucket()需要s3:listObject权限
get_key()只需要s3:GetObject权限
因此,下面的行不会创建任何桶。
my_bucket = boto.s3.bucket.Bucket(conn, 'a_bucket')它只创建指向桶的python对象类。只要您没有执行任何与桶相关的任务,就不会出现错误。如果您可以在没有错误的情况下执行get_key(),这意味着您获得了对桶的s3:GetObject权限。
https://stackoverflow.com/questions/42717551
复制相似问题