我正在尝试使用Swift 2将我的文件从AWS S3下载到我的应用程序中。 我在函数中添加了一个创建下载请求。
func checkS3Download(){
// create download request
let downloadFilePath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("item")
let downloadingFileURL = NSURL(fileURLWithPath:downloadFilePath)
let downloadRequest: AWSS3TransferManagerDownloadRequest = AWSS3TransferManagerDownloadRequest()
downloadRequest.bucket = "bucketname"
downloadRequest.key = "item"
downloadRequest.downloadingFileURL = downloadingFileURL
我遇到以下代码问题: 试图让服务器下载到我的应用程序上。
let transferManager.download(downloadRequest).continueWithExecutor(AWSExecutor.mainThreadExecutor(), withBlock: {(task: AWSTask) -> AnyObject in
if task.error {
if (task.error.domain == AWSS3TransferManagerErrorDomain) {
switch task.error.code {
case AWSS3TransferManagerErrorCancelled, AWSS3TransferManagerErrorPaused:
break
default:
NSLog("Error: %@", task.error)
}
}
else {
// Unknown error.
NSLog("Error: %@", task.error)
}
}
if task.result {
var downloadOutput: AWSS3TransferManagerDownloadOutput = task.result
//File downloaded successfully.
}
return nil
})
}
如果有人可以帮助我了解如何解决我的问题,以便在我的应用程序上下载,我将非常感激。
答案 0 :(得分:0)
如果您收到该消息,则应用程序代码可能正常运行。这是与S3存储桶权限相关的AWS错误。
确保您的S3存储桶具有正确的权限。正确的存储桶策略如下所示:
{
"Statement": [
{
"Sid": "Stmt1350703615347",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::bucketname/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": ["arn:aws:s3:::bucketname"],
"Condition": {}
}
]
}
第一个块授予对存储桶中所有对象的S3权限(下载)。第二个块授予存储桶本身的列表权限。
您应该通过检查S3存储桶属性,在Properties选项卡下,然后单击Edit bucket policy来更新策略。