Я начал использовать 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 Это только журналы ошибок, которые я получаю при запуске метода onComplete ().
Можете ли вы добавить в awsconfiguration.json следующее? "DynamoDBObjectMapper": {"По умолчанию": {"Регион": "DYNAMODB-REGION"}}
@Karthikeyan Ваше предложение абсолютно правильное, даже если я исправил это 2-3 дня назад, опубликую это как ответ здесь.
Я думал, вы предоставите мне другое решение. Также, если вы из AWS, пожалуйста, исправьте эти вещи, чтобы разработчики не сталкивались с этими глупыми ошибками.
Извините за причиненные неудобства. Мы обновим это в нашей документации. Вопрос: используете ли вы AWS Mobile Hub?
@Karthikeyan Да, все, что вы хотите предложить.
Вам необходимо добавить следующий фрагмент в файл awsconfiguration.json.
"DynamoDBObjectMapper" : {
"Default" : {
"Region" : "DYNAMODB-REGION"
}
}
Можете ли вы вставить полную трассировку стека?