AWSとLambda with Java
1前書き
AWS Lambda
は、サーバーの設定、OS、スケーラビリティなどを削減するためにAmazonが提供するサーバーレスコンピューティングサービスですAWSクラウドでコードを実行する方法
これは、AWS Lambda機能をトリガーする、さまざまなAWSリソース上のイベントに応答して実行されます。価格設定は従量制です。つまり、アイドル状態のラムダ関数にお金を払う必要はありません。
このチュートリアルには有効なAWSアカウントが必要です。
ここ
を1つ作成できます。
2 Mavenの依存関係
AWSラムダを有効にするには、プロジェクトに次の依存関係が必要です。
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
</dependency>
この依存関係はhttps://search.maven.org/classic/#search%7Cga%7C1%7Caws-lambda-java-core[Maven repository]にあります。
ラムダアプリケーションをビルドするにはhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22maven-shade-plugin%22[Maven Shade Plugin]も必要です。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
3ハンドラを作成
簡単に言えば、ラムダ関数を呼び出すには、ハンドラを指定する必要があります。ハンドラを作成する方法は3つあります。
-
カスタム
MethodHandler
を作成する -
RequestHandler
インターフェースを実装する -
RequestStreamHandler
インターフェースを実装する
コード例を使用してそれを行う方法を見てみましょう。
3.1. カスタム
MethodHandler
受信リクエストのエントリポイントとなるハンドラメソッドを作成します。入力値としてJSON形式またはプリミティブデータ型を使用できます。
また、オプションの
Context
オブジェクトによって、Lambda実行環境内で利用可能な有用な情報にアクセスすることができます。
public class LambdaMethodHandler {
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return "Hello World - " + input;
}
}
3.2.
RequestHandler
インターフェース
クラスに
RequestHandler
を実装し、リクエストのエントリポイントとなる
handleRequest
メソッドをオーバーライドすることもできます。
public class LambdaRequestHandler
implements RequestHandler<String, String> {
public String handleRequest(String input, Context context) {
context.getLogger().log("Input: " + input);
return "Hello World - " + input;
}
}
この場合、入力は最初の例と同じになります。
3.3.
RequestStreamHandler
インタフェース
クラスに
RequestStreamHandler
を実装し、単に
handleRequest
メソッドをオーバーライドすることもできます。
違いは、
InputStream
、
ObjectStream
、および
Context
オブジェクトがパラメータとして渡されることです。
public class LambdaRequestStreamHandler
implements RequestStreamHandler {
public void handleRequest(InputStream inputStream,
OutputStream outputStream, Context context) {
String input = IOUtils.toString(inputStream, "UTF-8");
outputStream.write(("Hello World - " + input).getBytes());
}
}
4展開ファイルの構築
すべてを設定したら、次のコマンドを実行してデプロイメントファイルを作成できます。
mvn clean package shade:shade
jar
ファイルは
target
フォルダーの下に作成されます。
5管理コンソールからLambda関数を作成する
AWS Amazon
にサインインして、servicesの下にあるLambdaをクリックします。このページには、すでに作成されているラムダ関数リストが表示されます。
これが、ラムダを作成するのに必要なステップです:
-
「ブループリントを選択」
を選択してから、「
空白機能」を選択します
-
「トリガーを設定する」
(私たちの場合、トリガーはありません
イベント)
。
「機能の設定」:
-
名前:
MethodHandlerLambda
を指定してください、 -
説明:ラムダ関数を説明するものすべて
-
ランタイム:
java8
を選択 -
コード入力タイプと機能パッケージ:「** Upload a .ZIP and Jar」を選択します。
「ファイル」
をクリックし、「
アップロード」** ボタンをクリックします。ラムダコードを含むファイルを選択してください。
-
Lambda関数ハンドラとロールの下** :
-
** ハンドラ名:ラムダ関数ハンドラ名を提供
- __ ** com.baeldung.MethodHandlerLambda
-
handleRequest ** __
-
** ロール名:その他のAWSリソースがラムダ関数で使用されている場合、
その後、既存のロールを作成または使用してアクセスを提供し、ポリシーテンプレートも定義します。
-
[詳細設定]の下:
-
** メモリ:ラムダ関数が使用するメモリを用意してください。
-
** タイムアウト:それぞれについてラムダ関数の実行時間を選択します
要求。
-
すべての入力が終わったら、「
Next」
をクリックしてください.
設定を確認します。
-
確認が完了したら、[
Create Function]
をクリックします.
6. 関数を呼び出す
AWSラムダ関数が作成されたら、いくつかのデータを渡してテストします。
-
リストからあなたのラムダ関数をクリックしてから、「
テスト」をクリックしてください
ボタン
** 送信用のダミー値を含むポップアップウィンドウが表示されます。
データ。
“Baeldung”
でデータを上書きします
「
保存してテスト」** ボタンをクリック
画面には、
Execution result
セクションが表示され、正常に返された出力が次のように表示されます。
"Hello World - Baeldung"
7. 結論
このクイックイントロの記事では、Java 8を使用して簡単なAWS Lambdaアプリを作成し、それをAWSにデプロイしてテストしました。
サンプルアプリの完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/aws[Githubに掲載]をご覧ください。