Головной объект AWS S3 не может разрешить отправку - PullRequest
0 голосов
/ 06 января 2019

Используя этот другой пост SO Я смог определить, как лучше всего определить, был ли объект уже в моем контейнере S3. Тем не менее, мой код, кажется, не в порядке, и я не знаком с ошибками AWS.

Для начала, я знаю, что мой AWS работает, поскольку у меня уже есть код, который обращается к корзине.

static func uploadData(data:Data, progressHandler: @escaping (_ progress:Progress) -> Void, completionHandlerFunction: @escaping () -> Void, DBKey:String) {

    let expression = AWSS3TransferUtilityUploadExpression()
    expression.progressBlock = { (task, progress) in
        DispatchQueue.main.async(execute: {
            progressHandler(progress)
        })
    }

    var completionHandler: AWSS3TransferUtilityUploadCompletionHandlerBlock?
    completionHandler = { (task, error) -> Void in
        DispatchQueue.main.async(execute: {
            completionHandlerFunction()
            if(error != nil) {
                print(error!.localizedDescription)
            }
            else {
                print(task.response!)
            }
        })
    }

    let transferUtility = AWSS3TransferUtility.default()

    transferUtility.uploadData(data,
                               bucket: self.bucketName,
                               key: DBKey,
                               contentType: "video/mp4",
                               expression: expression,
                               completionHandler: completionHandler).continueWith {
                                (task) -> AnyObject? in
                                if let error = task.error {
                                    print("Error: \(error.localizedDescription)")
                                }

                                if let _ = task.result {
                                    // Do something with uploadTask.
                                }
                                return nil;
    }
}

Итак, я пытаюсь использовать аналогичную стратегию, чтобы определить, существует ли предмет

static func checkForItem(item:String, foundHandler: @escaping () -> Void, notFoundHandler: @escaping () -> Void) {
    let s3 = AWSS3.default()

    let request = AWSS3HeadObjectRequest()
    request!.bucket = Storage.bucketName
    request!.key = item

    s3.headObject(request!).continueWith { (task) -> Any? in
        if let error = task.error {
            notFoundHandler()
        }
        else {
            foundHandler()
        }
        return 0
    }
}

Кажется, однако, что в тот момент, когда я прошёл let s3 = AWSS3.default(), он переходит в Error

Есть ли какой-нибудь подход к тому, почему AWSS3.default() может создать такую ​​ситуацию? Я даже не получаю доступ к своему ведру или любой важной информации. Мои Cocoapods обновлены (только запускал их), но я готов попробовать что угодно, чтобы это заработало. Спасибо за помощь!

1 Ответ

0 голосов
/ 06 января 2019

Используя Mobile Hub Amazon Web Service, я скачал awsconfiguration.json и вставил его в свое приложение.

{
    "UserAgent": "MobileHub/1.0",
    "Version": "1.0",
    "CredentialsProvider": {
        "CognitoIdentity": {
            "Default": {
                "PoolId": "MyPoolID",
                "Region": "MyRegion"
            }
        }
    },
    "IdentityManager": {
        "Default": {}
    },
    "S3TransferUtility": {
        "Default": {
            "Bucket": "MyBucket",
            "Region": "MyRegion"
        }
    },
    "DynamoDBObjectMapper": {
        "Default": {
            "Region": "MyRegion"
        }
    },
    "PinpointAnalytics": {
        "Default": {
            "AppId": "myAppId",
            "Region": "MyRegion"
        }
    },
    "PinpointTargeting": {
        "Default": {
            "Region": "MyRegion"
        }
    },
    "UserFileManager": {
        "Default": {
            "Bucket": "MyBucket",
            "Region": "MyRegion"
        }
    },
}

Однако у меня не было части S3. Он не пришел от Mobile Hub , поэтому я решил отредактировать его и посмотреть, работает ли он, и он работал! Я добавил это,

"S3": {
    "Default": {
        "Bucket": "MyBucket",
        "Region": "MyRegion"
    }
}

до дна JSON, и это сработало!

Для всех, у кого проблемы с Amazon, убедитесь, что все ваши файлы aws настроены соответствующим образом!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...