我正在尝试使用Swift 2将文件从亚马逊网络服务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
})
}
如果有人能帮助我了解如何修复我的问题,以便在我的应用程序上下载,我将非常感激。
发布于 2016-01-15 00:11:03
如果您收到了该消息,则应用程序代码可能正在工作。这是一个亚马逊网络服务的错误,与S3存储桶权限相关。
请确保您的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": {}
}
]
}
第一个块将get (download) S3权限授予存储桶中的所有对象。第二个块授予存储桶本身的list权限。
您应该通过检查属性选项卡下的S3存储桶属性,然后单击编辑存储桶策略来更新策略。
https://stackoverflow.com/questions/34744620
复制相似问题