我有一个 JAVA 8 AWS lambda 函数,它在容器第一次启动时有一些非常昂贵的设置。它必须调用以提取各种凭据/证书。我想缓存这个设置(其输出是一个 SSLContext 对象,用于调用另一个 api)。
我以前不必这样做,而我似乎找不到答案的问题是:
在 Lambda 容器处于活动状态时一遍又一遍地重用 SSLContext 对象是否存在任何问题?这可能是 15 分钟或 5 小时,或 2 天等。只要有流量通过它,它就会活着。
所有凭据都不会更改,并且 SSLContext 对象在所有调用之间都是相同的。
SSLContext 对象是否有 TTL?创建 SSLConext 的代码是相当样板的。在我完成昂贵的 pull 以获取 certs/cred 并且我想缓存此 SSLContext 对象后调用此方法:
public SSLContext getContext(){
KeyStore clientStore = KeyStore.getInstance(KEY_INSTANCE);
keyStoreInputstream = //GET STREAM
clientStore.load(keyStoreInputstream, caCertCred.toCharArray());
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(clientStore, KEY.toCharArray());
KeyManager[] kms = kmf.getKeyManagers();
trustStoreInputStream = //GET STREAM
KeyStore trustStore = KeyStore.getInstance(TRUST_INSTANCE);
trustStore.load(trustStoreInputStream, caCertCred.toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(trustStore);
TrustManager[] tms = tmf.getTrustManagers();
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(kms, tms, new SecureRandom());
return sslContext;
}