com.networknt.aws.lambda.cache.DynamoDbCacheManager Maven / Gradle / Ivy
package com.networknt.aws.lambda.cache;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClientBuilder;
import com.amazonaws.services.dynamodbv2.document.*;
import com.amazonaws.services.dynamodbv2.model.*;
import com.networknt.aws.lambda.utility.LambdaEnvVariables;
import com.networknt.cache.CacheManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
/**
* This is the cache manager that can survive the cold start of the lambda function.
*/
public class DynamoDbCacheManager implements CacheManager {
private static final Logger LOG = LoggerFactory.getLogger(DynamoDbCacheManager.class);
private static final String HASH_ID_KEY = "Id";
private static final int TABLE_LIST_LIMIT = 100;
private static final Map tables = new HashMap<>();
private final AmazonDynamoDB dynamoClient;
private final DynamoDB dynamoDB;
boolean tableInitiated;
@Override
public void addCache(String cacheName, long maxSize, long expiryInMinutes) {
if(!doesTableExist(cacheName)) {
LOG.debug("Table does not exist so we need to create it....");
createCacheTable(cacheName);
}
Table table = this.dynamoDB.getTable(cacheName);
tables.put(cacheName, table);
}
@Override
public Map © 2015 - 2025 Weber Informatics LLC | Privacy Policy