Introduction
This example shows GraaalVM native spring-cloud-function application. The application itself is very simple and contains two functions - uppercase & lowercase.
Unless specific value is specified as handler, the application will fall back on RoutingFunction where you can pass the routing instruction
via spring.cloud.function.definition Message header. If using API Gateway you can pass such header as HTTP header.
To run
If you are on OSX Apple M1 Pro (arch64)
You first need to build a Docker image where you will actually build project. To do that execute the following command form [project directory
docker build -t "al2-graalvm19:native-uppercase" .
Start the container
docker run -dit -v `pwd`:`pwd` -w `pwd` -v ~/.m2:/root/.m2 al2-graalvm19:native-uppercase
Now navigate to the image terminal. Your working directory is alredy set for the root of the project. You can verify it by executing ls.
Build the project:
./mvnw clean -Pnative native:compile -DskipTests
Once the build finishes, you can deploy it.
Deploying to AWS LAmbda
Start AWS Dashboard and navigate to AWS Lambda Services
Click on Create Function. Enter uppercase for function name. For the runtime select Provide your own bootstrap on Amazon Linux 2.
Make sure you select the proper architecture (x86_64 or arm64).
Click on Create Function again.
Next you need to upload your project, so click on Upload From and point to the ZIP file that was created by the build process (in the target directory).
Once the file is uploaded navigate to the Test tab. You can change the input data or use the default. Basically you need to pas a String in a JSON format such as "hello" and you should see the output "HELLO".