Set up a GraalVM Native Image project for the Amazon SDK for Java - Amazon SDK for Java 2.x
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Set up a GraalVM Native Image project for the Amazon SDK for Java

With versions 2.16.1 and later, the Amazon SDK for Java provides out-of-the-box support for GraalVM Native Image applications. Use the archetype-app-quickstart Maven archetype to set up a project with built-in native image support.


Create a project using the archetype

To create a Maven project with built-in native image support, in a terminal or command prompt window, use the following command.


Replace com.example.mynativeimageapp with the full package namespace of your application. Also replace mynativeimageapp with your project name. This becomes the name of the directory for your project.

mvn archetype:generate \ \ -DarchetypeArtifactId=archetype-app-quickstart \ -DarchetypeVersion=2.16.1 \ -DnativeImage=true \ -DhttpClient=apache-client \ -Dservice=s3 \ -DgroupId=com.example.mynativeimageapp \ -DartifactId=mynativeimageapp \ -DinteractiveMode=false

This command creates a Maven project configured with dependencies for the Amazon SDK for Java, Amazon S3, and the ApacheHttpClient HTTP client. It also includes a dependency for the GraalVM Native Image Maven plugin, so that you can build native images using Maven.

To include dependencies for a different Amazon Web Services, set the value of the -Dservice parameter to the artifact ID of that service. Examples include dynamodb, comprehend, and pinpoint. For a complete list of artifact IDs, see the list of managed dependencies for on Maven Central.

To use an asynchronous HTTP client, set the -DhttpClient parameter to netty-nio-client. To use UrlConnectionHttpClient as the synchronous HTTP client instead of apache-client, set the -DhttpClient parameter to url-connection-client.

Build a native image

After you create the project, run the following command from your project directory, for example, mynativeimageapp:

mvn package -P native-image

This creates a native image application in the target directory, for example, target/mynativeimageapp.