Performance issues while accessing parameter store from lambda using Java AWS SDK Vs NodeJS AWS SDK

Viewed 937

I am trying to access SSM parameter store from lambda. I have noticed major difference in performance when parameter is fetched from lambda based on Java AWS SDK Vs lambda based on NodeJS AWS SDK.

  • For java based lambda - to retrieve first parameter it takes around 5-10 seconds
  • For NodeJS based lambda - to retrieve first parameter it takes around 0.5-1 seconds

Sample code for java based lambda to fetch parameter:

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();
    }

}

Sample code for NodeJS based lambda to fetch parameter:

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;
  1. Is it expected behavior? Why java based lambda takes almost 10 times more time than NodeJS to retrieve parameter?
  2. While packaging lambda in NodeJS AWS SDK is not required, but for Java it's mandatory as it's required at compile time, which makes jar ~8 MB, whereas zip for NodeJs ~1.4 MB
  3. Based on above 2 points, is it safe to conclude that NodeJS based lambda is much better than java based lambda when need to access parameter store?
0 Answers
Related