我已经开始使用DynamoDB,我已经在Mobile Hub上创建了一个项目,并将awsconfiguration.json粘贴到了Android App中。 我想在UserDetails表内创建一个Item。 我正在使用以下代码实例化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文件,但仍然遇到相同的异常。
答案 0 :(得分:0)
您需要将以下代码段添加到awsconfiguration.json文件中。
"DynamoDBObjectMapper" : {
"Default" : {
"Region" : "DYNAMODB-REGION"
}
}