■ 構文
http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-programming-model-handler-types.htmlより 【出力型】 【関数名】(【入力型】 input, Context context) { ... }
■ 手順
[1] Eclipse / Maven を使用したパッケージの作成
[1-1] Eclipseを起動して、[File]-[New]-[Other]-[Maven]-[Maven Project] を選択 [1-2] [New Maven Project] ウィンドウで、[Create a simple project] を選択 (その他はデフォルトのまま)し、「Next」ボタン押下 [1-3] [New Maven Project] の [Configure project] ウィンドウで、 以下を入力し、「Finish」ボタン押下し、プロジェクト作成 ~~~~~ 1-3-1) Group Id: aws-demo 1-3-2) Artifact Id: AwsLambdaDemo (プロジェクト名になる) 1-3-3) Version: 0.0.1-SNAPSHOT 1-3-4) Packaging: jar 1-3-5) Name: AwsLambdaDemo 1-3-6) Description : Demo ~~~~~
[2] コード作成/ビルド/JAR作成
[2-1] プロジェクト「AwsLambdaDemo」配下にある「pom.xml」をエディタで開き 以下の「サンプル」の「pom.xml」を参考に記入し、保存する [2-2] 「pom.xml」を右クリックし、[Run As...]-[5 Maven install]を選択 => 「[INFO] BUILD SUCCESS」出たらOK [2-3] プロジェクト「AwsLambdaDemo」配下にある「src/main/java」を右クリックし、 [New]-[Class]で、以下の3つのクラスを作成する (ソースコードの内容は、以下の「サンプル」の「Javaコード」配下を参考) ~~~~~ 2-3-1) com.demo.Main.java 2-3-2) com.demo.Request.java 2-3-3) com.demo.Response.java ~~~~~ [2-4] 「pom.xml」を右クリックし、[Run As...]-[1 Maven build]を選択 => 「[INFO] BUILD SUCCESS」出たらOK => 「[INFO] Replacing C:\【Workspace】\AwsLambdaDemo\target\AwsLambdaDemo-0.0.1-SNAPSHOT.jar ・・・」とあるので 「AwsLambdaDemo-0.0.1-SNAPSHOT.jar」をコピーする(これをアップする)
[3] Lambdaファンクションを登録
http://engineer.recruit-lifestyle.co.jp/techblog/2016-11-22-serverless-architecture-lambda/''' が参考になる
[3-1] AWS にログインし、[Lambda]-[Create a Lambda Function]を選択し、以下を入力する ~~~~~ 3-1-0) API Gateway 3-1-1) API name : 任意の名前(例「AwsLambdaDemo」) 3-1-2) Security : Open ~~~~~ [3-2] 以下を入力する ~~~~~ 3-2-1) Runtime : Java8 3-2-2) Handler : com.demo.Main::execute (「パッケージ.クラス名::メソッド」で指定) ~~~~~
[4] テスト
[4-1] [Actions]-[Edit/Test]を選択 [4-2] 入力欄に以下を入力し、「テスト」を選択 ~~~~~ { "greeting": "Hello","name": "Tom" }~~~~~ 以下が返ってくればOK ~~~~~ {"result"="Hello, Tom"}~~~~~
■ サンプル
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>aws-demo</groupId><artifactId>AwsLambdaDemo</artifactId><version>0.0.1-SNAPSHOT</version><name>AwsLambdaDemo</name><description>Demo</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>com.amazonaws</groupId><artifactId>aws-lambda-java-core</artifactId><version>1.1.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>2.3</version><configuration><createDependencyReducedPom>false</createDependencyReducedPom></configuration><executions><execution><phase>package</phase><goals><goal>shade</goal></goals></execution></executions></plugin></plugins></build></project>
Javaコード
com.demo.Main.java (Lambda 関数ハンドラー)package com.demo; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.LambdaLogger; public class Main { public Response execute(Request request, Context context) { LambdaLogger lambdaLogger = context.getLogger(); lambdaLogger.log("Greeting = " + request.getGreeting()); lambdaLogger.log("Name = " + request.getName()); return new Response(request.getGreeting() + ", " + request.getName()); } }com.demo.Request.java
package com.demo; public class Request { private String greeting; private String name; public Request() { this.greeting = ""; this.name = ""; } public Request(String greeting, String name) { this.greeting = greeting; this.name = name; } public String getGreeting() { return this.greeting; } public void setGreeting(String greeting) { this.greeting = greeting; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } }com.demo.Response.java
package com.demo; public class Response { private String result; public Response() { this.result = ""; } public Response(String result) { this.result = result; } public String getResult() { return this.result; } public void setResult(String result) { this.result = result; } }
参考文献
公式サイト
* パッケージの作り方の参考になるhttp://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-create-jar-pkg-maven-and-eclipse.html
* Lambda 関数ハンドラーhttp://docs.aws.amazon.com/ja_jp/lambda/latest/dg/java-programming-model-handler-types.html
一般サイト
http://qiita.com/Keisuke69/items/fc39a2f464d14480a432http://yamada.daiji.ro/blog/?p=271
環境変数
http://qiita.com/ukey-ino/items/719fab82f2d570b28a58