Когда я загружаю изображение в корзину s3.Я получил ниже ошибки.Я видел эту ошибку в переполнении стека, но не понимаю.Можете ли вы направить меня.На каком этапе я допустил ошибку.
Ошибка: Ошибка Domain = com.amazonaws.AWSS3ErrorDomain Code = 0 "(null)" UserInfo = {RequestId = 9524E756031421C5, Bucket = xxxxxx-xxxxxx-xxxxx,HostId = uxxxxxxxxxx, Message = корзина, к которой вы пытаетесь получить доступ, должна быть адресована с использованием указанной конечной точки.Пожалуйста, отправляйте все будущие запросы к этой конечной точке., Код = PermanentRedirect, Конечная точка = xxxxxx-xxxxxx-xxxxx.s3.amazonaws.com}
Я настроил свой poolid другие вещи в plist, которые приведены ниже.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>amazonaws.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
<key>amazonaws.com.cn</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
<key>AWS</key>
<dict>
<key>CredentialsProvider</key>
<dict>
<key>CognitoIdentity</key>
<dict>
<key>Default</key>
<dict>
<key>PoolId</key>
<string>us-east-1:xxxxxxxxxxxxx</string>
<key>Region</key>
<string>us-east-1</string>
</dict>
</dict>
</dict>
<key>S3TransferManager</key>
<dict>
<key>Default</key>
<dict>
<key>Region</key>
<string>us-east-1</string>
</dict>
</dict>
<key>S3</key>
<dict>
<key>Default</key>
<dict>
<key>Region</key>
<string>us-east-1</string>
</dict>
</dict>
</dict>
У меня есть нижеприведенный код для загрузки изображения.
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.USEast1,
identityPoolId:"us-east-1:xxxxxxxxxxxx")
let configuration = AWSServiceConfiguration(region:.USEast1, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
AWSS3TransferManager.register(with: configuration!, forKey: "USEast1S3TransferManager")
self.transferManager = AWSS3TransferManager.default()
func uploadImage(){
if let filepath = Bundle.main.path(forResource: "temp", ofType: "jpg") {
let imageData = Data()
let fileUrl = NSURL(fileURLWithPath: filepath)
do {
try imageData.write(to: fileUrl as URL, options: Data.WritingOptions.atomic)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest?.bucket = bucketName
uploadRequest?.key = "key.jpg"
uploadRequest?.contentType = "image/jpg"
uploadRequest?.body = fileUrl as URL
transferManager.upload(uploadRequest!).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in
if let error = task.error as NSError? {
if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) {
switch code {
case .cancelled, .paused:
break
default:
print("Error uploading: \(String(describing: uploadRequest?.key!) ) Error: \(error)")
}
} else {
print("Error uploading: \(String(describing: uploadRequest?.key!)) Error: \(error)")
}
return nil
}
let uploadOutput = task.result
print("Upload complete for: \(uploadRequest?.key!)")
return nil
})
}
}
Еще одна вещь, которую я хочу уточнить, есть ли необходимость установить «Ключ доступа» и «Секретный ключ»"в приведенном выше коде или достаточно PoolId для этого.
Thnaks