Pri*_*han 25 java grails amazon-s3 amazon-web-services jclouds
我需要更新所有AmazonS3的云文件中的缓存控制头.但是,我无法弄清楚如何使用jclouds API.我正在使用apache jclouds插件.我得到了两个相关的答案:
第一个答案是建议使用SwiftKey Api类,这在grails的jcloud插件中是不可用的.第二个答案是使用AWS java sdk已经有一个grails包装插件https://grails.org/plugin/aws-sdk但它不支持元数据更新.
Dan*_*ell 32
可以通过执行对象复制来更改元数据(请参阅如何使用Amazon S3 SDK更新元数据):
ObjectMetadata metadataCopy = new ObjectMetadata();
// copy previous metadata
metadataCopy.addUserMetadata("newmetadata", "newmetadatavalue");
CopyObjectRequest request = new CopyObjectRequest(bucketName, existingKey, bucketName, existingKey)
.withNewObjectMetadata(metadataCopy);
amazonS3Client.copyObject(request);
Run Code Online (Sandbox Code Playgroud)
这是哲学上的"更新"取决于你自己决定.
E.J*_*nan 25
你不能:
每个Amazon S3对象都有数据,密钥和元数据.对象键(或键名)唯一标识存储桶中的对象.对象元数据是一组名称 - 值对.您可以在上载时设置对象元数据.上载对象后,无法修改对象元数据.修改对象元数据的唯一方法是制作对象的副本并设置元数据.
http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
PHP 示例
我知道这个问题不是 PHP 特有的,但它可能对某人有帮助,因为它是 Google 上的最佳结果。
这将覆盖现有对象。
$client = new \Aws\S3\S3Client([
'version' => '2006-03-01',
'region' => 'BUCKET-REGION'
]);
$updateResponse = $client->copyObject([
'Key' => 'OBJECTKEY',
'Bucket' => 'MYBUCKET',
'CopySource' => 'MYBUCKET/OBJECTKEY',
'MetadataDirective' => 'REPLACE',
'Metadata' => [
'width' => 441,
'height' => 189
]
]);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21523 次 |
| 最近记录: |