最近,我尝试学习如何使用Amazon,因为我想将一些文件放在允许应用程序用户下载的服务器上。
我下载了亚马逊提供的样本,并对其进行了研究: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
)以及如何解决它吗?考虑到这是一个由Amazon提供的教程,我相信我一定会错过一些非常简单的东西。
发布于 2014-12-06 02:31:33
经过一些研究,我终于发现这是权限问题。
因此,当我创建标识池时,系统询问您是否希望启用对未经身份验证的身份的访问。如果启用此选项,AWS将为您提供由Unauth_DefaultRole固定的默认未验证身份。问题是AWS不会自动授予"Get“对此身份的权限。您仍然需要将此操作添加到xxxUnauth_DefaultRole策略中。
因此,这里是我修改的策略,允许未经身份验证的用户从桶中下载文件。
{
"Version": "2012-10-17",
"Statement": [{
"Action": [
"mobileanalytics:PutEvents",
"cognito-sync:*",
"s3:ListBucket",
"s3:Get*"
],
"Effect": "Allow",
"Resource": [
"*"
]
}]
}
希望这能帮助一些人谁也是新的AWS。
https://stackoverflow.com/questions/27298275
复制相似问题