#android #amazon-web-services #amazon-cognito #android-11 #aws-dynamodb
Вопрос:
У меня есть приложение для Android, чтобы загрузить некоторые строки в таблицу Amazon DynamoDB. Это приложение использует пулы, прошедшие проверку подлинности cognitoUnauthenticated. Когда я пытаюсь подключить свое приложение к Amazon DynamoDB, я получаю следующее исключение
E/KeyProvider23: Error in deleting the key for keyAlias: com.amazonaws.android.auth.aesKeyStoreAlias from Android KeyStore.
java.security.KeyStoreException: Failed to delete entry: com.amazonaws.android.auth.aesKeyStoreAlias
at android.security.keystore.AndroidKeyStoreSpi.engineDeleteEntry(AndroidKeyStoreSpi.java:879)
at java.security.KeyStore.deleteEntry(KeyStore.java:1257)
at com.amazonaws.internal.keyvaluestore.KeyProvider23.deleteKey(KeyProvider23.java:118)
at com.amazonaws.internal.keyvaluestore.AWSKeyValueStore.retrieveEncryptionKey(AWSKeyValueStore.java:493)
at com.amazonaws.internal.keyvaluestore.AWSKeyValueStore.get(AWSKeyValueStore.java:226)
at com.amazonaws.auth.CognitoCachingCredentialsProvider.getCachedIdentityId(CognitoCachingCredentialsProvider.java:577)
at com.amazonaws.auth.CognitoCachingCredentialsProvider.initialize(CognitoCachingCredentialsProvider.java:433)
at com.amazonaws.auth.CognitoCachingCredentialsProvider.<init>(CognitoCachingCredentialsProvider.java:195)
at com.mysample.servicesample.AmazonClientManager.lambda$initClients$0$AmazonClientManager(AmazonClientManager.java:40)
at com.mysample.servicesample.-$Lambda$AmazonClientManager$M9LDF0L5OYsIomcIVw0vQmIFrUc.run(Unknown Source:2)
at java.lang.Thread.run(Thread.java:923)
2021-09-17 16:42:04.703 22047-22080/com.mysample.servicesample E/AWSKeyValueStore: Error in retrieving the decryption key used to decrypt the data from the persistent store. Returning null for the requested dataKey = us-east-2:XXXXXXXXXXXXXX-pool_Id.identityId
Пример кода является
private void initClients() {
Thread thread = new Thread(() -> {
CognitoCachingCredentialsProvider credentialsProvider = null;
try {
credentialsProvider = new CognitoCachingCredentialsProvider(
context.getApplicationContext(),
IDENTITY_POOL_ID,
Regions.US_EAST_2 // Region
);
} catch (Exception ex) {
Log.e("Convo",ex.getMessage());
}
ddb = new AmazonDynamoDBClient(credentialsProvider);
ddb.setRegion(Region.getRegion(Regions.US_EAST_2));
});
thread.start();
}
Ответ №1:
Чтобы создать собственное приложение для Android, которое вызывает сервисы AWS, включая Amazon DynamoDB, используйте пакет SDK AWS для Kotlin. Смотрите этот учебник по AWS, в котором вы узнаете, как использовать этот SDK для создания приложения для Android, которое взаимодействует с DynamoDB.
Создание вашего первого собственного приложения для Android с использованием AWS SDK для Kotlin