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;
})
}