我正在尝试删除上传到S3存储桶的公共图片(cannedACL
的{{1}}属性,以上传图片为S3PutObjectRequest
)。
AWS开发工具包documentation中有一个[S3CannedACL publicRead]
类,但this class似乎没有任何属性或初始化方法。
基于其他语言的示例代码,看起来应该有S3DeleteObjectRequest
或key
属性或设置这些属性的初始化方法,就像在iOS SDK的S3PutObjectRequest
类中一样,用于将文件上传到存储桶。
这里发生了什么? SDK完全不完整吗?有没有办法用iOS AWS SDK删除对象?
答案 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删除对象请求上设置key
和bucket
属性来实现相同目的:
S3DeleteObjectRequest *dor = [[S3DeleteObjectRequest alloc] init];
dor.key = AWS_OBJ_PATH;
dor.bucket = AWS_BUCKET;
[s3Client deleteObject:dor];