.. _section1-spring-cloud-function-introduction-label: Introduction ===================================================== Spring Cloud Functionは、AWS LambdaやAzureFunction、OpenWiskといったServletless環境下における ファンクション・関数において、Spring FrameworkのDIコンテナへの組み込み、コンテナ管理下のBeanを利用するためのプロダクトである。 また、各ベンダ・実行環境に依存しない形でファンクションやビジネスロジックを実装できる。 今回、以下の環境で簡単な動作検証を実施した。 動作環境 ----------------------------------------------------- [OS] MacOSX 10.12.6 [JVM] java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode) [実行環境及び、SDKライブラリバージョン] AWS Lambda * aws-lambda-java-core : 1.1.0 * aws-lambda-java-events : 2.0.2 [Spring] * Spring Framework Boot 1.5.9.RELEASE * Spring Cloud AWS 1.2.2.RELEASE * Spring Cloud Function 1.0.0.M3 事前準備 ------------------------------------------------------- 実際に作成したサンプルは `GitHub `_ を参照のこと。 Mavenプロジェクトは、以下のライブラリを追加しておく。 .. sourcecode:: xml :linenos: org.springframework.cloud spring-cloud-starter-aws ${org.springframework.cloud_spring-cloud-starter-aws_version} org.springframework.cloud spring-cloud-function-adapter-aws ${org.springframework.cloud_spring-cloud-function-adapter-aws_version} org.springframework.cloud spring-cloud-function-web ${org.springframework.cloud_spring-cloud-function-web_version} com.amazonaws aws-lambda-java-events ${com.amazonaws_aws-lambda-java-events_version} com.amazonaws aws-lambda-java-core ${com.amazonaws_aws-lambda-java-core_version} org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-configuration-processor true javax.inject javax.inject ${javax.inject_javax.inject_version} spring-snapshots Spring Snapshots https://repo.spring.io/snapshot true spring-milestones Spring Milestones https://repo.spring.io/milestone false spring-snapshots Spring Snapshots https://repo.spring.io/snapshot true spring-milestones Spring Milestones https://repo.spring.io/milestone false org.apache.maven.plugins maven-deploy-plugin true org.springframework.boot spring-boot-maven-plugin org.springframework.boot.experimental spring-boot-thin-layout ${wrapper.version} org.debugroom.sample.spring.cloud.function.config.App org.apache.maven.plugins maven-shade-plugin false true aws .. note:: AWS Lambdaでは、アップロードしたコードを展開した際のサイズが256MBまでに設定されている。OpenCVなどを使って画像処理をLambda上で行う場合、ライブラリのサイズが巨大になるため、Lambda実行環境にあわせて、適宜必要なライブラリをピックアップして設定すること。 .. sourcecode:: xml org.bytedeco.javacpp-presets opencv ${org.bytedeco.javacpp-presets_opencv_version} linux-x86_64 org.bytedeco.javacpp-presets ffmpeg-platform 3.4.1-1.4 org.bytedeco.javacpp-presets ffmpeg org.bytedeco.javacpp-presets ffmpeg 3.4.1-1.4 linux-x86_64