Ios AWS S3传输实用程序-如何安排后台上传并克服这些限制?
AWS官方文件规定如下: S3传输实用程序生成AmazonS3预签名URL以用于 后台数据传输。使用Amazon Cognito标识,您将收到 AWS临时凭据的有效期最长为60分钟。同时 时间,生成的S3预签名URL不能超过该时间。 由于此限制,S3传输实用程序强制执行50分钟 传输超时,在AWS临时传输之前留出10分钟的缓冲区 重新生成凭据。50分钟后,您将收到一张转账单 失败 如果您需要传输的数据不能在50以下传输 分钟后,改用AWSS3 在我的情况下,我希望在Wifi可用时安排后台传输。但这可能不会很快发生,很可能会超过60分钟的有效时间 我想知道是否有办法处理这个问题。也许在60分钟后,系统可以以某种方式重试请求,或者让会话排队 你会怎么做?你们中有谁曾经面对过这样的问题并设法解决了它吗 这是我上传文件的代码(请注意,这只是一个示例,在默认配置中,我将发送约200mb的文本文件)Ios AWS S3传输实用程序-如何安排后台上传并克服这些限制?,ios,swift,amazon-web-services,networking,amazon-s3,Ios,Swift,Amazon Web Services,Networking,Amazon S3,AWS官方文件规定如下: S3传输实用程序生成AmazonS3预签名URL以用于 后台数据传输。使用Amazon Cognito标识,您将收到 AWS临时凭据的有效期最长为60分钟。同时 时间,生成的S3预签名URL不能超过该时间。 由于此限制,S3传输实用程序强制执行50分钟 传输超时,在AWS临时传输之前留出10分钟的缓冲区 重新生成凭据。50分钟后,您将收到一张转账单 失败 如果您需要传输的数据不能在50以下传输 分钟后,改用AWSS3 在我的情况下,我希望在Wifi可用时安排后台传输。但
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;
})
}