AWS Greengrass - Java 8

AWS Greengrass が東京リージョンで使用できるようになりました。

Greengrass Core を動かす環境としてRaspberry Pi 3 を使います

$ sudo -s
# update-alternatives --install /usr/bin/java8 java8 /usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre/bin/java 0

Greengrass Core にデプロイするLAMBDAが使えるメモリは非常に少ないです。16MB程度にしておくのが良さそうです。

Scala or Java の場合にaws-lambda-java-coreだけだといろいろなクラスが見つからないという例外が発生します。

aws-lambda-java-coreだけで、AWSコンソール上でテスト実行できたものをGreengrass Coreで動かすと、jacksonのクラスが見つからないというエラーが発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException

そこでjackson-databindを依存に加えてみます。すると今度はApache HTTPClientのクラスが見つからないというエラーが発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpEntity

AWSのドキュメントを注意深く読むとaws-java-sdk-greengrassを取り込む必要があるという記述にたどりつきようやく解決しました。