AWS S3 Transfer Utility - 如何安排后台上传并克服限制?

时间:2017-01-20 10:02:22

标签: ios swift amazon-web-services networking amazon-s3

AWS官方文档声明如下:

  

S3 Transfer Utility生成用于的Amazon S3预签名URL   后台数据传输。您收到使用Amazon Cognito Identity   AWS临时凭证,有效期最长为60分钟。在同一个   时间,生成的S3预签名网址的持续时间不能超过该时间。   由于此限制,S3 Transfer Utility强制执行50分钟   转移超时,在AWS临时之前留下10分钟的缓冲区   凭据重新生成。 50分钟后,您将收到转账   故障。

     

如果您需要传输50以下无法传输的数据   分钟,改用AWSS3。

在我的情况下,我想在Wifi可用时安排后台转移。这可能不会很快发生,它可能超过60分钟的有效时间。

我想知道是否有办法解决这个问题。也许在60分钟后,系统可以以某种方式重试请求,或者将会话排入队列。

你会怎么做?你们有没有遇到过这样的问题并设法解决它?

这是我上传文件的代码(请注意,这只是一个示例,在默认配置中我将发送文本文件~200mb)

func uploadData(data: NSData) {

let expression = AWSS3TransferUtilityUploadExpression()
expression.progressBlock = progressBlock

let transferUtility = AWSS3TransferUtility.default()

transferUtility.uploadData(
    data as Data,
    bucket: "test",
    key: "test/test.jpeg",
    contentType: "image/jpeg",
    expression: expression,
    completionHander: completionHandler).continue(successBlock: { (task) -> AnyObject! in
        if let error = task.error {
            NSLog("Error: %@",error.localizedDescription);

        }
        if let exception = task.exception {
            NSLog("Exception: %@",exception.description);

        }
        if let _ = task.result {

            NSLog("Upload Starting!")
            // Do something with uploadTask.
        }

        return nil;
    })
}

0 个答案:

没有答案