我在使用 AWS SDK for Java 2.0 创建 dynamo DB 表时遇到错误。指定了哈希键但仍然出现错误
@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());
}
};
}
错误:
属性定义中未指定哈希键。类型未知。(服务:DynamoDb,状态代码:400,请求 ID: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());
}
};
}
错误 - 键模式中的属性数必须与属性定义中定义的属性数相匹配。