According to the resolution provided on 18 May for aws lambda java libs to aws sdk java v2
aws-lambda-java-events version 3.0.0 was just released with support for all events (including S3) without the inclusion of SDK v1 dependencies.
This should help you make use of the AWS SDK for Java v2 and reduce your function package size as the v1 SDK does not need to be bundled anymore if it's not explicitly needed.
Source code is here
Answer from Mohan Radhakrishnan on Stack Overflowjava - What's the AWS SDK V2 class for Lambda S3Event? - Stack Overflow
java - What's the AWS SDK V2 Maven lib for Lambda? - Stack Overflow
Reusable Lambda for Multiple Event Types (Java)
In what scenario does using Java in Lambda make sense?
Videos
It seems like you still have to have both SDK v1 and SDK v2 on your classpath.
For example, looking at the Lambda Java documentation you can see that all imports still start with com.amazonaws (SDK v1) and not software.amazon (SDK v2).
One of the examples they list there is blank-java which they describe as "A Java function with the events library, advanced logging configuration, and the AWS SDK for Java 2.x that calls the Lambda API to retrieve account settings"
If you look at that sample application's pom.xml you'll see com.amazonaws and software.amazon packages mixed together.
Similarly for the Lambda handler.
So either they haven't ported everything to SDK v2, or they still want you to use the interfaces from SDK v1 - and then more functional code (non interface code) can be used from SDK v2.
Similar to this answer, you don't have to import all of SDKv1 into your project and should continue to import just aws-lambda-java-core (in addition to SDKv2). It contains a subset of the classes sufficient for implementing an entry point, with the same fully-qualified names as in v1.
In addition, if you need event interfaces like S3Event you can pull in aws-lambda-java-events.