Процесс загрузки изображения в s3 с помощью AWS Appsync || Загрузка изображений iOS с помощью Appsync - PullRequest
0 голосов
/ 17 сентября 2018

Я работаю над новым проектом, который требует загрузки вложений в виде изображений.Я использую DynamoDB и AppSync API для вставки и извлечения данных из базы данных.Поскольку мы новичок в AppSync и во всех сервисах и базе данных amazon, которые мы используем для приложения, я немного запутался в процессе аутентификации.Прямо сейчас мы используем ключ API для аутентификации, и я попробовал эти шаги для загрузки изображения в s3.

1 Настройте AWSServiceManager со статической конфигурацией, например: -

let staticCredit =  AWSStaticCredentialsProvider(accessKey: kAppSyncAccessKey, secretKey: kAppSyncSecretKey)
let AppSyncRegion: AWSRegionType = .USEast2
let config = AWSServiceConfiguration(region: AppSyncRegion, credentialsProvider: staticCredit)
AWSServiceManager.default().defaultServiceConfiguration = config

2 Загрузкакартинка с этим методом: -

func updatePictureToServer(url:URL, completion:@escaping (Bool)->Void){
    let transferManager = AWSS3TransferManager.default()
    let uploadingFileURL = url
    let uploadRequest = AWSS3TransferManagerUploadRequest()
    let userBucket = String(format: "BUCKET")
    uploadRequest?.bucket = userBucket
    let fileName = String(format: "%@%@", AppSettings.getUserId(),".jpg")
    uploadRequest?.key = fileName
    uploadRequest?.body = uploadingFileURL
    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)")
            }
            completion(false)
            return nil
        }

        _ = task.result
        completion(true)
        print("Upload complete for: \(String(describing: uploadRequest!.key))")
        return nil
    })
}

3 И, наконец, я могу увидеть загруженное изображение на S3 ведро

enter image description here

Но я обеспокоен тем, как сохранить URL-адрес изображения и как получить изображение, потому что, когда мне нужно сделать PUBLIC для получения изображения, и я не думаю, что это хороший подход, плюс он необходимиметь пул пользователей Cognito, потому что мы еще не используем пул пользователей Cognito в нашем приложении и не обладаем достаточными знаниями об этом, а документы не помогают в практических ситуациях, потому что мы впервые внедряем ti, поэтому нам нужна небольшая помощь.

Итак, два вопроса: -

  1. Правильная процедура для загрузки и извлечения изображений для S3 и AppSync.
  2. Нужно ли вамse Пул пользователей Cognito для загрузки и извлечения изображений.

Спасибо

Примечание. Любые предложения или улучшения или что-либо, связанное с AppSync, S3 или DynamoDB, будут по-настоящему оценены иязык - это не барьер, а просто поиск направлений, так быстро или объективно - без проблем.

1 Ответ

0 голосов
/ 21 сентября 2018

Вам нужна индивидуальная защита для корзины с использованием Cognito Federated Identities, которая дает каждому пользователю их собственную безопасную корзину. Вы можете использовать AWS Amplify, чтобы настроить его для своего проекта с $amplify add auth и выбрав конфигурацию по умолчанию, а затем $amplify add storage, которая конфигурирует этот сегмент и пул с соответствующими разрешениями для использования личных загрузок.

Для получения дополнительной информации оформите репо: https://github.com/aws-amplify/amplify-cli

...