如何使用AWS iOS SDK删除对象?

时间:2012-08-13 19:46:16

标签: iphone ios ipad amazon-s3 amazon-web-services

我正在尝试删除上传到S3存储桶的公共图片(cannedACL的{​​{1}}属性,以上传图片为S3PutObjectRequest)。

AWS开发工具包documentation中有一个[S3CannedACL publicRead]类,但this class似乎没有任何属性或初始化方法。

基于其他语言的示例代码,看起来应该有S3DeleteObjectRequestkey属性或设置这些属性的初始化方法,就像在iOS SDK的S3PutObjectRequest类中一样,用于将文件上传到存储桶。

这里发生了什么? SDK完全不完整吗?有没有办法用iOS AWS SDK删除对象?

3 个答案:

答案 0 :(得分:8)

对于适用于S3 V2的iOS SDK,此代码非常方便

AWSS3 *s3 = [AWSS3 defaultS3];
                AWSS3DeleteObjectRequest *deleteRequest = [AWSS3DeleteObjectRequest new];
                deleteRequest.bucket = S3BucketName;
                deleteRequest.key = climb.imageKey;
                [[[s3 deleteObject:deleteRequest] continueWithBlock:^id(BFTask *task) {
                    if(task.error != nil){
                        if(task.error.code != AWSS3TransferManagerErrorCancelled && task.error.code != AWSS3TransferManagerErrorPaused){
                            NSLog(@"%s Error: [%@]",__PRETTY_FUNCTION__, task.error);
                        }
                    }else{
                        // Completed logic here
                    }
                    return nil;
                }] waitUntilFinished];

这主要基于为此库编写的单元测试:https://github.com/aws/aws-sdk-ios/blob/master/AWSS3Tests/AWSS3Tests.m

答案 1 :(得分:6)

刚刚关闭您链接的文档,但这不起作用吗?

[s3Client deleteObjectWithKey:@"objectKey" withBucket:@"my-bucket"];

答案 2 :(得分:1)

Art Gillespie的回答对我来说也很合适。

但是,我还发现您可以通过在S3删除对象请求上设置keybucket属性来实现相同目的:

S3DeleteObjectRequest *dor = [[S3DeleteObjectRequest alloc] init];
dor.key = AWS_OBJ_PATH;
dor.bucket = AWS_BUCKET;

[s3Client deleteObject:dor];