Skip to content

greach/greachconfbot

Repository files navigation

Micronaut + GraalVM Native + AWS Lambda Custom Runtime

This example demonstrates how to use Micronaut AWS API Gateway Proxy support and GraalVM to construct a custom runtime that runs native images or Lambda.

The Dockerfile contains the build to build the native image and it can be built with:

$ docker build . -t greachconf-telegrambot
$ mkdir -p build
$ docker run --rm --entrypoint cat greachconf-telegrambot  /home/application/function.zip > build/function.zip

Which will add the function deployment ZIP file to build/function.zip. You can run function locally using SAM

$ docker build . -t greachconf-telegrambot
$ ./sam-local.sh
$ curl http://localhost:3000/ping

Or you can deploy it to AWS via the console or CLI:

aws lambda create-function --function-name greachconf-telegrambot \
--zip-file fileb://build/function.zip --handler function.handler --runtime provided \
--role ARN_OF_LAMBDA_ROLE

To create role for AWS Lambda, use following code:

The function can be invoked by sending an API Gateway Proxy request. For example:

aws lambda invoke --function-name greachconf-telegrambot --payload '{"resource": "/{proxy+}", "path": "/ping", "httpMethod": "GET"}' build/response.txt
cat build/response.txt

and response should be something like:

{"statusCode":200,"multiValueHeaders":{},"body":"{\"pong\":true, \"graal\": true}","isBase64Encoded":false}

Example controller responding with /ping are included in template.

You should replace the /ping path entry with the URI the controller endpoint you wish to invoke.

About

Telegram bot for Greach conference

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published