aws-lambdaaws-lambdaの使い方


備考

AWS Lambdaは、クラウドで機能を実行するためのサーバーレス設定です。既存のAmazon Web Servicesテクノロジを活用して、必要な場合にのみ、独自の独立した環境で無限に拡張および実行できます。ラムダを使用すると、コードをアップロードし、さまざまなトリガに基づいて実行するように設定し、完了したらプロセスを自動的に廃止することができます。これは、ペイ・パー・ユース・モデルで動作し、非常に費用効果が高く、拡張が容易です。


AWS Lambdaは、Node.js(JavaScript)、Python、Java(Java 8互換)およびC#(.NET Core)で書かれたコードをサポートしています。あなたのコードには、既存のライブラリも含まれています。

トリガには次のものがあります。

HTTPエンドポイント

  • モバイルアプリ
  • 他のAWSサービス(Amazon APIゲートウェイでのREST実装を含む)

Lambdaは、以下のようなリアルタイムのサーバーレスデータ処理用に設計されています。

  • アップロードのファイル処理
    • トランスコード
    • インデックス作成
    • 検証
    • サイズ変更とフィルタリング
  • ストリーミングデータ分析
  • テレメトリー
  • メソッドベースのモバイルおよびWebバックエンドとして実行
  • 他のAWS製品の拡張とリンク

インストールまたはセットアップ

  1. AWS Consoleにログインし、[ サービス ]タブの[ ラムダ ]をクリックします。

  2. 関数では、同じラベルのボタンを使ってラムダ関数作成することができます。 ここに画像の説明を入力

  3. 青写真を選択できる画面が表示されます。これらは、ラムダをすぐに使い始めるための既存のラムダ関数の出発点にすぎません。 ここに画像の説明を入力

  4. 次の画面では、このラムダ機能をオフにするために使用するトリガーを設定できます。トリガなし(タスクに応じて後で手動で設定)、APIゲートウェイ(サーバーレスのRESTクライアントを作成する)、Alexaスキル、または作成する機能を起動する他の多くのツールから選択できます。 ここに画像の説明を入力

  5. 名前説明ランタイムを選択したり、インラインで機能を編集したり、.zipファイルをアップロードしたり、Amazon S3からファイルをアップロードしたり、 ロールを選択したりすることで、次の画面で設定を完了します(パーミッションベースAWSサービス間の相互作用)、メモリと制限を設定し、ライブで使用できるようにアプリを準備します。 ここに画像の説明を入力 ここに画像の説明を入力

  6. 最後に、あなたの機能を見直して作成します。 LambdaはPay-Per-Useモデルを利用しているので、新しく作成した関数を使用するまでチャージャーは発生しません。 ここに画像の説明を入力

Java AWS-Lambda S3トリガー

AWS-Lambda関数は、特定のバケットイベントにアタッチすることができます。ファイル/フォルダが作成または削除されるたびに、イベントによってラムダ関数の実行がトリガされます。

アップロードされたファイルの名前を出力する単純なラムダ関数

これは、アップロードされたファイルの名前を出力する1つのクラスのラムダプロジェクトです。これらの依存関係を追加する必要があります。

    <dependencies>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-core</artifactId>
        <version>1.1.0</version>
        <type>jar</type>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-lambda-java-events</artifactId>
        <version>1.3.0</version>
        <type>jar</type>
    </dependency>
</dependencies>
 

さあ、HelloWorldクラスに行きましょう:

package com;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.event.S3EventNotification;

public class HelloWorld implements RequestHandler< S3Event, String> {
    @Override
    public String handleRequest(S3Event event, Context ctx) {
     S3EventNotification.S3EventNotificationRecord record=event.getRecords().get(0);
     System.out.println("Bucket Name is "+record.getS3().getBucket().getName());
     System.out.println("File Path is "+record.getS3().getObject().getKey());
     return null;
    }
}
 

次のステップは、mvnを使用してプロジェクトをビルドすることです。

プロジェクトをビルドした後、AWS-Lambdaにアップロードする必要があります。ラムダに行き、「ラムダ関数を作成」を選択します。 Javaが通常そこにないので、青写真を選択する部分をスキップしてください。

また、別の場所から設定するため、「トリガーの設定」をスキップしてください。次のページでは、最初のラムダ関数の名前を入力し、次に小さな説明を入力し、実行時にJavaを選択します。

「コード入力タイプ」で「ZIPファイルからアップロード」を選択し、次の場所で.zipファイルを選択してアップロードします。

このページの手の込んだ部分はHandlerフィールドです。ハンドラフィールドでは、RequestHandlerを実装するクラスの場所を指定する必要があります。このクラスはラムダのエントリポイントであり、ラムダ関数は正しく指定されていないと動作しません。ケースハンドラは "com.HelloWorld"です。

ラムダにS3トリガーを付ける:

ここでは、S3ファイルのアップロードにトリガーを添付します

  • S3に進み、バケットを選択してから[プロパティ]を選択します。
  • [プロパティ]セクションで、[イベント]に移動します。
  • イベントの詳細を追加します。 [イベント]フィールドで、ラムダのトリガー方法を選択します。 "ObjectCreated(All)"を選択します。ラムダ関数とバケットは同じアマゾン領域にある必要があることに注意してください
  • "Sends to"には、Lambda Functionをチェックし、リストからラムダ関数を選択します。

ラムダ出力の監視

ここで、ラムダトリガを持つファイルをバケットにアップロードします。ラムダ出力とログを見るには、 "CloudWatch"に行き、 "Logs"を選んでラムダ関数を選んでください。 「ログストリーム」の下に多数のエントリが表示され、最新のものを選択して開くことができます。そこにラムダ実行の出力を見ることができるはずです。