boto s3 桶与 get_bucket
boto s3 Bucket versus get_bucket
我尝试访问存储桶中的密钥,但我没有权限访问该密钥,但我对密钥有访问权限。
为了能够做到 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
方法有什么区别?
检查 docu 我只看到验证检查。还有什么吗?
get_bucket
中的验证(validate=True
默认值)在调用时检查存储桶是否存在。由于您无权访问存储桶,因此您的请求被拒绝 (403)。在另一种情况下,class 实例化似乎没有进行验证,因此 get_key
方法按预期工作。
get_bucket() 需要 s3:listObject 许可
get_key()只需要s3:GetObject权限
因此以下行不会创建任何存储桶。
my_bucket = boto.s3.bucket.Bucket(conn, 'a_bucket')
它只是创建一个指向存储桶的 python 对象 class。只要您没有执行任何与存储桶相关的任务,就不会出现错误。如果您可以无误地执行 get_key(),则意味着您获得了对存储桶的 s3:GetObject 权限。
我尝试访问存储桶中的密钥,但我没有权限访问该密钥,但我对密钥有访问权限。
为了能够做到 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
方法有什么区别?
检查 docu 我只看到验证检查。还有什么吗?
get_bucket
中的验证(validate=True
默认值)在调用时检查存储桶是否存在。由于您无权访问存储桶,因此您的请求被拒绝 (403)。在另一种情况下,class 实例化似乎没有进行验证,因此 get_key
方法按预期工作。
get_bucket() 需要 s3:listObject 许可
get_key()只需要s3:GetObject权限
因此以下行不会创建任何存储桶。
my_bucket = boto.s3.bucket.Bucket(conn, 'a_bucket')
它只是创建一个指向存储桶的 python 对象 class。只要您没有执行任何与存储桶相关的任务,就不会出现错误。如果您可以无误地执行 get_key(),则意味着您获得了对存储桶的 s3:GetObject 权限。