Не удалось прочитать регион из AWSConfiguration

Я начал использовать DynamoDB, создал проект в Mobile Hub и вставил файл awsconfiguration.json в приложение для Android. Я хочу создать элемент внутри таблицы UserDetails. Я использую следующий код для создания экземпляров сервисов AWS и DynamoDB.

        AWSMobileClient.getInstance().initialize(this, new AWSStartupHandler() {
        @Override
        public void onComplete(AWSStartupResult awsStartupResult) {

            // Obtain the reference to the AWSCredentialsProvider and AWSConfiguration objects
            credentialsProvider = AWSMobileClient.getInstance().getCredentialsProvider();
            configuration = AWSMobileClient.getInstance().getConfiguration();

            // Add code to instantiate a AmazonDynamoDBClient
            AmazonDynamoDBClient dynamoDBClient = new AmazonDynamoDBClient(credentialsProvider);

            dynamoDBMapper = DynamoDBMapper.builder()
                    .dynamoDBClient(dynamoDBClient)
                    .awsConfiguration(configuration)
                    .build();  //This line is causing exception

            // Use IdentityManager#getUserID to fetch the identity id.
            IdentityManager.getDefaultIdentityManager().getUserID(new IdentityHandler() {
                @Override
                public void onIdentityId(String identityId) {
                    Log.d("YourMainActivity", "Identity ID = " + identityId);

                    // Use IdentityManager#getCachedUserID to
                    //  fetch the locally cached identity id.
                    final String cachedIdentityId =
                            IdentityManager.getDefaultIdentityManager().getCachedUserID();
                }

                @Override
                public void handleError(Exception exception) {
                    Log.d("YourMainActivity", "Error in retrieving the identity" + exception);
                }
            });
        }
    }).execute();

И я получаю исключение:

    07-10 15:46:55.466 20392-20392/com.userdetails.userdetails E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.userdetails.userdetails, PID: 20392
    java.lang.IllegalArgumentException: Failed to read Region from AWSConfiguration please check your setup or awsconfiguration.json file
        at com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapper$Builder.build(DynamoDBMapper.java:328)
        at com.userdetails.userdetails.MainActivity$1.onComplete(MainActivity.java:48)
        at com.amazonaws.mobile.client.AWSMobileClient$2.onComplete(AWSMobileClient.java:164)
        at com.amazonaws.mobile.auth.core.IdentityManager$4.run(IdentityManager.java:635)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6119)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)

Я попытался изменить файл awsconfiguration.json на обновленный, но все равно получаю такое же исключение.

Можете ли вы вставить полную трассировку стека?

Karthikeyan 16.07.2018 23:51

@Karthikeyan Это только журналы ошибок, которые я получаю при запуске метода onComplete ().

Soft Kaka 17.07.2018 03:24

Можете ли вы добавить в awsconfiguration.json следующее? "DynamoDBObjectMapper": {"По умолчанию": {"Регион": "DYNAMODB-REGION"}}

Karthikeyan 17.07.2018 08:22

@Karthikeyan Ваше предложение абсолютно правильное, даже если я исправил это 2-3 дня назад, опубликую это как ответ здесь.

Soft Kaka 17.07.2018 14:01

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

Soft Kaka 17.07.2018 14:05

Извините за причиненные неудобства. Мы обновим это в нашей документации. Вопрос: используете ли вы AWS Mobile Hub?

Karthikeyan 17.07.2018 18:30

@Karthikeyan Да, все, что вы хотите предложить.

Soft Kaka 18.07.2018 13:13
0
7
968
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо добавить следующий фрагмент в файл awsconfiguration.json.

"DynamoDBObjectMapper" : {
    "Default" : {
        "Region" : "DYNAMODB-REGION"
    } 
}

Другие вопросы по теме