我使用amazobotov2.38编写python脚本来访问我的S3存储桶。在
我想更新bucket中的一个文件(我知道它在S3中称为“key”)。路径是MyBucket/myfile/demo.txt
。此外,我还想更新其名为“name
”的元数据。下面是我尝试的代码:
# connect to key
conn = boto.connect_s3()
bucket = conn.get_bucket("MyBucket")
my_key = Key(bucket)
my_key.key = "myfile/demo.txt"
# if key exists, then update the file & its metadata
if my_key.exists():
new_meta_data = {"name": "xyz"}
# update metadata
my_key.copy("MyBucket", my_key.name, new_meta_data, preserve_acl=True)
# update file content in S3 by using the local file demo.txt
my_key.set_contents_from_filename("demo.txt")
但是,它不起作用。。。我看不到元数据得到更新。为什么?在
您只需更新密钥的本地元数据,然后执行文件更新:
现在,
name
应该作为元数据出现在S3中。但是请注意,当您这样做时,ACL可能会更改。在也可以用
^{pr2}$key.set_remote_metadata()
完成。这不需要您更新密钥的内容(但如果需要,您可以):以下代码更改
boto3
中的密钥元数据:必须使用According to the docs,
^{pr2}$set_metadata
。我已经测试过了,下面的代码与boto2
一起工作,并更改了meatadata:使用Boto3时,请注意,如果将“put_object”与元数据一起使用,这将更改您的实际元数据,如果要使用metadata创建object,然后添加元数据或更新现有元数据,请使用以下方法:
相关问题 更多 >
编程相关推荐