Как изменить регион AWS во время выполнения с помощью iOS SDK? - PullRequest
0 голосов
/ 25 июня 2019

Заранее спасибо. Я планирую выпустить приложение в разных странах, где пользователям будет предоставлена ​​возможность выбрать страну и в зависимости от выбора будет использоваться их соответствующий регион aws.

Первый раз вход в систему работает нормально, когда пользователь выбирает регион, а загрузка S3 работает нормально.

Но если пользователь выходит из системы, а затем другой пользователь входит в систему с другим регионом, загрузка s3 завершается с ошибкой тайм-аута.

Вот код:

guard let config = AWSServiceConfiguration(region: regionTypeByString(regionString: userData.getS3RegionBasedOnSelection()), credentialsProvider: self.awsAuthenticationProvider) else { return }
AWSS3TransferUtility.register(with: config, forKey: "Transfer")

AWSS3TransferUtility.s3TransferUtility(forKey: "Transfer")?.uploadFile(
                fileUrl,
                bucket: bucketPath,
                key: key,
                contentType: "application/octet-stream",
                expression: expression,
                completionHandler: { (task, error) in

                    if error != nil {
                        DDLogInfo("!!!!!! Error RAW: \(String(describing: error))")
                        DDLogInfo("!!!!!! Error Code: \(error!.code)")
                        DDLogInfo("!!!!!! Error Description: \(error!.localizedDescription)")
                    }
                })

Как правильно изменить / переключить регион s3?

1 Ответ

0 голосов
/ 28 июня 2019

Для каждого региона создайте конфиг и зарегистрируйте его под соответствующими ключами.И сделайте то же самое при инициализации AWSS3.

например:

region1:

let config = AWSServiceConfiguration(region: .USWest1, credentialsProvider: getAwsAuthenticationProvider())
AWSS3.register(with: config, forKey: "USWest1")
AWSS3TransferUtility.register(with: config, forKey: "USWest1")
//--> later in code
    let transferUtility = AWSS3TransferUtility.s3TransferUtility(forKey: "USWest1")
    transferUtility.uploadFile ()

region2:

let config = AWSServiceConfiguration(region: .USWest2, credentialsProvider: getAwsAuthenticationProvider())
AWSS3.register(with: config, forKey: "USWest2")
AWSS3TransferUtility.register(with: config, forKey: "USWest2")
//--> later in code
     let transferUtility = AWSS3TransferUtility.s3TransferUtility(forKey: "USWest2")
     transferUtility.uploadFile ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...