Итак, я создал корзину S3 со следующей политикой:
{
"Version": "2012-10-17",
"Id": "Policy123",
"Statement": [
{
"Sid": "Stmt123",
"Effect": "Allow",
"Principal": {
"AWS": "User_ARN"
},
"Action": "s3:ListBucket",
"Resource": "Buckent_ARN"
},
{
"Sid": "Stmt1569218242333",
"Effect": "Allow",
"Principal": {
"AWS": "User_ARN"
},
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": "Buckent_ARN/*"
}
]
}
Я также создал Cognito Identity Pool и пользователя IAM.Теперь я пытаюсь загрузить изображение в мое ведро из моего приложения и получаю: операция не может быть завершена.(com.amazonaws.AWSS3TransferUtilityErrorDomain error 2.)
В моем AppDelegate я настраиваю следующее:
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.usWest2,
identityPoolId:"us-west-2:XXXXX")
let configuration = AWSServiceConfiguration(region:.usWest2, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
и пытаюсь загрузить свое изображение следующим образом:
if let imageToUpload = self.myImage {
let awsTransferUtilitytransferUtility = AWSS3TransferUtility.default()
let s3BucketName = "my-bucket"
let pngImage = imageToUpload.pngData()
let filename = "someImage.png"
let fileURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(filename)
do {
try pngImage?.write(to: fileURL)
awsTransferUtilitytransferUtility.uploadData(pngImage!, bucket: s3BucketName, key: filename, contentType: "img/png", expression: nil) { (uploadTask, error) in
if error != nil {
print("error is: \(error!.localizedDescription)")
} else {
print("Task Result: \(uploadTask)")
}
}
} catch {
print("File not saved!")
}
}
Я почти уверен, что это проблема с разрешениями, потому что я создал общедоступную корзину и смог загрузить изображение без проблем.Я новичок в AWS, и разрешения меня очень смущают.Я создал роль IAM, которую я назначил политике сегментов, и настроил пул идентификации Cognito.Но какая связь между Cognito и IAM?Нужно ли указывать в своем коде учетные данные IAM для загрузки?Я сделал мою настройку со следующей статьей: https://medium.com/@haydnjmorris/uploading-photos-to-aws-s3-getting-started-with-cognito-and-iam-c96ba5b5496d
Любая помощь будет принята с благодарностью!