Я пытаюсь настроить загрузку ресурсов изображений из моего приложения в корзину S3:
- Функционально: пользователи приложения проходят проверку подлинности в приложении с помощью пользовательской проверки подлинности приложения, затем они могут создавать сообщения с прикрепленными к ним ресурсами изображений.
- Техническая информация. Я установил корзину S3 общего доступа (регион ЕС Париж) и загрузил туда пользовательские ресурсы приложения.
Я также создал пул удостоверений Cognito с доступом без аутентификации, а затем обновил IAM Unauth_Role, добавив новую настраиваемую политику:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::#BUCKET_NAME#/*"
}
]
}
Затем в проекте ios я установил модули AWSS3.
В AppDelegate этот метод вызывается в didFinishLaunchingWithOptions:
fileprivate func configureAWS()
{
AWSDDLog.sharedInstance.logLevel = .verbose
let credentialsProvider:AWSCognitoCredentialsProvider =
AWSCognitoCredentialsProvider(regionType:AWSRegionType.USEast1,
identityPoolId: "#POOL_ID#")
let configuration = AWSServiceConfiguration(region:AWSRegionType.USEast1, credentialsProvider:credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration
}
Затем в моем контроллере я начинаю загрузку:
if let urlImagePath = localFileURL,
let uploadRequest = AWSS3TransferManagerUploadRequest() {
[uploadRequest configuration…]
}
и, наконец, запустите запрос:
AWSS3TransferManager.default().upload(uploadRequest).continueWith(executor: AWSExecutor.immediate(), block: { (task) -> Any? in
if let error = task.error {
print("❌ Upload image failed with error: (\(error.localizedDescription))")
completionHandler(false)
return nil
}
}
task.error не равен nil, и я получаю следующее сообщение:
Error Domain=com.amazonaws.AWSCognitoIdentityErrorDomain Code=10 "(null)" UserInfo={__type=ResourceNotFoundException, message=IdentityPool 'us-east-1:d4e0d542-089f-4fb4-83be-93946576bc00' not found.}