Quantcast
Channel: プログラム の個人的なメモ
Viewing all articles
Browse latest Browse all 860

【AWS】Lambda ~ Java / サーバサイド編 ~

$
0
0

■ はじめに

 * serverlessなのに、サーバサイドって変な感じだけど、Javaでの簡単なサンプルを記す

■ 構文

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;
  }
}


関連記事

【AWS】Lambda ~ 知識編 ~

https://blogs.yahoo.co.jp/dk521123/36806782.html

Viewing all articles
Browse latest Browse all 860

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>