2016-01-12 6 views
0

Я пытаюсь загрузить свои файлы с AWS S3 в мое приложение, используя Swift 2. Я добавил запрос на загрузку функции внутри функции.Загрузить заявку от AWS S3 в Swift

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

let transferManager.download (downloadRequest) .continueWithExecutor (AWSExecutor.mainThreadExecutor(), withBlock: {(задача: AWSTask) -> AnyObject в этой строке: последовательные инструкции в строке должны быть разделены символом ';', который не является быстрая запись, отсутствующая в шаблоне, а третья: тип выражения неоднозначен без контекста – Kumar

+0

Я не знаю, правильно ли я выполняю запрос на загрузку, знаете ли вы, как это сделать эффективно? @RodrigoM – Kumar

ответ

0

Если вы получаете это сообщение, вероятно, работает код приложения. Это ошибка AWS, связанная с разрешениями ведомости 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": {} 
    } 
    ] 
} 

первый блок грантов получить (скачать) S3 разрешение на все объекты в ведре. Второй блок предоставляет разрешение на ведение самого ведра.

Вы должны обновить политику, проверив свойства ведра S3, на вкладке «Свойства», затем щелкнув «Изменить политику ведра».

+0

Я исправил проблемы для отказа в доступе - это потому, что у меня не было ведомого списка в моей политике. – Kumar

+0

У меня есть ключ доступа и секретный ключ и вся необходимая информация, но я не понимаю, как скачать запрос, чтобы загрузить ведро на мой iPhone. Кто-нибудь? – Kumar

Смежные вопросы