nat*_*evw 35 python amazon-s3 boto
如果您已将对象上传到Amazon S3存储桶,那么如何使用API更改元数据?可以在AWS管理控制台中执行此操作,但不清楚如何以编程方式完成此操作.具体来说,我在Python中使用boto API并且从阅读源代码可以清楚地看出,使用key.set_metadata只能在创建对象之前工作,因为它只会影响本地字典.
nat*_*evw 36
看来你需要用自己覆盖对象,x-amz-metadata-directive: REPLACE除了元数据之外还使用带有标题的"PUT对象(复制)" .在boto中,这可以这样做:
k = k.copy(k.bucket.name, k.name, {'myKey':'myValue'}, preserve_acl=True)
Run Code Online (Sandbox Code Playgroud)
请注意,将删除旧字典中未包含的任何元数据.因此,要保留旧属性,您需要执行以下操作:
k.metadata.update({'myKey':'myValue'})
k2 = k.copy(k.bucket.name, k.name, k.metadata, preserve_acl=True)
k2.metadata = k.metadata # boto gives back an object without *any* metadata
k = k2;
Run Code Online (Sandbox Code Playgroud)
我几乎错过了这个解决方案,在一个错误标题的问题的介绍中暗示了这个问题实际上与这个问题不同的问题:改变内容 - 现有S3对象的处理
kar*_*tik 11
为了在S3文件上设置元数据,只是不提供目标位置,因为只有源信息足以设置元数据.
final ObjectMetadata metadata = new ObjectMetadata();
metadata.addUserMetadata(metadataKey, value);
final CopyObjectRequest request = new CopyObjectRequest(bucketName, keyName, bucketName, keyName)
.withSourceBucketName(bucketName)
.withSourceKey(keyName)
.withNewObjectMetadata(metadata);
s3.copyObject(request);`
Run Code Online (Sandbox Code Playgroud)
如果您希望远程使用您的元数据 set_remote_metadata
例:
key.set_remote_metadata({'to_be': 'added'}, ['key', 'to', 'delete'], {True/False})
实施在这里:https: //github.com/boto/boto/blob/66b360449812d857b4ec6a9834a752825e1e7603/boto/s3/key.py#L1875
| 归档时间: |
|
| 查看次数: |
28683 次 |
| 最近记录: |