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つあります。

  1. カスタム MethodHandler を作成する

  2. RequestHandler インターフェースを実装する

  3. 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をクリックします。このページには、すでに作成されているラムダ関数リストが表示されます。

これが、ラムダを作成するのに必要なステップです:

  1. 「ブループリントを選択」 を選択してから、「 空白機能」を選択します

  2. 「トリガーを設定する」 (私たちの場合、トリガーはありません

イベント) 。 「機能の設定」:

  • 名前: MethodHandlerLambda を指定してください、

  • 説明:ラムダ関数を説明するものすべて

  • ランタイム: java8 を選択

  • コード入力タイプと機能パッケージ:「** Upload a .ZIP and Jar」を選択します。

「ファイル」 をクリックし、「 アップロード」** ボタンをクリックします。ラムダコードを含むファイルを選択してください。

  • Lambda関数ハンドラとロールの下** :

  • ** ハンドラ名:ラムダ関数ハンドラ名を提供

    __ ** com.baeldung.MethodHandlerLambda

    handleRequest ** __

  • ** ロール名:その他のAWSリソースがラムダ関数で使用されている場合、

その後、既存のロールを作成または使用してアクセスを提供し、ポリシーテンプレートも定義します。

  • [詳細設定]の下:

  • ** メモリ:ラムダ関数が使用するメモリを用意してください。

  • ** タイムアウト:それぞれについてラムダ関数の実行時間を選択します

要求。

  1. すべての入力が終わったら、「 Next」 をクリックしてください.

設定を確認します。

  1. 確認が完了したら、[ 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に掲載]をご覧ください。