使用iOS SDK更新(更改)AWS S3对象的用户定义元数据

时间:2015-09-03 14:16:18

标签: ios amazon-web-services

有人可以帮忙吗?

我尝试使用AWSS3ReplicateObjectRequest设置bucket,key和replicateSource属性来指向相同的现有S3文件,将metadataDirective设置为AWSS3MetadataDirectiveReplace并分配新的用户定义元数据。在那种情况下,我有错误:

Error Domain=com.amazonaws.AWSGeneralErrorDomain Code=3 "The operation
couldn’t be completed. (com.amazonaws.AWSGeneralErrorDomain error 3.)"
UserInfo=0x7ae60ef0 {Message=The request signature we calculated does not
match the signature you provided. Check your key and signing method. ... 

我错过了什么吗? (AWS iOS SDK v2.2.4)

更新

AWSS3 *s3 = [AWSS3 S3ForKey:s3Key];
AWSS3ReplicateObjectRequest *request = [[AWSS3ReplicateObjectRequest alloc] init];
request.bucket = MYAmazonS3BucketName;
request.key = self.s3ObjectKey;
request.replicateSource = [NSString stringWithFormat:@"%@/%@",
                           MYAmazonS3BucketName,
                           self.s3ObjectKey];
request.contentType = @"application/octet-stream";
NSDictionary *metadata = @{@"type" : @"my_type",
                           @"note" : @"the_note"};
request.metadata = metadata;
request.metadataDirective = AWSS3MetadataDirectiveReplace;

[[s3 replicateObject:request] continueWithBlock:^id(AWSTask *task) {
    if (task.error) {
        NSLog(@"Error: %@", task.error);
    }
    else {
        NSLog(@"Result: %@", task.result);
    }

    return nil;
}];

使用Cognito执行身份验证。我可以上传/下载/删除对象,可以单独获取元数据。

0 个答案:

没有答案