AWS Lambda integrate with AWS RDS using Java but facing Error loading class software/amazon/awssdk/auth/credentials/AwsCredentialsProvider

Viewed 404

This is my code which uploaded in aws lambda using java. I have made a jar using mvn clean package and uploaded to lambda function service but getting error java.lang.NoClassDefFoundError: software/amazon/awssdk/auth/credentials/AwsCredentialsProvider

Please help me out.


import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
import software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider;
import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rdsdata.RdsDataClient;
import software.amazon.awssdk.services.rdsdata.model.ExecuteStatementRequest;
import software.amazon.awssdk.services.rdsdata.model.ExecuteStatementResponse;

import java.util.Collections;

public class LambdaJavaAPI implements RequestHandler<APIGatewayProxyRequestEvent, Object> {

    public static final String AURORA_CLUSTER_ARN_ENV = "cluster key";
    public static final String DATABASE_NAME_ENV = "mylab";
    public static final String AURORA_SECRET_ARN_ENV = "security manager key";

    /**
     * @return an instance of RdsClient
     */
    public static RdsDataClient rdsClient() {
        Region region = Region.US_EAST_1;
        return RdsDataClient.builder()
                .credentialsProvider(EnvironmentVariableCredentialsProvider.create())
                .region(region)
                .httpClientBuilder(UrlConnectionHttpClient.builder()).build();
    }

    @Override
    public APIGatewayProxyResponseEvent handleRequest(APIGatewayProxyRequestEvent input, Context context) {
        String responseBody = "Test Event";
        final RdsDataClient rdsDataClient = new LambdaJavaAPI().rdsClient();

        ExecuteStatementRequest request = ExecuteStatementRequest.builder()
                .database(DATABASE_NAME_ENV)
                .resourceArn(AURORA_CLUSTER_ARN_ENV)
                .secretArn(AURORA_SECRET_ARN_ENV)
                .sql(String.format("select name from users",DATABASE_NAME_ENV))
                .build();
        ExecuteStatementResponse executeStatementResponse = rdsDataClient.executeStatement(request);
        if (executeStatementResponse.hasRecords()) {

        }

        return new APIGatewayProxyResponseEvent().withStatusCode(200)
                .withIsBase64Encoded(Boolean.FALSE)
                .withHeaders(Collections.emptyMap())
                .withBody(responseBody);
    }
}
2 Answers
Related