イメージをs3にアップロードしようとしましたが、その理由は不明のため毎回失敗します。AWS iOS SDKでのS3アップロードが毎回失敗する
private func uploadImageToS3(withS3Path s3path: String, image: UIImage, progress: (Float -> Void)?) -> BFTask{
let path: NSString = NSTemporaryDirectory().stringByAppendingString("profile_image.jpg")
let imageData = UIImageJPEGRepresentation(image, 0.8)
imageData?.writeToFile(path as String, atomically: true)
let url: NSURL = NSURL(fileURLWithPath: path as String)
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest.bucket = "my_bucket"
uploadRequest.key = s3path
uploadRequest.contentType = "image/jpg"
uploadRequest.body = url
let transferManager = CognitoCredentialProvider.sharedInstance.s3TransferManager
let completionSource = BFTaskCompletionSource()
transferManager.upload(uploadRequest).continueWithExecutor(AWSExecutor.mainThreadExecutor(), withBlock: {(task:AWSTask!) in
if task.error != nil{
completionSource.setError(task.error!)
return nil
}else{
completionSource.setResult(s3path)
}
return nil
})
return completionSource.task
}
アップロードは短時間で開始されますが失敗します。ログ:
Progress 0.126221
Progress 0.252442
Progress 0.378663
Progress 0.504884
AWSiOSSDKv2 [Error] AWSURLSessionManager.m line:260 | -[AWSURLSessionManager URLSession:task:didCompleteWithError:] | Session task failed with error: Error Domain=NSURLErrorDomain Code=-1017 "cannot parse response" UserInfo={NSUnderlyingError=0x7fda2f90e3c0 {Error Domain=kCFErrorDomainCFNetwork Code=-1017 "(null)" UserInfo={_kCFStreamErrorCodeKey=-1, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey= https://s3-us-west-2.amazonaws.com/my_bucket/profile_image/cognitoID/profile_image.jpg , NSErrorFailingURLKey= https://s3-us-west-2.amazonaws.com/my_bucket/profile_image/cognitoID/profile_image.jpg , _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-1, NSLocalizedDescription=cannot parse response}
転送マネージャの初期化:
let kclIdentityProvider = KCLCognitoIdentityProvider(regionType: .USEast1, identityPoolId: "poolID", userSession: UserSession.sharedInstance)
let cognitoCredProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityProvider: kclIdentityProvider, unauthRoleArn: nil, authRoleArn: nil)
self.credProvider = cognitoCredProvider
let configuration = AWSServiceConfiguration(region: AWSRegionType.USEast1, credentialsProvider: cognitoCredProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
// s3, sns use uswest2
let usWest2 = AWSServiceConfiguration(region: AWSRegionType.USWest2, credentialsProvider: self.credProvider)
AWSS3TransferManager.registerS3TransferManagerWithConfiguration(usWest2, forKey: "USWest2S3")
AWSSNS.registerSNSWithConfiguration(usWest2, forKey: "USWest2SNS")
self.snsClient = AWSSNS(forKey: "USWest2SNS")
self.s3TransferManager = AWSS3TransferManager.S3TransferManagerForKey("USWest2S3")
は私が何とかアップロードが失敗した理由に関する詳細な情報を得ることができますか?