我在美国西部(即加利福尼亚北部)设置了S3存储桶
我的Pool-ID以“us-east-1:*****”开头
我有以下代码将文件上传到名为AWS_BUCKET_NAME的存储桶中
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USWest1, identityPoolId: AWS_IDENTITY_POOL_ID)
let configuration = AWSServiceConfiguration(region: .USWest1, credentialsProvider: credentialProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
let uploadingFileURL = videoURL
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest?.bucket = AWS_BUCKET_NAME
uploadRequest?.key = fileName
uploadRequest?.body = uploadingFileURL
uploadRequest?.contentType = "video/mp4"
let transferManager = AWSS3TransferManager.default()
transferManager.upload(uploadRequest!).continueWith(executor: AWSExecutor.mainThread())
{ (task) -> Any? in
if task.error == nil
{
return nil
}
else
{
print("Error: \(String(describing: task.error))")
}
return nil
}
通常,它可以成功上传视频文件。但是有时它会像下面这样给与错误
错误域= NSURLErrorDomain代码= -1003“找不到具有指定主机名的服务器。” UserInfo = {NSUnderlyingError = 0x608001a53c50 {Error Domain = kCFErrorDomainCFNetwork代码= -1003“(null)” UserInfo = {_ kCFStreamErrorCodeKey = 8,kCFStreamErrorDomainKey = 12}},NSErrorFailingURLStringKey = https://cognito-identity.us-west-1.amazonaws.com/,NSErrorFailingURLKey = https://cognito-identity.us-west-1.amazonaws.com/Main,kCFStream =找不到具有指定主机名的服务器。}
现在,如果我将AWSCognitoCredentialsProvider中的regionType更改为USEast1或其他,然后再试一次,则它再次给我同样的错误,但是此后,如果我再次设置“USWest1”区域,则它会再次工作。它会继续成功工作5-6次,有时甚至更多。但是在一段时间后再次产生相同的错误。
另一件事,具有相同的池ID和区域,在android中工作正常。仅在iOS中面临此问题。
提前致谢。
最佳答案
最后,我找到了解决方案。这不是正确的答案,但可能会帮助面临此类问题的其他人。
let credentialProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: AWS_IDENTITY_POOL_ID)
let configuration = AWSServiceConfiguration(region: .USWest1, credentialsProvider: credentialProvider)
在Michael - sqlbot发表评论之后,我已经通过依次更改Region进行了检查。最后,我将使用.USEast1创建
AWSCognitoCredentialsProvider
并使用.USWest1配置AWSServiceConfiguration
,它现在可以正常工作。我不知道背后的原因,但可能需要使用正在使用的存储桶区域配置
AWSServiceConfiguration
。关于ios - 将文件上传到AWS S3存储桶,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47257891/