python - 使用 Boto 将 S3 上的文件设置为只读

标签 python amazon-web-services amazon-s3 boto

如何使用 Boto 在 S3 上设置 key ,以免以后意外覆盖它?有没有办法让它只读,或者如果您最终尝试再次写入同一个键,至少会出现某种错误。

我尝试过更改 ACL,包括 key 和存储桶的 ACL,但似乎没有任何区别。

当我删除write时使用 DragonDisk 的权限(所以它变成 <Policy: roddds (owner) = READ, roddds (owner) = READ_ACP> ),但是如果我运行 keyfile.set_contents_from_string()它将其更改回完全控制。

我正在以所有者身份访问该存储桶。

最佳答案

存储桶对象的所有者将始终拥有FULL_CONTROL,即使使用最严格的ACL private :参见S3 ACL Overview 。如果不是这种情况,所有者如何删除他或她设置为只读的对象?

在将 key 写入 S3 之前检查 key 是否存在:

from boto.s3.connection import S3Connection 
from boto.s3.key import Key

conn = S3Connection(ACCESS_KEY, SECRET_ACCESS_KEY)
bucket = conn.get_bucket(MY_BUCKET_NAME)
key = Key(bucket, MY_KEY_NAME)

if not bucket.get_key(key.name):
    key.set_contents_from_string("foo")

或者,您可以尝试为您的 Boto 程序设置不同的 AWS 用户,并对您的存储桶具有READ访问权限。然后,当您创建 key (使用您的所有者凭据)时,将 ACL 设置为 authenticated-read

关于python - 使用 Boto 将 S3 上的文件设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16723052/

相关文章:

python - 使用 OR 运算符的 Itertools 排列

java - s3 putObject 访问被拒绝

node.js - AWS Lambda - Mongoose 连接超时

amazon-web-services - 使用 AWS Glue 从 S3 -> RDS 移动数据

powershell - 尝试访问区域 eu-west-1 中的服务的 GET-S3Bucket 名称解析失败

amazon-web-services - 写入 S3 时 AWS Glue 作业被拒绝访问

python curve_fit 没有给出合理的拟合结果

python - Selenium Python 单击 Logo 按钮

python - 如何获取它来删除用户想要从列表中删除的值,然后返回新的列表值

java - 在 Java 中缓存 map