Невозможно получить доступ к таблицам DynamodB через кластер DAX
Создал кластер [cluster name : staging-dax-cluster.ckbrjt.clustercfg.dax.use1.cache.amazonaws.com]
в сша-восток-1 регион. Когда я пытаюсь использовать кластер, получаю следующие исключения.
Общая поддержка журналов lib устарела. Переключитесь на бэкэнд slf4j. Приложение Cloud Watch больше не поддерживается. Используйте приложение stdOut или SLF4J с поддержкой.
Exception in thread "main" com.amazon.dax.client.exceptions.DaxServiceException: NotImplementedException
at com.amazon.dax.client.dynamodbv2.ExceptionTranslator.createValidationException(ExceptionTranslator.java:91)
at com.amazon.dax.client.dynamodbv2.ExceptionTranslator.translateException(ExceptionTranslator.java:80)
at com.amazon.dax.client.dynamodbv2.DaxClient.handleException(DaxClient.java:1898)
at com.amazon.dax.client.dynamodbv2.DaxClient.describeTable(DaxClient.java:610)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$21.call(ClusterDaxClient.java:328)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$21.call(ClusterDaxClient.java:325)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$RetryHandler.makeRequestWithRetries(ClusterDaxClient.java:635)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient.makeReadRequestWithRetries(ClusterDaxClient.java:604)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient.describeTable(ClusterDaxClient.java:325)
at com.amazonaws.services.dynamodbv2.util.TableHelper.verifyTableExists(TableHelper.java:51)
at com.amazonaws.services.dynamodbv2.util.TableHelper.verifyOrCreateTable(TableHelper.java:117)
at com.amazonaws.services.dynamodbv2.transactions.TransactionManager.verifyOrCreateTransactionTable(TransactionManager.java:180)
at com.usermind.integrations.api.dao.DynamoDbPersistenceContext.verifyOrCreateTransactionTables(DynamoDbPersistenceContext.java:151)
at com.usermind.integrations.api.dao.DynamoDbPersistenceContext.<init>(DynamoDbPersistenceContext.java:138)
at com.usermind.integrations.api.App.initPersistenceContext(App.java:143)
at com.usermind.integrations.api.AbstractSparkApp.run(AbstractSparkApp.java:17)
at com.usermind.integrations.api.App.main(App.java:93)
2 ответа
DAX не распознает операции DynamoDB для управления таблицами, в вашем случае "descriptionTable". Операции чтения и записи поддерживаются. Смотрите документацию для подробных API.
DAX не поддерживает операции управления таблицами, например
DescribeTable
.Это довольно странно, потому что, когда мы определяем контроль доступа к DAX через IAM, обратитесь к AWS Doc; независимо от конкретной операции, для которой нам нужна поддержка (например: «Только чтение», «Чтение и запись» и т. д.); добавление действия: dynamodb:DescribeTable является обязательным.
Поскольку
dynamodb:DescribeTable
требуется действие, чтобы DAX сохранял метаданные о таблице.Но мы не можем вызвать API DescribeTable через клиент DAX, поскольку он не поддерживается. Нам все еще нужно определить его в политике IAM (и, в свою очередь, в IAC), поскольку он использует его «под капотом», как описано выше.