ios - AWSS3TransferManagerErrorCancelled 是什么意思以及如何摆脱它?

标签 ios objective-c amazon-web-services amazon-s3 amazon-cognito

我最近尝试学习如何使用 Amazon AWS iOS SDK,因为我想将一些文件放在允许应用程序用户下载的服务器上。

我已经下载了 samples由亚马逊提供并研究了它们: https://github.com/awslabs/aws-sdk-ios-samples/tree/master/S3TransferManager-Sample/Objective-C

在我尝试从存储桶下载图像之前,将文件上传到我的 S3 存储桶的过程非常顺利。

我跟踪代码,找到了问题发生的地方。

[[transferManager download:self.downloadRequest1] continueWithExecutor:[BFExecutor mainThreadExecutor] withBlock:^id(BFTask *task) {
    if (task.error != nil){
        if(task.error.code != AWSS3TransferManagerErrorCancelled && task.error.code != AWSS3TransferManagerErrorPaused){
            NSLog(@"%s Error: [%@]",__PRETTY_FUNCTION__, task.error);
            self.downloadStatusLabel.text = StatusLabelFailed;
        }
    } else {
        self.downloadRequest1 = nil;
        downloadCount++;
        if(3 == downloadCount){
            self.downloadStatusLabel.text = StatusLabelCompleted;
        }
    }
    return nil;
}];

我打印了 task.error.code 的值,发现它是 1 (AWSS3TransferManagerErrorCancelled)。 由于没有AWSS3TransferManagerErrorCancelled的异常处理,程序没有显示错误信息,下载文件失败。

我试图找到 AWSS3TransferManagerErrorCancelled 的含义,但没有成功。

有谁知道为什么错误代码 = 1 (AWSS3TransferManagerErrorCancelled) 以及如何解决?考虑到这是亚马逊提供的教程,我相信我一定错过了一些非常简单的东西。

最佳答案

经过一番研究,终于弄明白是权限问题。

因此,当我创建身份池时,系统询问您是否要启用对未验证身份的访问。 如果您启用此选项,AWS 将为您提供一个默认的未验证身份,后缀为 Unauth_DefaultRole。 问题是 AWS 不会自动将“获取”权限授予此身份。 您仍然需要将此操作添加到 xxxUnauth_DefaultRole 的策略中。

因此,这是我修改后的策略,允许未经身份验证的用户从我的存储桶下载文件。

{
"Version": "2012-10-17",
"Statement": [{
    "Action": [
        "mobileanalytics:PutEvents",
        "cognito-sync:*",
        "s3:ListBucket",
        "s3:Get*"
    ],
    "Effect": "Allow",
    "Resource": [
        "*"
    ]
}]
}

希望这对同样是 AWS 新手的人有所帮助。

关于ios - AWSS3TransferManagerErrorCancelled 是什么意思以及如何摆脱它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27298275/

相关文章:

iphone - 确定 MPMoviez Controller 比特率

iphone - 将 iOS 应用程序请求签名到服务器以防止垃圾邮件

ios - Facebook Graph API v2.1 升级通知-iOS

iphone - 以升序显示记录-逻辑问题

ios - 将图像上传到 S3 无法完成上传

amazon-web-services - AWS Cloudfront 在发送到源之前删除特定的 cookie

r - 我可以退出 aws 中运行 rstudio 服务器的选项卡吗?

iOS 通用链接 NSURLAuthenticationMethodServerTrust kAuthenticationErr

ios - 在 Xcode 中通过 Objective-C 代码测试 Swift 代码

ios - MWPhotoBrowser - 导航栏在 iOS 8 中消失