我有一个带有子文件夹ABC的桶。ACL已设置,因此我的给定访问密钥只能上载到子文件夹ABC
以下命令行工作

aws s3 cp local-file-name s3://my-bucket/ABC/

我正试着从博托那里做同样的事
conn = S3Connection(access_key, secret_access_key)
b = conn.get_bucket('my-bucket')
k = Key(b)
k.key = 'ABC/Hello'
k.set_contents_from_string("Hello World")
print (k.get_contents_from_string())

boto.exception.S3ResponseError:S3ResponseError:403禁止
我知道这与ACL相关,因为当我将密钥交换到具有完全访问权限的集合时,它会工作。
那么,为什么在使用受限键时,命令行可以工作,而boto不能?
我需要让受限密钥列表访问存储桶吗?

最佳答案

默认情况下,boto在HEAD调用期间通过执行get_bucket请求来验证bucket。对于您的场景,这将失败,因此请告诉boto跳过此验证步骤:

b = conn.get_bucket('my-bucket', validate=False)

关于python - aws命令行有效,但无法获得boto等效项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29576822/

10-13 02:23