JavaでDynamoDBを使用するAWS Lambda

DynamoDBとJavaを使用するAWS Lambda

1. 前書き

AWS LambdaはAmazon Web Servicesが提供するサーバーレスコンピューティングサービスであり、WS DynamoDBは同じくAmazonが提供するNoSQLデータベースサービスです。

興味深いことに、DynamoDBはドキュメントストアとキーバリューストアの両方をサポートし、AWSによって完全に管理されます。

始める前に、このチュートリアルには有効なAWSアカウントが必要であることに注意してください(1つのhereを作成できます)。 また、最初にAWS Lambda with Javaの記事を読むことをお勧めします。

2. Mavenの依存関係

ラムダを有効にするには、Maven Centralにある次の依存関係が必要です。


    com.amazonaws
    aws-lambda-java-core
    1.1.0

さまざまなAWSリソースを使用するには、次の依存関係が必要です。これは、Maven Centralにもあります。


    com.amazonaws
    aws-lambda-java-events
    1.3.0

そして、アプリケーションを構築するために、Maven Shade Pluginを使用します。


    org.apache.maven.plugins
    maven-shade-plugin
    3.0.0
    
        false
    
    
        
            package
            
                shade
            
        
    

3. ラムダコード

ラムダアプリケーションでハンドラーを作成する方法はいくつかあります。

  • MethodHandler

  • RequestHandler

  • RequestStreamHandler

アプリケーションではRequestHandlerインターフェースを使用します。 JSON形式のPersonRequestを受け入れ、応答はJSON形式のPersonResponseになります:

public class PersonRequest {
    private String firstName;
    private String lastName;

    // standard getters and setters
}
public class PersonResponse {
    private String message;

    // standard getters and setters
}

次は、RequestHandlerインターフェイスを次のように実装するエントリポイントクラスです。

public class SavePersonHandler
  implements RequestHandler {

    private DynamoDB dynamoDb;
    private String DYNAMODB_TABLE_NAME = "Person";
    private Regions REGION = Regions.US_WEST_2;

    public PersonResponse handleRequest(
      PersonRequest personRequest, Context context) {

        this.initDynamoDbClient();

        persistData(personRequest);

        PersonResponse personResponse = new PersonResponse();
        personResponse.setMessage("Saved Successfully!!!");
        return personResponse;
    }

    private PutItemOutcome persistData(PersonRequest personRequest)
      throws ConditionalCheckFailedException {
        return this.dynamoDb.getTable(DYNAMODB_TABLE_NAME)
          .putItem(
            new PutItemSpec().withItem(new Item()
              .withString("firstName", personRequest.getFirstName())
              .withString("lastName", personRequest.getLastName());
    }

    private void initDynamoDbClient() {
        AmazonDynamoDBClient client = new AmazonDynamoDBClient();
        client.setRegion(Region.getRegion(REGION));
        this.dynamoDb = new DynamoDB(client);
    }
}

ここで、RequestHandlerインターフェースを実装するときは、要求を実際に処理するためにhandleRequest()を実装する必要があります。 残りのコードについては、次のとおりです。

  • PersonRequestオブジェクト–JSON形式で渡されたリクエスト値が含まれます

  • Contextオブジェクト–ラムダ実行環境から情報を取得するために使用されます

  • ラムダリクエストのレスポンスオブジェクトであるPersonResponse –

DynamoDBオブジェクトを作成するときは、最初にAmazonDynamoDBClientオブジェクトを作成し、それを使用してDynamoDBオブジェクトを作成します。 regionは必須であることに注意してください。

DynamoDBテーブルにアイテムを追加するには、列の数とその値を指定することにより、PutItemSpecオブジェクトを利用します。

DynamoDBテーブルに事前定義されたスキーマは必要ありません。主キーの列名を定義する必要があります。この場合は“id”です。

4. デプロイメントファイルの構築

ラムダアプリケーションをビルドするには、次のMavenコマンドを実行する必要があります。

mvn clean package shade:shade

Lambdaアプリケーションはコンパイルされ、ターゲットフォルダーの下のjarファイルにパッケージ化されます。

5. DynamoDBテーブルの作成

次の手順に従って、DynamoDBテーブルを作成します。

  • AWS Accountにログイン

  • “All Services”の下にある“DynamoDB”をクリックします

  • このページには、すでに作成されているDynamoDBテーブルが表示されます(存在する場合)

  • “Create Table”ボタンをクリックします

  • “Table name”および“Primary Key”にそのデータ型を“Number”として指定します

  • “Create”ボタンをクリックします

  • テーブルが作成されます

6. ラムダ関数の作成

次の手順に従って、Lambda関数を作成します。

  • AWS Accountにログイン

  • “All Services”の下にある“Lambda”をクリックします

  • このページには、すでに作成されているラムダ関数(存在する場合)が表示されるか、ラムダ関数が作成されていない場合は、“Get Started Now”をクリックします。

  • “Select blueprint”→「Blank Function”」を選択

  • “Configure triggers”“Next”ボタンをクリックします

  • 「機能の構成」

    • “Name”:SavePerson

    • “Description”:個人をDDBに保存

    • “Runtime”“Java 8”を選択します

    • “Upload”“Upload”ボタンをクリックして、ラムダアプリケーションのjarファイルを選択します

  • “Handler”:com.example.lambda.dynamodb.SavePersonH​​andler

  • “Role”“Create a custom role”を選択します

  • 新しいウィンドウが表示され、ラムダ実行用にIAMロールを構成できるようになります。その中にDynamoDBの許可を追加する必要があります。 完了したら、“Allow”ボタンをクリックします

  • “Next”ボタンをクリックします

  • “Review”:構成を確認します

  • “Create function”ボタンをクリックします

7. ラムダ関数のテスト

次のステップでは、ラムダ関数をテストします。

  • “Test”ボタンをクリックします

  • “Input test event”ウィンドウが表示されます。 ここでは、リクエストのJSON入力を提供します。

{
  "id": 1,
  "firstName": "John",
  "lastName": "Doe",
  "age": 30,
  "address": "United States"
}
  • “Save and test”または“Save”ボタンをクリックします

  • 出力は“Execution result”セクションで見ることができます:

{
  "message": "Saved Successfully!!!"
}
  • また、レコードが保持されていることをDynamoDBでチェックする必要があります。

    • “DynamoDB” Management Consoleに移動します

    • テーブル“Person”を選択します

    • “Items”タブを選択します

    • ここでは、ラムダアプリケーションへのリクエストで渡された人の詳細を確認できます

  • したがって、リクエストはラムダアプリケーションによって正常に処理されます

8. 結論

この簡単な記事では、DynamoDBとJava 8を使用してLambdaアプリケーションを作成する方法を学びました。 詳細な手順は、すべてをセットアップする上で有利なスタートを切るはずです。

そして、いつものように、サンプルアプリの完全なソースコードはover on Githubにあります。