我正在尝试从lambda访问ssm参数存储。我注意到,当参数是从基于javaawsdk的lambda获取时,与基于nodejsawsdk的lambda获取时,在性能上有很大的不同。
对于基于java的lambda-检索第一个参数大约需要5-10秒
对于基于nodejs的lambda-检索第一个参数大约需要0.5-1秒
基于java的lambda获取参数的示例代码:
import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagement;
import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClientBuilder;
import com.amazonaws.services.simplesystemsmanagement.model.GetParameterRequest;
import com.amazonaws.services.simplesystemsmanagement.model.GetParameterResult;
public class SSMClientUtil {
private static AWSSimpleSystemsManagement ssm = AWSSimpleSystemsManagementClientBuilder.defaultClient();
public static String getParameter(final String parameterName) {
final long startTime = System.currentTimeMillis();
final GetParameterRequest request = new GetParameterRequest();
request.setName(parameterName);
request.setWithDecryption(true);
final GetParameterResult parameterResult = ssm.getParameter(request);
System.out.println("GetParameterResult for parameter: " + parameterName + " Time : " + (System.currentTimeMillis() - startTime) + " -> " + parameterResult);
return parameterResult.getParameter().getValue();
}
}
基于nodejs的lambda获取参数的示例代码:
const AWS_SDK = require("aws-sdk");
ssmClient = new AWS_SDK.SSM();
var parameterPromise = await ssmClient.getParameter(params).promise();
console.log('parameterPromise: ' + JSON.stringify(parameterPromise));
return parameterPromise.Parameter.Value;
是预期行为吗?为什么基于java的lambda检索参数的时间几乎是nodejs的10倍?
虽然在nodejs aws sdk中打包lambda不是必需的,但是对于java来说它是必需的,因为编译时需要它,这使得jar大约为8mb,而nodejs的zip大约为1.4mb
基于以上两点,当需要访问参数存储时,基于nodejs的lambda是否比基于java的lambda好得多?
暂无答案!
目前还没有任何答案,快来回答吧!