Я получаю сообщение об ошибке при создании таблицы динамической БД с использованием AWS SDK для Java 2.0. Ключ ha sh указан, но все еще появляется ошибка
@Bean
ApplicationRunner applicationRunner(DynamoDbClient dynamoDbClient) {
return args -> {
dynamoDbClient.listTables().tableNames().forEach(System.out::println);
CreateTableRequest createTableRequest =
CreateTableRequest.builder()
.keySchema(
KeySchemaElement.builder().keyType(KeyType.HASH).attributeName("id").build())
.attributeDefinitions(
AttributeDefinition.builder()
.attributeName("campaign_name")
.attributeType(ScalarAttributeType.S)
.build())
.provisionedThroughput(
ProvisionedThroughput.builder()
.readCapacityUnits(5L)
.writeCapacityUnits(5L)
.build())
.tableName("campaign")
.build();
try {
dynamoDbClient.createTable(createTableRequest);
dynamoDbClient.listTables().tableNames().forEach(System.out::println);
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
}
};
}
Ошибка:
Ha sh Ключ не указан в определениях атрибутов. Тип неизвестен. (Сервис: DynamoDb, Код состояния: 400, Идентификатор запроса: bed4b8c3-f312-4a9d-8d7b-a2184dacce54)
Я пытаюсь создать таблицу с ключевым и неключевым столбцом
@Bean
ApplicationRunner applicationRunner(DynamoDbClient dynamoDbClient) {
return args -> {
dynamoDbClient.listTables().tableNames().forEach(System.out::println);
CreateTableRequest createTableRequest =
CreateTableRequest.builder()
.attributeDefinitions(
AttributeDefinition.builder()
.attributeName("id")
.attributeType(ScalarAttributeType.S)
.build(),
AttributeDefinition.builder()
.attributeName("name")
.attributeType(ScalarAttributeType.S)
.build())
.keySchema(
KeySchemaElement.builder()
.keyType(KeyType.HASH)
.attributeName("campaign_id")
.build())
.provisionedThroughput(
ProvisionedThroughput.builder()
.readCapacityUnits(5L)
.writeCapacityUnits(5L)
.build())
.tableName("campaign")
.build();
try {
dynamoDbClient.createTable(createTableRequest);
dynamoDbClient.listTables().tableNames().forEach(System.out::println);
} catch (DynamoDbException e) {
System.err.println(e.getMessage());
}
};
}
Ошибка - Количество атрибутов в схеме ключей должно соответствовать количеству атрибутов, определенных в определениях атрибутов.