Migrate "DynamoDBAutoGeneratedKey" to DynamoDbEnhancedClient

0

I am using AWS version 2 and using DynamoDbEnhancedClient for dynamodb operations. I want to have a primary key which should be auto-generated. I see that in previous version of DynamoDB, we have the option of using DynamoDBAutoGeneratedKey annotation for this. But I am not able to find way to configure a auto-generated key with AWS version 2 (DynamoDbEnhancedClient )

Can somebody guide me please.

Thanks,

Satish

Satish
asked 2 years ago974 views
2 Answers
1

This functionality is not yet available for Enhanced Client. I would suggest adding a feature request on the repo: https://github.com/aws/aws-sdk-java-v2/tree/master/services-custom/dynamodb-enhanced

profile pictureAWS
EXPERT
answered 2 years ago
0

To achieve this in DynamoDbEnhancedClient first we need to activate the extension while creating the DynamoDbEnhancedClient bean. Please find the attached code for your reference

Step 1 :-

public DynamoDbClient getDynamoDbClientForEC2() {
        return DynamoDbClient.builder()
                .region(Region.of(awsRegion))
                .credentialsProvider(InstanceProfileCredentialsProvider.create())
                .endpointOverride(URI.create(awsDynamoDBEndPoint))
                .build();
    }
 @Bean
 @ConditionalOnProperty(prefix = "aws", name = "access.secured", havingValue = "enabled")
    public DynamoDbEnhancedClient getDynamoDbEnhancedClientForEC2() {
        return DynamoDbEnhancedClient.builder()
                .dynamoDbClient(getDynamoDbClientForEC2())
                .extensions(AutoGeneratedTimestampRecordExtension.create(), AutoGeneratedUuidExtension.create())
                .build();
    }

Step 2 :- Finally, you can tell DynamoDbEnhancedClient to autogenerate the key for you in the entity class,

@DynamoDbBean
public class MyEntity {
private String myPartionKey;

 @DynamoDbPartitionKey
 @DynamoDbAutoGeneratedUuid 
    public String getMyPartionKey() {
        return myPartionKey;
    }
}
answered 3 months ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions