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);
Comments
-
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 over 5 yearsI'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 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 forupdateTimeToLive
you will find the documentation for updating the TTL setting. -
Janik Zikovsky over 5 yearsHow about this link - though it does not have the frames.