How to set TTL in Java based app for DynamoDB

13,393

Solution 1

AmazonDynamoDBClient.updateTimeToLive documented here or direct link here

Solution 2

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/time-to-live-ttl-how-to.html

    public void function(final AmazonDynamoDB client, final String tableName, final String ttlField){

        //table created now enabling TTL
        final UpdateTimeToLiveRequest req = new UpdateTimeToLiveRequest();
        req.setTableName(tableName);

        final TimeToLiveSpecification ttlSpec = new TimeToLiveSpecification();
        ttlSpec.setAttributeName(ttlField);
        ttlSpec.setEnabled(true);
        req.withTimeToLiveSpecification(ttlSpec);

        client.updateTimeToLive(req);
    }

Solution 3

Code Sample here.

  //Then set ttl field like below for days in java
    //ttl 60 days
    Calendar cal = Calendar.getInstance(); //current date and time      
    cal.add(Calendar.DAY_OF_MONTH, 60); //add days
    double ttl =  (cal.getTimeInMillis() / 1000L);
Share:
13,393
idmitriev
Author by

idmitriev

I am a Software Engineer

Updated on June 17, 2022

Comments

  • idmitriev
    idmitriev almost 2 years

    Hi I need to set time to live programmatically for a table in DynamoDB via AWS Java SDK. Is it possible? I know that TTL feature is introduced recently - http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html

    UPDATE: There is no special annotaion, but we can do it manually:

    @DynamoDBAttribute
    private long ttl;
    

    and configure it as ttl in AWS - http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/time-to-live-ttl-how-to.html

    long now = Instant.now().getEpochSecond(); // unix time
    long ttl = 60 * 60 * 24; // 24 hours in sec
    setTtl(ttl + now); // when object will be expired
    
  • Janik Zikovsky
    Janik Zikovsky over 5 years
    I'm not sure this link is correct, it just brings me to the root of AWS SDK documentation, which is not terribly useful...
  • Mark B
    Mark B over 5 years
    @JanikZikovsky it's difficult to deep link into the documentation there, but if you go to the link and then search for AmazonDynamoDBClient, go to that page then search for updateTimeToLive you will find the documentation for updating the TTL setting.
  • Janik Zikovsky
    Janik Zikovsky over 5 years
    How about this link - though it does not have the frames.