iOS AWS S3 неавторизованный доступ - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь настроить загрузку ресурсов изображений из моего приложения в корзину 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.}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...